我正在尝试使用以下查询来获取事件名称等于的行:EventGamePlayed,EventGetUserBasicInfos或EventGetUserCompleteInfos
select *
from [com_test_testapp_ANDROID.app_events_20170426]
where event_dim.name in ("EventGamePlayed", "EventGetUserBasicInfos", "EventGetUserCompleteInfos");
我收到以下错误:无法查询重复字段event_dim.name和user_dim.user_properties.value.index的交叉产品。
是否可以通过不平坦的结果使其工作? 另外,我不确定为什么错误在讨论“user_dim.user_properties.value.index”字段。
答案 0 :(得分:3)
错误是由SELECT *
引起的,其中包括所有列。而不是使用旧版SQL,请使用standard SQL尝试此操作,这对于重复的字段交叉产品没有这个问题:
#standardSQL
SELECT *
FROM com_test_testapp_ANDROID.app_events_20170426
CROSS JOIN UNNEST(event_dim) AS event_dim
WHERE event_dim.name IN ("EventGamePlayed", "EventGetUserBasicInfos", "EventGetUserCompleteInfos");
您可以在Working with Arrays topic中详细了解如何使用重复的字段/数组。如果您习惯使用旧版SQL,则可以在migration guide中阅读BigQuery中旧版和标准SQL之间的差异。