查看 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增强型电子商务

在 Google Analytics 中查看 Adwords 质量得分

Google Analytics会查看所有原始请求

如何将 Google Analytics 数据导出到 Google GCS 存储桶或 BigQuery?