繁体   English   中英

在 BigQuery 中将列转换为数组

[英]Turn columns into array in BigQuery

我想拿一张这样的桌子:

钥匙 col1 col2 col3
“一个” 0 2 3
“乙” 1 1 3
“C” 5 0 2
“d” 0 0 1

并将其变成这样:

钥匙 山口
“一个” [0, 2, 3]
“乙” [1, 1, 3]
“C” [5, 0, 2]
“d” [0, 0, 1]

基本上,我想将列合并到一个数组中。 在现实生活中,我有 60 列,全部包含整数。 如果这更容易,我也会采用结构。 基本上,我不想动态处理 60 个列名。

我似乎无法在任何地方找到答案,这让我感到困惑 - 这一定是一个常见的用例? 对我来说一定很晚了……

使用array怎么样?

select key, array[col1, col2, col3] as cols
from t;

考虑以下方法

select key, 
  (
    select array_agg(cast(value as int64))
    from unnest(split(trim(format('%t', (select as struct * except(key) from unnest([t]))), '()'))) value
  ) col
from `project.dataset.table` t  

如果应用于您问题中的示例数据 - output 是

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM