BigQuery 错误:遇到““OVER”“OVER”“
Posted
技术标签:
【中文标题】BigQuery 错误:遇到““OVER”“OVER”“【英文标题】:BigQuery Error: Encountered " "OVER" "OVER "" 【发布时间】:2014-09-15 06:55:49 【问题描述】:我尝试在BigQuery
控制台中执行此sql
语句,但出现如下错误。
任何人都可以就此提出建议吗?
"Error: Encountered " "OVER" "OVER "" at line 5, column 99. Was expecting: "END" ..."
SELECT *
FROM (SELECT
*
, CASE
WHEN initiator in ('01_User') THEN RANK() OVER (PARTITION BY item_id, log_date_desc, type ORDER BY log_date_desc DESC)
ELSE RANK() OVER (PARTITION BY item_id, log_date_desc ORDER BY log_date_desc DESC)
END AS ord
FROM temp.step1_itemlogall
) AS t
WHERE ord = 1
谢谢。
【问题讨论】:
【参考方案1】:我认为问题在于将分析函数放在 CASE 语句中。您可以将其重写为计算这两个函数的内部选择,然后在外部查询中选择正确的一个。例如:
SELECT *
FROM (
SELECT
CASE WHEN initiator IN ('01_User')
THEN ord1
ELSE ord2
END AS ord
FROM (
SELECT *,
RANK() OVER (PARTITION BY item_id, log_date_desc, type
ORDER BY log_date_desc DESC) as ord1,
RANK() OVER (PARTITION BY item_id, log_date_desc
ORDER BY log_date_desc DESC) as ord2
FROM temp.step1_itemlogall))
WHERE ord = 1
我认为该错误消息的真正解释在这里,但是:https://www.youtube.com/watch?v=2OBZf0QdKdE
【讨论】:
【参考方案2】:在 UI 或 API 调用中切换到 STANDARD SQL,只有旧版 SQL 引擎会抛出此错误。
【讨论】:
以上是关于BigQuery 错误:遇到““OVER”“OVER”“的主要内容,如果未能解决你的问题,请参考以下文章
在 SMOTE imblearn.over_sampling 中遇到 ValueEerror
BigQuery 缺少 SUM OVER PARTITION BY 的行