微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

大查询-将数组转置为列

如何解决大查询-将数组转置为列

我们在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
  )
);      

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

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。