如何使用WHERE子句中的hits.customDimensions.index查询GA导出到BQ模式?

时间:2015-06-26 03:28:32

标签: google-analytics google-bigquery

截至几天前,以下查询在使用the schema generated by an export from GA的BQ上运行良好:

SELECT hits.customDimensions.value
FROM TABLE_DATE_RANGE([88399188.ga_sessions_], TIMESTAMP('20150623'), TIMESTAMP('20150623'))
WHERE hits.customDimensions.index=14
LIMIT 1000

现在,我收到以下错误:

Error: Cannot query the cross product of repeated fields customDimensions.index and hits.customDimensions.index.

有趣的是,以下查询工作正常(即没有WHERE子句):

SELECT hits.customDimensions.value
FROM TABLE_DATE_RANGE([88399188.ga_sessions_], TIMESTAMP('20150623'), TIMESTAMP('20150623'))
LIMIT 1000

此外,以下查询正常工作:

SELECT hits.customDimensions.value
FROM [88399188.ga_sessions_20150623]
WHERE hits.customDimensions.index=14
LIMIT 1000

请注意,FROM子句是此子句与失败查询之间的唯一区别;即使他们应该解决完全相同的查询。请帮忙!我做错了什么?

2 个答案:

答案 0 :(得分:2)

问题是customDimensions都是REPEATED RECORD,而hits是REPEATED RECORD,每个都可以独立于另一个重复。因此,在hits.customDimensions.index上进行过滤时选择hits.customDimensions.value在含义上没有明确定义。例如,如果您希望在非hits.customDimensions.index为14时跳过整个记录,则可以使用以下查询:

SELECT hits.customDimensions.value
FROM TABLE_DATE_RANGE(
     [88399188.ga_sessions_], TIMESTAMP('20150623'), TIMESTAMP('20150623')
OMIT RECORD IF EVERY(hits.customDimensions.index != 14)
LIMIT 1000

答案 1 :(得分:0)

此异常不再可重现。虽然我还没有得到谷歌的确认,但我不得不认为这是一个固定的临时错误。