我可以通过单个查询将多个 BigQuery 列合并到一个重复字段中吗?

Posted

技术标签:

【中文标题】我可以通过单个查询将多个 BigQuery 列合并到一个重复字段中吗?【英文标题】:Can I consolidate several BigQuery columns into a single repeated field via a single query? 【发布时间】:2015-08-23 20:34:29 【问题描述】:

我在 BigQuery 中有一个大表,如下所示:

ref_id code1 code2 code3 code4 code5 code6 code7 code8
     1    47   742    89   374   893    27     4    68
     2   766     9    84     8  4576    49    76     4

我想使用 BigQuery 查询将此表转换为对所有代码列使用重复字段的格式。所以结果应该是这样的(用 JSON 来表示代码的重复字段):

[
  "ref_id": 1,
  "codes": [
    46,
    742,
    89,
    374,
    893,
    27,
    4,
    68
  ]
, 
  "ref_id": 2,
  "codes": [
    766,
    9,
    84,
    8,
    4576,
    49,
    76,
    4
  ]
]

我可以通过输出到另一个表的 BigQuery 查询来做到这一点吗?我知道我可以下载数据,将其重新格式化为 JSON,然后重新插入,但我希望可以通过对原始数据的查询来完成数十亿行。

【问题讨论】:

【参考方案1】:

这是一种方法 - 使用“,”作为分隔符连接代码,然后使用 SPLIT 生成 REPEATED 字段,即

select id, split(concat(string(code1), ",", string(code2))) codes from
(select 1 id, 47 code1, 742 code2),
(select 2 id, 766 code1, 9 code2)

【讨论】:

不行,nest 只能取一个字段

以上是关于我可以通过单个查询将多个 BigQuery 列合并到一个重复字段中吗?的主要内容,如果未能解决你的问题,请参考以下文章

将多个分组查询组合成单个查询

使用 bigquery 和单个查询进行分区,根据日期将表拆分为多个表

如何使用 Pandas 将多个 csv 文件中的单个数据列合并为一个?

SAP HANA SQL - 将单个列的多个结果行合并为单个行

Pandas使用列标题作为值将多个列转换/合并为单个列

从 SQL 查询向 BigQuery 表添加多个分区列