bigquery:加入“结构”列
Posted
技术标签:
【中文标题】bigquery:加入“结构”列【英文标题】:bigquery: join to a "struct" column 【发布时间】:2021-07-12 16:06:15 【问题描述】:所以我在 bigquery 中有一个扁平(普通)表(表 a)和另一个(表 b)有几个结构列。我需要加入这两个表。但挑战是我需要使用表 a 中的 id 并将其连接到表 b 中的 id ,这是一个“结构”类型。我最初尝试使用“UNNEST”子句,但后来了解到我只能将它用于“ARRAY”类型。
然后我尝试了以下代码“
select a.user_id
from `table_a` a
join `table_b` b
on a.user_id = b.prices.cars_user_ids
limit 10
(我之所以使用 .price. 是因为它是一个结构体)
但不幸的是,我收到以下错误:
No matching signature for operator = for argument types: STRING, ARRAY<STRING>. Supported signature: ANY = ANY at [4:4]
我明白它为什么抱怨。但我想到的唯一解决方案是使用“UNNEST”功能。再一次,它不会工作,因为它不是一个数组。你能帮忙吗?
【问题讨论】:
请提供样本数据和期望的结果。 How do I ask a good question? 【参考方案1】:错误消息根本没有提到结构,而是一个数组。我怀疑你想要:
select a.user_id
from `table_a` a join
(`table_b` b cross join
unnest(b.prices) price
)
on a.user_id = price.cars_user_ids;
【讨论】:
感谢您的回复。我尝试了您的建议,但它给了我以下错误:```UNNEST 中引用的值必须是数组。 UNNEST 包含类型 STRUCT以上是关于bigquery:加入“结构”列的主要内容,如果未能解决你的问题,请参考以下文章
Google BigQuery SQL:加入后防止列前缀重命名
通过 Cloud Datalab 加入 Google BigQuery