首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BigQuery与Struct<INT64>和{INT64}的差异

BigQuery与Struct<INT64>和{INT64}的差异
EN

Stack Overflow用户
提问于 2021-01-08 21:14:37
回答 2查看 564关注 0票数 0

我正在尝试选择campaigns,其中event_list包含事件123。以下代码呈现类型错误:No matching signature for operator IN for argument types STRUCT<INT64> and {INT64}

代码语言:javascript
复制
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>会得到正确的结果。

下面是比较的查询:

代码语言:javascript
复制
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>

  • How
  1. {INT64}是什么,它与{INT64}有何不同?我是否正确地修复了对所需结果的查询?

编辑:

错误的截图:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-08 21:33:09

如何正确地修复所需结果的查询?

见下面的修正

代码语言:javascript
复制
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)
)
票数 1
EN

Stack Overflow用户

发布于 2021-01-10 07:08:14

什么是{INT64},它与结构有何不同?

{INT64}只是INT64,您可以忽略它周围的{}。在原始查询中,el是整个子查询,所以它的类型是STRUCT<INT64> (带有INT64列的表)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65636513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档