【BigQuery】window関数とセットで使えるQUALIFY句

window関数とセットで使えるQUALIFY句

RANK()関数やROW_NUMBER()関数を使用する際、WHERE句に使用できないのを不便に感じていました。

しかしQUALIFY句を使えば絞り込めるということがわかったので、紹介します!

公式サイト:https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#qualify_clause

今までの私の書き方

WITH events AS (
  SELECT
    sync_date
    , category
    , revenue
    , RANK() OVER (PARTITION BY sync_date ORDER BY revenue DESC) AS num
  FROM
    test_table
)
SELECT
  * EXCEPT(num)
FROM
  events
WHERE
  num <= 3

QUALIFY句を使用した書き方①

SELECT
  sync_date
  , category
  , revenue
  , RANK() OVER (PARTITION BY sync_date ORDER BY revenue DESC) AS num
FROM
  test_table
QUALIFY
  num <= 3

QUALIFY句を使用した書き方②

出力結果に順位が必要なければ、さらに下記のように書き換え可能です。

SELECT
  sync_date
  , category
  , revenue
FROM
  test_table
QUALIFY
  RANK() OVER (PARTITION BY sync_date ORDER BY revenue DESC) <= 3
よかったらシェアしてね!
  • URLをコピーしました!
目次