我一直在尝试根据LAG或LEAD函数的结果进行计算。
在INTEGER()转换函数中封装函数似乎会导致OVER函数出现问题并引发以下错误:
无法识别的分析函数:INT64不能与OVER()子句一起使用
以下是可以正常工作的基本代码,但是当我添加一个函数时,它会产生错误:
LEAD(hits.hitNumber,1)OVER(由fullvisitorID,visitid,visitnumber ORDER BY hits.hitNumber DESC分割)作为nextHit
我用来产生此错误的代码如下:
INTEGER(LEAD(hits.hitNumber,1))OVER(分区为fullvisitorID,visitid ORDER BY hits.hitNumber DESC)as nextHit
以下似乎无效:
INTEGER(LEAD(hits.hitNumber,1)OVER(分区为fullvisitorID,visitid ORDER BY hits.hitNumber DESC))作为nextHit
遇到" " OVER" " OVER""在第8行,第36栏。期待:")"
我是否真的需要将其作为子查询来实现这项工作,还是有不同的解决方案?
答案 0 :(得分:1)
2种可能的解决方案:
正如Jordan所说,将INTEGER()转换为LEAD():
SELECT LEAD(INTEGER(hits.hitNumber), 1) OVER (PARTITION BY fullvisitorID, visitid, visitnumber ORDER BY hits.hitNumber DESC) as nextHit
FROM [dataset.ga_sessions_20140107]
或者在您的建议中,使用子查询:
SELECT INTEGER(nextHit) FROM (
SELECT LEAD(hits.hitNumber, 1) OVER (PARTITION BY fullvisitorID, visitid, visitnumber ORDER BY hits.hitNumber DESC) as nextHit
FROM [dataset.ga_sessions_20140107]
)