【发布时间】:2021-12-18 01:42:37
【问题描述】:
我目前有这个source table。
我正在尝试在 GCP BigQuery 上的 SQL 中从第一个表中获取 this second table。
我的查询如下:
SELECT
SE.MARKET_ID,
SE.LOCAL_POS_ID,
SE.BC_ID,
LEFT(SE.SALE_CREATION_DATE,6) AS DATE_ID_MONTH,
COUNT(DISTINCT
CASE
WHEN FLAG
THEN SE.CUST_ID
END)
OVER (PARTITION BY SE.MARKET_ID, SE.LOCAL_POS_ID, SE.BC_ID, LEFT(SE.SALE_CREATION_DATE,4) ORDER BY LEFT(SE.SALE_CREATION_DATE,6)) AS NB_ACTIVE_CUSTOMERS
FROM
SE
GROUP BY
SE.MARKET_ID, SE.LOCAL_POS_ID, SE.BC_ID, LEFT(SE.SALE_CREATION_DATE,6)
但是,我收到了这个我没有成功绕过的错误:
Window ORDER BY is not allowed if DISTINCT is specified at [12:107]
我无法使用以下请求创建以前的表:
SELECT DISTINCT
SE.MARKET_ID,
SE.LOCAL_POS_ID,
SE.BC_ID,
LEFT(SE.SALE_CREATION_DATE,6) AS DATE_ID_MONTH,
CASE
WHEN FLAG
THEN SE.CUST_ID
ELSE NULL
END AS VALID_CUST_ID
FROM
SE
为了在那之后使用dense_rank(),因为我有50个其他指标(和500M行)要添加到这个表(基于其他标志的指标),我显然不能为每个指标创建一个WITH,我只需要在几个 WITH 或 none 中使用它(就像我当前的查询应该做的那样)。
请问有人知道我该如何处理吗?
【问题讨论】:
-
是的,
COUNT(DISTINCT <expr>)不是窗口函数;COUNT(<expr>)是 -
错误很明显 -
Window ORDER BY is not allowed if DISTINCT is specified!因此,您应该通过输入数据、预期输出和清晰逻辑的示例来围绕您想要实现的目标提出问题 -
请看我在主题中的超链接:)
标签: sql google-bigquery partitioning rolling-computation