【发布时间】:2021-04-27 19:50:26
【问题描述】:
我在 Python 仪表板上有一个查询(使用 Plotly/Dash),它允许用户设置一些变量并更新 BigQuery 中的表。
我在处理包含一些 CASE 语句并使用 LAG() 的查询时遇到问题。
我写了以下查询:
DECLARE cpi STRING DEFAULT "{cpi}";
UPDATE `table` SET
PAY_FT = CASE
WHEN RN = 1 AND cpi = "S" AND PAY_SHALE_COR = "PAY" THEN 1
WHEN RN = 1 AND cpi = "C" AND PAY_CLEAN = "PAY" THEN 1
WHEN RN = 1 THEN 0
WHEN RN > 1 AND cpi = "S" AND PAY_SHALE_COR = "PAY" THEN 0.2 + (LAG(PAY_FT, 1, 0) OVER(ORDER BY DEPTH_M))
WHEN RN > 1 AND cpi = "S" AND PAY_SHALE_COR = "PAY" THEN 0.2 + (LAG(PAY_FT, 1, 0) OVER(ORDER BY DEPTH_M))
ELSE (LAG(PAY_FT, 1, 0) OVER(ORDER BY DEPTH_M))
END
WHERE DEPTH_M IS NOT NULL
但我收到以下错误:“UPDATE 子句中不允许分析函数...”。
我研究了一下,是LAG函数导致的,它使用了de OVER子句。
我的数据集上有一个名为 RN 的列,但如果有帮助,它可以使用 row_number() 函数。
我不知道该怎么做。
有人可以帮忙吗?提前致谢!
【问题讨论】:
标签: sql google-bigquery