我目前正在尝试在 BigQuery 表中创建一个列,该列仅包含 hist.page.pagePath 的滞后值。对于此示例,假设我的 hit.time 值为 0、513、518、762、991。这些值对应于我创建的 unique_visit_id。每天有数千次唯一访问,每次访问都有不同的点击时间值和行数。
为了帮助进行各种计算,我想向数据框中添加一列,该列仅包含 hits.page.pagePath 列中所有行的滞后值(当 hit.time > 0 时没有关联的滞后值)。请注意,hits.time 是一个重复组,指的是使用以下方法计算的唯一访问 IDCONCAT(fullVisitorId, STRING(visitId)) AS unique_visit_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 也会返回错误。