使用不同表中的行“扩展”BigQuery 数组

Posted

技术标签:

【中文标题】使用不同表中的行“扩展”BigQuery 数组【英文标题】:"Extend" a BigQuery array using rows in a different table 【发布时间】:2021-04-25 16:23:37 【问题描述】:

我有两个 BigQuery 表,第一个称为 model_results,包含两列 model_name(字符串)和 vars(包含元素 idvalue 的重复记录),第二个表称为 @ 987654330@ 包含两列 model_name(字符串)和 vars_details(重复记录与元素 iddescription)。例如:

基本上我想要做的是使用model_results 并使用model_details 中的信息“扩展”它。也就是说,对于model_results 中具有某个model_name 的每一行,我想在model_details 中查找具有相同model_name 的行,并将vars_detailsmodel_results“追加”到该行。在上面的示例中,输出将是:

我对 BigQuery 数组、结构和 UNNEST 的了解并不多,这就是我至今未能成功的原因。非常感谢任何帮助!

【问题讨论】:

【参考方案1】:

考虑下面

select model_name,
  array(
    select as struct t.*, description
    from t1.vars t
    join t2.vars_details
    using(id)
  ) vars
from `project.dataset.model_results` t1
join `project.dataset.model_details` t2
using(model_name)         

如果应用于您问题中的样本数据 - 输出是

【讨论】:

以上是关于使用不同表中的行“扩展”BigQuery 数组的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法通过数组的内容过滤 BigQuery 中的行?

是否可以在 bigQuery 表中插入具有不同字段的行?

在新的 BigQuery 标准 SQL 的数组中使用结构

获取 BigQuery 表中的行数(流式缓冲区)

使用 BigQuery LegacySQL 处理数组

何时在 Bi​​gQuery 中使用分区