Joe*_*ood 3 group-by google-bigquery
在 BigQuery 中,为什么我收到一条错误消息:Column x contains an analytic function, which is not allowed in GROUP BY?
在这种情况下, UserId 是 STRING 类型,而 date 是 DATE 类型。下面的示例代码 find 旨在找出在给定的天数内看到了多少用户。例如,我们在 14 天的时间段中的 11 天看到了 10 个用户。
可重现的代码:
SELECT
COUNT(UserId) AS Users,
Days
FROM (
SELECT
DISTINCT gmt_via_cust_var_8 AS UserId,
COUNT(date) OVER (PARTITION BY gmt_via_cust_var_8) AS Days
FROM
`pchmediadev.Joey.mini_impressions`
GROUP BY
Days
)
Run Code Online (Sandbox Code Playgroud)
问题是GROUP BY正在应用于其值将由窗口函数确定的变量。这类似于按聚合函数分组的问题。
此问题的解决方案是将 移动GROUP BY到外部查询。外部查询可以进行所需的分组。
请参阅下面的示例:
SELECT
COUNT(UserId) AS Users,
Days
FROM (
SELECT
DISTINCT gmt_via_cust_var_8 AS UserId,
COUNT(date) OVER (PARTITION BY gmt_via_cust_var_8) AS Days
FROM
`pchmediadev.Joey.mini_impressions`
)
GROUP BY
Days
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3050 次 |
| 最近记录: |