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 中的分析函数问题

错误:无法识别的名称:Google BigQuery

BigQuery 缺少 SUM OVER PARTITION BY 的行

优化 sum() over(order by...) 子句抛出“超出资源”错误

常用开窗函数