此查询工作正常......
SELECT page.* FROM `zentinel-datawarehouse.xxx.ga_sessions_20170601` ga,
UNNEST (hits) hits,
UNNEST (hits.page) page
但是当我需要使用_table_suffix
时SELECT page.* FROM `zentinel-datawarehouse.xxx.ga_sessions_*` ga,
UNNEST (hits) hits,
UNNEST (hits.page) page
WHERE _TABLE_SUFFIX>=20170601
不再适用......
这发生在那个日期,因为hits.page是记录可重复的...在08或09月工作正常,因为记录为NULL 任何想法???
REGARDS
答案 0 :(得分:1)
如果您收到以下错误消息
错误:UNNEST中引用的值必须是数组。 UNNEST包含 在[3:9]
表达STRUCT类型
我认为某些表具有不同的模式,尝试找到应用模式更改的时间,jan-feb可能有一个模式,并且自3月更新了模式。
使用Google Analytics导出,您经常会遇到此架构更改。
您可以在此处执行的操作是修补表格,例如:将架构修复到可以帮助您的方向。 如果不进行修复,您需要有两个不同的查询来定位两个模式(如果GA团队随时改变,将会有更多的模式)。
您应该拥有一个脚本,该脚本会不断地将更新更新引入的所有架构更改传播到上一个表。
答案 1 :(得分:0)
hits.page
不是数组而是结构。你已经交叉加入“命中”(这是一个数组),这应该足够了。
您只能交叉连接数组或表。您希望删除此语句,因为它仅在hits.page为null时才起作用:
SELECT
page.*
FROM
`project.dataset.ga_sessions_201712*` t, t.hits h
LIMIT
1000