我正在Google BigQuery网络界面上运行以下查询,以获取Google Analytics提供的数据:
SELECT *
FROM [dataset.table]
WHERE
hits.page.pagePath CONTAINS "my-fun-path"
我想将结果保存到新表中,但是当使用Flatten Results = False时,我收到以下错误消息:
错误:无法查询重复字段的叉积 customDimensions.value和hits.page.pagePath。
这个答案意味着这应该是可能的:Is there a way to select nested records into a table?
是否找到了解决问题的方法?
答案 0 :(得分:6)
根据您可以接受的过滤类型,您可以通过从WHERE切换到OMIT IF来解决此问题。它会给出不同的结果,但同样,这些不同的结果也许是可以接受的。 如果其中的(某些)页面符合条件,则以下将删除整个命中记录。请注意两件事:
查询是:
SELECT *
FROM [dataset.table]
OMIT hits IF EVERY(NOT hits.page.pagePath CONTAINS "my-fun-path")
答案 1 :(得分:3)
更新:请参阅related主题,恐怕不再可能。 可以使用NEST功能和按字段分组,但这是一个很长的镜头。
在查询中使用flatten调用:
SELECT *
FROM flatten([google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910],customDimensions)
WHERE
hits.page.pagePath CONTAINS "m"
因此在网络上ui:
正确完成工作,生成的表与原始模式匹配。
答案 2 :(得分:1)
我知道 - 这是老问。 但现在只需使用标准的SQL方言而不是Legacy
即可实现#standardSQL
SELECT t.*
FROM `dataset.table` t, UNNEST(hits.page) as page
WHERE
page.pagePath CONTAINS "my-fun-path"