将多列转换为 Bigquery 中的记录

Posted

技术标签:

【中文标题】将多列转换为 Bigquery 中的记录【英文标题】:transform multiple columns to records in Bigquery 【发布时间】:2021-02-15 14:54:23 【问题描述】:

我正在尝试将平面表转换为 Bigquery 中的嵌套表。 如果我想取一行,并将某些列转换为 2 个字段:

    key.name key.value

例如,如果我使用这张桌子:

我想将其转换为以下结构:

【问题讨论】:

【参考方案1】:

您可以将其定义为数组。我建议将它放入一个字符串结构中,这样你就只有一个数组:

select unique_key, cast_number, date,
       [struct('block' as key, block as value),
        struct('iucr' as key, iucr as value),
        struct('primary_type' as key, primary_type as value),
        . . .
       ] as key_values

但是对于您的具体要求:

select unique_key, cast_number, date,
       ['block', 'iucr', 'primary_type', . . . ] as keys,
       [block, iucr, primary_type, . . . ] as values

请注意,这些假设值都是字符串。如果不是,您可能需要转换一些值。

【讨论】:

完美!这就是我要找的。谢谢! 如何处理“数组不能有空元素;写入字段值出错”? @LHA 。 . .我认为错误很明显。您需要删除该列或使用 coalesce() 为其赋予不同的值。

以上是关于将多列转换为 Bigquery 中的记录的主要内容,如果未能解决你的问题,请参考以下文章

将 MySQL 查询转换为 BigQuery 查询

Big Query (SQL) 将多列转换为行/数组

需要将字符串从一列分隔为多列,以';'分隔bigquery中的分隔符

基于 SQL (BigQuery) 中的多列返回许多小数据样本

sql [BigQuery - Facebook产品目录]查询para obtenerelcatálogodeproductos de Kichink。 #facebook #bigqu

Bigquery:将 SPLIT() 输出行分解为多列