中国建设劳动学会网站,南京小程序定制开发,广东网站备案多长时间,清智优化北京在数据仓库中#xff0c;行转列通常称为”变形”(Pivoting) 或 “透视”(Pivoting)#xff0c;可使用Spark SQL的pivot语句实现。下面是一个简单的示例#xff1a;
假设我们有如下表格#xff1a;
--------------------
| name | brand | year |
--------------------
|…
在数据仓库中行转列通常称为”变形”(Pivoting) 或 “透视”(Pivoting)可使用Spark SQL的pivot语句实现。下面是一个简单的示例
假设我们有如下表格
--------------------
| name | brand | year |
--------------------
| Alice | BMW | 2017 |
| Bob | Tesla | 2018 |
| Alice | Tesla | 2019 |
| Bob | BMW | 2020 |
--------------------
我们想要把该表中的品牌列转换为4列分别表示不同的品牌而值则为对应品牌的年份。具体操作如下 SELECT name, COALESCE(BMW, 0) AS BMW, COALESCE(Tesla, 0) AS Tesla
FROM (SELECT name,brand,year FROM my_table
) T
PIVOT (MAX(year) FOR brand IN (BMW, Tesla)
)
运行上面的代码得到的结果如下所示
-------------------
| name | BMW | Tesla|
-------------------
| Alice | 2017 | 2019 |
| Bob | 2020 | 2018 |
-------------------
可以看到原本的品牌列已经被转换成了两个新的列并且对于每个人名都有对应的品牌年份信息填充其中。这就是典型的行转列操作。其中COALESCE函数用于处理可能存在的空值情况。