首页 > 解决方案 > 根据条件创建一个包含列名数组的新列

问题描述

我需要在 Bigquery 表中创建一个新列。此新列值必须是基于条件的颜色列名称数组。我的表“用户”看起来像:

用户 红色的 蓝色的 绿色的 黄色 其他不相关的列
第一的 1 1 0 1
第二 0 0 1 0
第三 1 1 0 0

并且预期的表或视图必须是这样的:

用户 红色的 蓝色的 绿色的 黄色 Array_col
第一的 1 1 0 1 红、蓝、黄
第二 0 0 1 0 绿色的
第三 1 1 0 0 红蓝

我对 SQL 和 Bigquery sintax 比较陌生,我尝试过创建一个视图,并且还使用

ALTER TABLE myproject.mydataset.users`

我用这个得到列名:

SELECT column_names
FROM `myproject.mydataset`.INFORMATION_SCHEMA.COLUMNS
WHERE (table_name = 'users')

但我找不到如何创建数组列表并用它们创建一个列。我正在撞墙。

标签: sqlgoogle-bigquery

解决方案


考虑以下方法

select *, 
  regexp_extract_all(translate(to_json_string(t), '{}"', ''), r'(\w+):1') as Array_col
from mytable t       

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

在此处输入图像描述


推荐阅读