通配符模式命中的解决方法。*不能用于引用联合中的字段

时间:2017-01-18 12:35:47

标签: google-bigquery

来自GoogleAnalytics raw data的BigQuery实现的数据有多个重复字段。要访问BigQuery read here上的示例数据库集,它是免费的。

|- fullVisitorId
+- hits
    +- eCommerceAction
    +- customVariables
    +- customDimensions
    +- customMetrics
    +- product
        +- customDimensions
        +- customMetrics
    +- promotion
    +- experiment

使用此查询时:

from flatten((select hits.*,fullVisitorId from (TABLE_DATE_RANGE([0.ga_sessions_], TIMESTAMP('2017-01-12'), TIMESTAMP('2017-01-13'))) ),hits)

我们得到:

Error: 0.0 - 0.0: Wildcard pattern hits.* cannot be used to refer to fields in a union

克服这个令人讨厌的错误的适用解决方法是什么。

1 个答案:

答案 0 :(得分:2)

一些想法:

  • 使用标准SQL(这可能是最易维护的选项)。
  • 明确枚举所有列,而不是使用.*内的FLATTEN
  • 使用OMIT RECORD IF或作用域聚合等过滤器,而不是展平。
  • 使用“展平”运算符(例如ORDER BYGROUP BY)删除重复。不过,这可能会对性能产生影响。