gpt4 book ai didi

google-bigquery - BigQuery SQL 中的 LAG() 函数错误;无法返回滞后的 hits.page.pagePath

转载 作者:行者123 更新时间:2023-12-04 19:33:09 27 4
gpt4 key购买 nike

我目前正在尝试在 BigQuery 表中创建一列,该列仅包含 hits.page.pagePath 的滞后值。对于此示例,假设我的 hits.time 值为 0、513、518、762、991。这些值对应于我创建的 unique_visit_id。每天有数以千计的独特访问,每次访问都有不同的 hits.time 值和行号。

为了帮助进行各种计算,我想向数据框中添加一列,该列仅包含 hits.page.pagePath 列中所有行的滞后值(当 hits.time > 0 时没有关联的滞后)。请注意,hits.time 是一个重复组,它指的是使用 CONCAT(fullVisitorId, STRING(visitId)) AS unique_visit_id 计算的唯一访问 ID。 .因此,我怀疑会涉及到像 OVER 这样的命令。我最初的查询使用了以下方法:

SELECT date, LAG(hits.page.pagePath,1), CONCAT(fullVisitorId, STRING(visitId)) AS unique_visit_id, visitId, visitNumber, fullVisitorId, totals.pageviews, totals.bounces, 
hits.page.pagePath, device.deviceCategory, device.browser, device.browserVersion, hits.customVariables.index,
hits.customVariables.customVarName, hits.customVariables.customVarValue, hits.time
FROM (FLATTEN([XXXXXXXX.ga_sessions_20140711], hits.time))
WHERE hits.customVariables.index = 4
ORDER BY unique_visit_id DESC, hits.time ASC
LIMIT 1000;

因此不幸返回了错误:

错误:LAG 是一个解析函数,必须附带一个 OVER 子句。

作业 ID:XXXXXXXX-XXX:job_zduhuRKgvrgmA7niBzcyb3empwY

我猜想 OVER 会引用 CONCAT(fullVisitorId, STRING(visitId)) AS unique_visit_id因为包含相同 unique_visit_id 的每一行代表一次唯一访问中的命中。不幸的是,在这里使用 OVER 也返回了一个错误。

最佳答案

分析函数有一个奇怪的语法......你快到了,但你只需要移动 ORDER BY条款进入OVER LAG() 使用的语句:

SELECT date, LAG(hits.page.pagePath,1) 
OVER(PARTITION BY unique_visit_id ORDER BY hits.time ASC) as lagged,
CONCAT(fullVisitorId, STRING(visitId)) AS unique_visit_id, visitId,
...
FROM (FLATTEN([XXXXXXXX.ga_sessions_20140711], hits.time))
WHERE hits.customVariables.index = 4
LIMIT 1000;

关于google-bigquery - BigQuery SQL 中的 LAG() 函数错误;无法返回滞后的 hits.page.pagePath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24746161/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com