我正在尝试选择campaigns,其中event_list包含事件1、2或3。以下代码呈现类型错误:No matching signature for operator IN for argument types STRUCT<INT64> and {INT64}
SELECT campaign, event_list
FROM `adobe_analytics.raw_data_20200*` rd
WHERE campaign IS NOT NULL AND
EXISTS (SELECT 1
FROM (SELECT CAST(e AS INT64) FROM UNNEST(SPLIT(rd.event_list)) e) el
WHERE el IN (1,2,3)
)在a previous post中,Gordon 给出的答案;同样的“类查询”操作Array<String>会得到正确的结果。
下面是比较的查询:
SELECT campaign, event_list
FROM `adobe_analytics.raw_data_20200*` rd
WHERE campaign IS NOT NULL AND
EXISTS (SELECT 1
FROM UNNEST(SPLIT(rd.event_list)) el
WHERE el IN ('1', '2', '3')
);所以我的问题是:
STRUCT<INT64>
{INT64}是什么,它与{INT64}有何不同?我是否正确地修复了对所需结果的查询?编辑:
错误的截图:

发布于 2021-01-08 21:33:09
如何正确地修复所需结果的查询?
见下面的修正
SELECT campaign, event_list
FROM `adobe_analytics.raw_data_20200` rd
WHERE campaign IS NOT NULL AND
EXISTS (
SELECT 1
FROM (SELECT CAST(e AS INT64) el FROM UNNEST(SPLIT(rd.event_list)) e)
WHERE el IN (1,2,3)
)发布于 2021-01-10 07:08:14
什么是{INT64},它与结构有何不同?
{INT64}只是INT64,您可以忽略它周围的{}。在原始查询中,el是整个子查询,所以它的类型是STRUCT<INT64> (带有INT64列的表)。
https://stackoverflow.com/questions/65636513
复制相似问题