QUALIFY句は、ウィンドウ関数の結果に基づいて行をフィルタリングする時に利用します。
従来のWHERE句だと指定できませんでしたが、QUALIFY句を利用すればウィンドウ関数によって生成された新しい列を指定できるところが大きなポイントです。
以下はコード例
## product単位で平均価格を算出した上で、平均価格が500以上のもののみ抽出するクエリ例 SELECT product, AVG(price) AS avgPrice FROM dataset.table GROUP BY 1 QUALIFY avgPrice >= 500
## userId単位でcreatedAtの連番を付与して、2番目の登録情報を取得するクエリ例 SELECT userId, createdAt, ROW_NUMBER() OVER (PARTITION BY userId ORDER BY createdAt) AS rownum FROM dataset.table QUALIFY rownum = 2
qualifyを利用しなければ、with句を使うか、服問い合わせで階層化してからwhere句に条件追加してましたが、その手間がなくなり、コード量も減らせるのがありがたい感じです。