BigQuery - 为啥在 Google Analytics 中提取交易数据不需要 UNNEST 运算符?
Posted
技术标签:
【中文标题】BigQuery - 为啥在 Google Analytics 中提取交易数据不需要 UNNEST 运算符?【英文标题】:BigQuery - Why is UNNEST operator not required for pulling transactions data in Google Analytics?BigQuery - 为什么在 Google Analytics 中提取交易数据不需要 UNNEST 运算符? 【发布时间】:2018-06-18 06:00:36 【问题描述】:SELECT SUM(totals.totalTransactionRevenue)
来自 bigquery-public-data.google_analytics_sample.ga_sessions_* WHERE _TABLE_SUFFIX BETWEEN '20170701' 和 '20170701';
事务是产品级别的范围,一个会话可以有多个事务。因此,一个会话可以保存一系列事务。在这种情况下,为什么运行此查询不需要 UNNEST 参数? 谢谢。
【问题讨论】:
【参考方案1】:这是因为您选择的字段是简单的 INTEGER 字段,而不是 ARRAY。您可以通过转到表的 Schema 选项卡来检查这一点。如果该字段包含 ARRAY,则它(或其父字段)的类型应为“RECORD - REPEATED”。
【讨论】:
【参考方案2】:在您给出的示例中,您将事务计数为SUM(totals.totalTransactionRevenue)
的总和。请注意,totals
包含已为您取消嵌套的聚合数据(作为整数,如上一篇文章所述),这就是为什么您不需要 UNNEST
从totals
下的字段中读取数据的原因。
您是正确的,如果您想从产品级别数据中提出另一个问题,这些数据尚未在 totals
中为您汇总(例如您昨天的所有交易 ID),那么您需要取消嵌套.
还请注意,当您UNNEST
时,您将重复 totals
的行,因此在同一查询中使用两者时要小心,因为您最终可能会重复计算。
此先前的答案通过一些示例进一步解释了这一点: Unnest and totals.timeOnSite (BigQuery and Google Analytics data)
【讨论】:
以上是关于BigQuery - 为啥在 Google Analytics 中提取交易数据不需要 UNNEST 运算符?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Google BigQuery 在使用视图时没有正确使用分区日期
为啥 Google Analytics 和 BigQuery 之间的独特事件差异如此之大?
为啥通过 Google Apps 脚本向 Bigquery 加载的数据仅限于 513 行数据?