Google analytics 用于ga_会话的BigQuery_表_后缀

Google analytics 用于ga_会话的BigQuery_表_后缀,google-analytics,google-bigquery,Google Analytics,Google Bigquery,此查询工作正常 SELECT page.* FROM `zentinel-datawarehouse.xxx.ga_sessions_20170601` ga, UNNEST (hits) hits, UNNEST (hits.page) page 但当我需要使用_table_后缀时 SELECT page.* FROM `zentinel-datawarehouse.xxx.ga_sessions_*` ga, UNNEST (hits) hits, UNNEST (hits.page) p

此查询工作正常

SELECT page.* FROM `zentinel-datawarehouse.xxx.ga_sessions_20170601` ga,
UNNEST (hits) hits,
UNNEST (hits.page) page
但当我需要使用_table_后缀时

SELECT page.* FROM `zentinel-datawarehouse.xxx.ga_sessions_*` ga,
UNNEST (hits) hits,
UNNEST (hits.page) page
WHERE _TABLE_SUFFIX>=20170601
不要再工作了

这发生在那个日期,因为hits.page是重复记录的。。。在08或09月份工作正常,因为记录为空 有什么想法吗


如果您收到下面的错误消息,请注意


错误:UNNEST中引用的值必须是数组。未列出的包含 [3:9]处结构类型的表达式

我认为有些表有不同的模式,试着找出模式更改是什么时候应用的,可能是jan-feb有一个模式,并且自3月份以来更新了模式

使用Google Analytics export,您经常会遇到这种模式更改

在这里,您可以做的是修补您的表,例如:以有助于您的方向修复模式。 如果不进行修复,您将需要有两个不同的查询来针对这两个模式(如果GA团队在运行中进行更改,将会有更多的模式)


您应该有一个脚本,它可以不断地将它们在更新时引入的所有架构更改传播到以前的表中。

命中。page
不是一个数组,而是一个结构。您已经交叉连接了“hits”(这是一个数组),这应该足够了。 只能交叉连接数组或表。您希望删除此语句,因为它仅在hits.page为null时有效:

SELECT
  page.*
FROM
  `project.dataset.ga_sessions_201712*` t, t.hits h
LIMIT
  1000

当你说它不起作用时,你是什么意思?任何错误消息?错误:UNNEST中引用的值必须是数组。UNNEST在[3:9]中包含STRUCT类型的表达式。我测试这一点时,只使用了两位数字作为表后缀,并且有效……然后我认为一些表具有不同的模式,尝试查找何时应用了模式更改可能是jan-feb有一个模式,并且自三月更新了schemaYes,schame将20170703 hits.page record repeteable更改为record null…并且查询在最旧的Schema贪婪中不起作用。我以前遇到过打破通配符查询的模式差异。我通过将具有相似模式的表复制到一个新的数据集来解决这个问题,因此通配符只覆盖那些表。