问题描述
我们在Big Query中有一个表格,如下所示。
输入表:
Name | Interests
-----+----------
Bob | ["a"]
Sue | ["a","b"]
Joe | ["b","c"]
我们希望将上表转换为以下格式,使其对BI /可视化友好。
目标/必需表:
+------------------+
| Name | a | b | c |
+------------------+
| Bob | 1 | 0 | 0 |
| Sue | 1 | 1 | 0 |
| Joe | 0 | 1 | 0 |
+------------------+
注意:兴趣列是数组数据类型。 Big Query可能进行这种转换吗?如果是,是否有任何参考查询?
谢谢!
解决方法
以下内容适用于BigQuery Standard SQL,并使用BQ的脚本功能
#standardSQL
create temp table ttt as (
select name,interest
from `project.dataset.table`,unnest(interests) interest
);
EXECUTE IMMEDIATE (
SELECT """
SELECT name,""" ||
STRING_AGG("""MAX(IF(interest = '""" || interest || """',1,0)) AS """ || interest,',')
|| """
FROM ttt
GROUP BY name
"""
FROM (
SELECT DISTINCT interest
FROM ttt
ORDER BY interest
)
);
如果要应用于您的问题的样本数据-输出为