BigQuery SQL:无法查询重复字段的叉积/

时间:2018-04-16 09:51:39

标签: sql google-bigquery legacy-sql

我的目标是从所有访问者中过滤,仅分析客户(位于customDimension.index =2中,然后进一步过滤客户的特定类型的综合浏览量。

SELECT customDimensions.value AS CustomerID,
SUM(totals.pageviews) as page_views,
SUM(CASE WHEN hits.type = 'PAGE' AND hits.contentGroup.contentGroup2 = 'important' THEN 1 ELSE 0 END) AS important_pageviews
FROM `xxxxxxxx.ga_sessions_20180415`
WHERE customDimensions.index = 2
GROUP BY CustomerID 

我得到了错误(使用StandardSQL):

Error: Cannot access field index on a value with type
ARRAY<STRUCT<index INT64, value STRING>> at [5:24]

对于旧版SQL:

  

错误:无法查询重复字段的叉积   customDimensions.index和hits.contentGroup.contentGroup2。

修改

SELECT cd.value AS CustomerID,
SUM(totals.pageviews) as page_views,
SUM(CASE WHEN hits.type = 'PAGE' AND hits.contentGroup.contentGroup2 = 'important' THEN 1 ELSE 0 END) AS important_pageviews
FROM `xxxxxxxx.ga_sessions_20180415`,
UNNEST(customDimensions) AS cd
WHERE cd.index = 2
GROUP BY CustomerID 

返回:

Error: Cannot access field type on a value with type ARRAY<STRUCT<hitNumber INT64, time INT64, hour INT64, ...>> at [3:20]

我尝试使用UNNEST(hits.type) = 'PAGE' AND UNNEST(hitscontentGroup.contentGroup2) = 'important'来纠正3:20行 Error: Syntax error: Unexpected keyword UNNEST at [3:15]

1 个答案:

答案 0 :(得分:1)

由于customDimensions是一个数组,您需要SELECT customDimension.value AS UserID FROM `my.project.data` AS t CROSS JOIN UNNEST(t.customdimensions) AS customDimension WHERE customDimension.index = 2 才能引用它的内容,请参阅下面的StandardSQL示例,其中我从BigQuery中的Google Analytics数据中删除了UserID:< / p>

{{1}}