【问题标题】:BigQuery - Selecting multiple Product-scoped custom dimensions in BigQueryBigQuery - 在 BigQuery 中选择多个产品范围的自定义维度
【发布时间】:2016-05-13 07:00:10
【问题描述】:

我正在尝试在 Google BigQuery 中查询多个产品范围的自定义维度。结果是这样的:

我想获得结果中的组合行,如下所示:

这可以通过 BigQuery 中的查询实现吗?

编辑

请查看我使用的现有查询:

SELECT IF(hits.product.customDimensions.index=21, hits.product.customDimensions.value, NULL) cd21,
IF(hits.product.customDimensions.index=22, 
hits.product.customDimensions.value, NULL) cd22
FROM [<table_id>.ga_sessions_20160510]
WHERE hits.product.productListName LIKE "%test%"
  AND hits.product.isImpression IS TRUE
  AND hits.product.customDimensions.index IN (21,22)

【问题讨论】:

  • 请分享您现有的查询,以便我们改进它。
  • 请查看我使用的现有查询:SELECT IF(hits.product.customDimensions.index=21, hits.product.customDimensions.value, NULL) cd21, IF(hits.product.customDimensions. index=22, hits.product.customDimensions.value, NULL) cd22 FROM [.ga_sessions_20160510] 其中 hits.product.productListName LIKE "%test%" AND hits.product.isImpression 为真并且 hits.product.customDimensions。索引 IN (21,22)

标签: sql google-bigquery


【解决方案1】:

我使用公共数据集重写了一个示例:

SELECT fullVisitorId, visitId, hits.hitNumber, hits.time,
  max(IF(hits.customDimensions.index = 1, hits.customDimensions.value, NULL)) within RECORD cd21,
  max(IF(hits.customDimensions.index = 2, hits.customDimensions.value, NULL)) within RECORD cd22,
FROM
  [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910]
WHERE
  hits.customDimensions.index IN ( 1,2 )
and fullVisitorId = '712553853382222331'

输出是:

+-----+--------------------+------------+----------------+-----------+-------+--------+--+
| Row | fullVisitorId      | visitId    | hits_hitNumber | hits_time | cd21  | cd22   |  |
+-----+--------------------+------------+----------------+-----------+-------+--------+--+
| 1   | 712553853382222331 | 1378804218 | 1              | 0         | Vests | Bronze |  |
+-----+--------------------+------------+----------------+-----------+-------+--------+--+
| 2   | 712553853382222331 | 1378804218 | 2              | 9611      | Vests | Bronze |  |
+-----+--------------------+------------+----------------+-----------+-------+--------+--+
| 3   | 712553853382222331 | 1378804218 | 3              | 10664     | Vests | Bronze |  |
+-----+--------------------+------------+----------------+-----------+-------+--------+--+
| 4   | 712553853382222331 | 1378804218 | 5              | 25377     | Vests | Bronze |  |
+-----+--------------------+------------+----------------+-----------+-------+--------+--+

您可能注意到它使用 WITHIN 语法从同一个 RECORD 中读取多个条目。这样你就得到了范围聚合。

请注意,在 GA 数据上,您可能有多个命中,如果您只想保留一行,则可能需要进一步汇总此输出。


Google Analytics(分析)团队提供了一个示例数据集,您可以使用它来了解生成的数据的性质。您可以通过使用项目菜单(项目名称旁边的下拉菜单,切换到项目 ➪ 显示项目)添加项目 google.com:analytics-bigquery,将这些数据添加到 BigQuery UI 中的视图。或者,您可以导航到 BigQuery UI 链接 https://bigquery.cloud.google.com/project/google.com:analytics-bigquery 添加项目后,示例数据集 (LondonCycleHelmet) 将显示在导航面板中。它包含两个表:

  • ga_sessions_20130910
  • refunds_201309

【讨论】:

  • 答案有帮助。但是,我正在获取的数据在同一个 hitNumber 中有多个 CD 值。由于这些是产品印象,因此我们采用这种方式。它的作用是 MAX 函数只给我最高值而不是全部 4。有没有办法实现这一点?
  • 使用我之前使用的查询,我得到i.imgur.com/r2rYpJY.png。根据您的查询,使用 MAX,我得到 i.imgur.com/2DlJ642.png
  • 将 MAX 替换为 group_concat。我只是用作示例
  • 我也尝试过使用 GROUP_CONCAT。它没有给出预期的结果。 GROUP_CONCAT 给出的是i.imgur.com/dBTc7Uy.png(单行中的所有内容)。我们正在寻找的是i.imgur.com/VJ24j55.png。你能帮忙吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-15
相关资源
最近更新 更多