首页 文章

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

提问于
浏览
5

我正在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 回答

  • 3

    根据您可以接受的过滤类型,您可以通过从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")
    
  • 6

    更新:看到related帖子,恐怕不再可能了 . 可以使用NEST函数并按字段分组,但这是一个很长的镜头 .

    在查询上使用flatten调用:

    SELECT *
    FROM flatten([google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910],customDimensions)
    WHERE
      hits.page.pagePath CONTAINS "m"
    

    因此在网络上ui:

    • 设置目标表

    • 允许大结果

    • 和NO压扁结果

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

  • 1

    我知道 - 这是老问 . 但现在可以通过使用标准SQL方言而不是Legacy来实现

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

相关问题