Bigquery导出中的滞后自定义维度

时间:2017-03-21 13:43:36

标签: google-analytics google-bigquery

我为Bigquery激活了Google Analytics导出设置。

这是对上一页路径的查询,页面:

SELECT


LAG(hits.page.pagePath, 1) OVER (PARTITION BY fullVisitorId, visitId ORDER BY hits.hitNumber ASC) AS Previous,

hits.page.pagePath AS Page
FROM
  [xxxxxxxx.table]
WHERE
  hits.type="PAGE"
LIMIT
  100

我正在尝试获取上一页请求的自定义维度,但我被卡住了。

基本上我想用LAG检索自定义维度(这是一个嵌套值)。

这可行,但它也会抛出许多额外的空行:

LAG ( IF (hits.customDimensions.index = 10, hits.customDimensions.value, NULL)) ,1) OVER (PARTITION BY fullVisitorId, visitId ORDER BY hits.hitNumber ASC) AS Previous_PT

如果我使用max(https://support.google.com/analytics/answer/4419694?hl=en#query7_MultipleCDs),则会抛出错误。

非常感谢任何帮助。

感谢。

2 个答案:

答案 0 :(得分:0)

如果只是将“hits.customDimensions.index = 10”移动到WHERE子句中,它是否有效?

答案 1 :(得分:0)

供将来参考&寻求者,我设法解决了这个问题:

Max是一个分析函数,您不能在LAG中使用分析函数。

我设法获取上一个请求的自定义维度X的唯一方法是自己加入同一个表ON hitnumber:

SELECT
hits.page.pagePath AS Page,
fullVisitorId,
visitId,
LAG(hits.hitNumber, 1) OVER (PARTITION BY fullVisitorId, visitId ORDER BY hits.hitNumber ASC) AS Previous_Hit,
LAG(hits.page.pagePath, 1) OVER (PARTITION BY fullVisitorId, visitId ORDER BY hits.hitNumber ASC) AS Previous,
MAX(IF (hits.customDimensions.index = 6, hits.customDimensions.value, NULL)) WITHIN RECORD AS BLABLA1,
MAX(IF (hits.customDimensions.index = 8, hits.customDimensions.value, NULL)) WITHIN RECORD AS BLABLA2,
MAX(IF (hits.customDimensions.index = 10, hits.customDimensions.value, NULL)) WITHIN RECORD AS BLABLA3,
hits.hitNumber AS hitNumber
FROM
FLATTEN([xxxxxxxxx], hits)
WHERE
hits.type="PAGE" ) AS T1
LEFT JOIN
FLATTEN(xxxxxxxxxx], hits) AS T2
ON 
T2.hits.hitNumber = T1.Previous_Hit 
AND T1.fullVisitorId = T2.fullVisitorId 
AND T1.visitId = T2.visitId