【问题标题】:Can't cast the result of LAG or LEAD into an Integer不能将 LAG 或 LEAD 的结果转换为整数
【发布时间】:2014-11-23 07:37:02
【问题描述】:

我一直在尝试根据 LAG 或 LEAD 函数的结果进行计算。

将函数封装在 INTEGER() 强制转换函数中似乎会导致其中的 OVER 函数出现问题并引发以下错误:

无法识别的分析函数:INT64 不能与 OVER() 子句一起使用

以下是可以正常工作的基本代码,但是当我添加一个函数时,它会产生错误:

LEAD(hits.hitNumber, 1) OVER (PARTITION BY fullvisitorID, visitid, visitnumber ORDER BY hits.hitNumber DESC) as nextHit

我用来产生这个错误的代码如下:

INTEGER(LEAD(hits.hitNumber, 1)) OVER (PARTITION BY fullvisitorID, visitid ORDER BY hits.hitNumber DESC) as nextHit

以下似乎也不起作用:

INTEGER(LEAD(hits.hitNumber, 1) OVER (PARTITION BY fullvisitorID, visitid ORDER BY hits.hitNumber DESC)) as nextHit

在第 8 行第 36 列遇到“"OVER" "OVER ""。原为:")"

我真的需要将其设为子查询以使其正常工作还是有其他解决方案?

【问题讨论】:

  • LEAD() 函数中移动INTEGER() 怎么样?如LEAD(INTEGER(hits.hitNumber, 1) ...

标签: google-analytics google-bigquery


【解决方案1】:

2 种可能的解决方案:

正如乔丹所说,将 INTERGER() 演员带入 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]
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 2016-07-05
    • 2018-04-14
    • 1970-01-01
    相关资源
    最近更新 更多