UNION表时如何在Bigquery中重新排列/重新排序嵌套的重复列

Posted

技术标签:

【中文标题】UNION表时如何在Bigquery中重新排列/重新排序嵌套的重复列【英文标题】:How to rearrange/reorder nested repeated column in Bigquery when UNION tables 【发布时间】:2021-10-22 04:04:47 【问题描述】:

我有两个架构相似但顺序不同的 Bigquery 表

当使用下面的查询合并这两个表时,

select id, timestamp, products, count_total_visit, count_unique_session from table1
union all
select id, timestamp, products, count_total_visit, count_unique_session from table2

这是我得到的错误

UNION ALL 中的第 3 列具有不兼容的类型:ARRAY>, ARRAY> at [...]

如何重新排列嵌套重复字段的架构顺序,以便通过保持架构格式与源表相同的方式合并2张表?

【问题讨论】:

【参考方案1】:

下面会解决问题

select id, timestamp, products, count_total_visit, count_unique_session from table1
union all
select * replace (array( 
    select as struct * replace (array( 
        select as struct paiment_method, count_total_trx, sum_total_gbv, sum_total_revenue
          from product.details
        ) as details
      )
    from t.products product
  ) as products)
from table2 t

【讨论】:

酷。这很简单,因为以前我认为必须先 UNNEST 才能重新排列列,然后再次创建嵌套。感谢您的回答。

以上是关于UNION表时如何在Bigquery中重新排列/重新排序嵌套的重复列的主要内容,如果未能解决你的问题,请参考以下文章

在 bigquery 中查询多个数据集中的表时遇到问题

当 Firebase Analytics 分区表中出现表时,在 Bigquery 中安排查询

从 DataFlow 加载到现有 BigQuery 表时是不是可以更新架构?

尝试在BigQuery中查询多个表时,列名称不明确

当没有数据上传到 GCP 中的 BigQuery 表时创建警报

如何清理 BigQuery 视图