查看 Google Analytics 时如何 UNNEST 和展平 BigQuery 中的所有记录
Posted
技术标签:
【中文标题】查看 Google Analytics 时如何 UNNEST 和展平 BigQuery 中的所有记录【英文标题】:How to UNNEST and flatten all the records in BigQuery when looking at Google Analytics 【发布时间】:2020-03-27 23:07:54 【问题描述】:在 BigQuery 中分析 GA 数据时,我发现以下字段具有相同值的重复记录
fullVisitorId 访问开始时间 hits.hitNumber我通过特定的 fullVisitorId 和 visitStartTime 过滤了一些结果
SELECT
fullVisitorId,
visitStartTime,
hits.hitNumber,
hits.time,
TIMESTAMP_SECONDS(CAST(visitStartTime + 0.001 * hits.time AS INT64)) AS hitsTimestamp
FROM
`testGAview.ga_sessions_20200113`,
UNNEST(hits) AS hits
WHERE
fullVisitorId = '324982394082304'
AND visitStartTime = 324234233
ORDER BY
fullVisitorId,
visitStartTime,
hitNumber
上面的查询返回 13 条记录,它们有重复的 fullVisitorId、visitStartTime 和 hits.hitNumber。我不确定这是怎么可能的,因为查看 [schema][1],所有这些字段对于不同的行都是相同的,这是出乎意料的。我应该说这是 0.002% 的记录中的极小百分比,所以我认为这可能是 GA 端的处理问题。
我现在想做的是取消嵌套所有字段以查看其他值,以及 fullVisitorId、visitStartTime 和 hitNumber
SELECT
*
FROM
`testGAview.ga_sessions_20200113` UNNEST(hits) AS h,
WHERE
fullVisitorId = '324982394082304'
AND visitStartTime = 324234233
AND hits.hitNumber = 23
我希望以上返回的是满足上述条件的 2 行,并且还显示了所有其他字段的值,以查看它们是否完全相同。
有人可以帮忙吗?谢谢!
【问题讨论】:
为什么你的查询不符合你的要求? 对不起,我应该更明确一点。我收到此错误:'不支持结果中的重复列名。发现重复项:customDimensions' 【参考方案1】:真正的问题似乎是“如果两行相同,如何比较”。我说的对吗?
这将解决这个问题:
CREATE TEMP FUNCTION first_two_identical(x ANY TYPE) AS (
TO_JSON_STRING(x[OFFSET(0)]) = TO_JSON_STRING(x[OFFSET(1)])
);
SELECT first_two_identical(ARRAY_AGG(a)) identical
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20170801` a
WHERE visitId IN (1501583974, 1501616585)
SELECT 选择 2 行(整行),并将它们打包到一个数组中。
数组被发送到函数first_two_identical()
该函数采用它接收到的数组的前 2 个元素。
为了将整行转换为可比较的对象,我们使用了TO_JSON_STRING()
。
就是这样。
【讨论】:
以上是关于查看 Google Analytics 时如何 UNNEST 和展平 BigQuery 中的所有记录的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ga.js 而不是 analytics.js 设置 Google Analytics 用户 ID
在 Google Analytics(分析)上查看 AdMob 收入数据
如何使用Google Analytics Universal Analytics增强型电子商务