首页 > 解决方案 > 如何将表 1 上的结构数组与 BigQuery 中表 2 的普通列连接起来

问题描述

表 1 和表 2

select p.id,q.description
from table1 p 
join table2 q 
on q.control_number 
in unnest(p.results.control_number)

当我处理这个时,我收到以下错误:

无法访问类型为 ARRAY<STRUCT<control_number string,...., ...>> 的值的字段 control_number

我还尝试过在表格之后取消嵌套,例如:

select p.id,q.f.description 
from table1 p,Unnest(finder) f 
join table2 q 
  on q.control_number in unnest(p.f.results.control_number)

但这也没有用。

谁能告诉我怎么了?

标签: arraysjoinstructgoogle-bigquery

解决方案


在标准 SQL 中尝试以下操作:

with table1 as (
    select '1' id, array[struct('a1' as control_number)] finder
    UNION ALL 
    select '2' id, array[struct('a2' as control_number)] finder
    UNION ALL 
    select '3' id, array[struct('a3' as control_number)] finder     
),
table2 as (
    select 'description for a1' description, 'a1' control_number 
    UNION ALL
    select 'description for a2' description, 'a2' control_number 
)
select p.id,q.description 
from table1 p, unnest(p.finder) f join table2 q on q.control_number = f.control_number;

WITH子句用于模拟表中的数据。


推荐阅读