BigQuery错误:无法查询重复字段的交叉积

时间:2015-05-22 15:36:20

标签: google-analytics google-bigquery

我正在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?

是否找到了解决问题的方法?

3 个答案:

答案 0 :(得分:6)

根据您可以接受的过滤类型,您可以通过从WHERE切换到OMIT IF来解决此问题。它会给出不同的结果,但同样,这些不同的结果也许是可以接受的。 如果其中的(某些)页面符合条件,则以下将删除整个命中记录。请注意两件事:

  • 它使用OMIT命中IF,而不是更常用的OMIT RECORD IF。
  • 条件反转,因为OMIT IF与WHERE
  • 相反

查询是:

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:

  • 设置目的地表
  • 允许大结果
  • 和NO展平结果

正确完成工作,生成的表与原始模式匹配。

答案 2 :(得分:1)

我知道 - 这是老问。 但现在只需使用标准的SQL方言而不是Legacy

即可实现
#standardSQL
SELECT t.*
FROM `dataset.table` t, UNNEST(hits.page) as page
WHERE
  page.pagePath CONTAINS "my-fun-path"