Bigquery 无法存储 ntile window 函数

Biquery cannot bucket ntile window function

查询是:

SELECT 
  user_id,
  session_cnt,
  NTILE(8) OVER (PARTITION BY user_id ORDER BY session_cnt DESC) ntile,
FROM (
  SELECT
    user_id,
    COUNT(*) AS session_cnt,
  FROM
    [my_ds.my_table]
  WHERE
    event = 'pageview'
    AND DATEDIFF(CURRENT_TIMESTAMP(), event_date) <= 30
  GROUP BY
    user_id
)
ORDER BY ntile desc, session_cnt desc

所有行的 ntile 值为 1。为什么会这样?

你的 sub-query returns 每 user_id 一行!
您的外部 select 尝试存储由 user_id 分区的所有行,但每个 user_id 只有一行,因此只生成一个存储桶