ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

QUALIFY 窗口过滤 - --

QUALIFY 窗口过滤 - --

传统方式(使用CTE):

sql
WITH ranked_data AS (SELECT user_id,ip,country_code,os,RANK() OVER (PARTITION BY user_id ORDER BY log_datetime DESC) AS previous_loginsFROM login_logs
)
SELECT user_id, ip, country_code, os
FROM ranked_data
WHERE previous_logins = 1;

使用 QUALIFY 的方式:

sql
SELECT user_id,ip, country_code,os,RANK() OVER (PARTITION BY user_id ORDER BY log_datetime DESC) AS previous_logins
FROM login_logs
QUALIFY previous_logins = 1;

 

可以看到,使用 QUALIFY 减少了代码行数,避免了额外的嵌套层级,查询意图更加直观。需要注意的是,QUALIFY 主要带来的是代码简洁性和可读性的提升,在性能上可能不会有显著改善。

支持版本: Spark 3.2.0 及以上

 阿里云maxcompute sql也支持
返回列表