sql - BigQuery - 在 BigQuery 中选择多个产品范围的自定义维度

标签 sql google-bigquery

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

Current set of results

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

Expected set of results

这可以通过 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)

最佳答案

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

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 语法从同一记录中读取多个条目。这样您就可以获得范围内的聚合。

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


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

  • ga_sessions_20130910
  • refunds_201309

关于sql - BigQuery - 在 BigQuery 中选择多个产品范围的自定义维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37203259/

相关文章:

SQL:将 varchar 转换/解析为 int 或零(非 NULL)的简单方法

sql - 查找连接表中只有一行的记录

mysql - 使用 TimeDiff 获取列的平均时间

python - 使用Python查询BigQuery,这个Python表是如何工作的?

java - 如何使用 Eclipse 和 Java 从 Google BigQuery 接收数据?

sql - 为具有几列组合唯一的表选择一个好的主键

sql - 使用 Oracle SQL 选择生日在给定范围内的员工

lua - 如何定时向第三方服务发送Redis数据?

python - (BigQuery PY Client Library v0.28) - 从表 'query' 作业中获取结果

mysql - 谷歌大查询