GBQ Unpviot Columns 分为单列和多行

Posted

技术标签:

【中文标题】GBQ Unpviot Columns 分为单列和多行【英文标题】:GBQ Unpviot Columns into single column and multiple rows 【发布时间】:2020-12-17 20:57:25 【问题描述】:

大家好 正在尝试找出与previous question 类似的解决方案,但解决方案略有不同。我正在尝试找出一种方法来取消旋转不同数量的列并将结果放在一列中

输入这将是一个 sql 表 (tbl_fruit),如图所示

从 tbl_fruit 中选择 *

输出

可能的解决方案 根据链接的问题,我正在尝试修改该解决方案,但不断出现错误

select `Group`, split(kv, ':')[offset(0)] output
from tbl_fruit t,
unnest((select as struct t.* except(`Group`))) kv
where kv[offset(1)] != '0'
group by `Group`

【问题讨论】:

【参考方案1】:
select `Group`, split(kv, ':')[offset(0)] output
from `project.dataset.table` t,
unnest(split(translate(to_json_string((select as struct t.* except(`Group`))), '"', ''))) kv
where split(kv, ':')[offset(1)] != '0'    

有输出

【讨论】:

以上是关于GBQ Unpviot Columns 分为单列和多行的主要内容,如果未能解决你的问题,请参考以下文章

Scala Spark - 如何减少在单列中包含多列的数据帧?

python pandas:重命名多索引数据框中的单列标签

单列集合

从 cron 作业运行 pandas.io.gbq

索引的分类

Java单列模式