在数据仓库中,行转列通常称为”变形”(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
函数用于处理可能存在的空值情况。文章来源:https://www.toymoban.com/news/detail-725444.html
文章来源地址https://www.toymoban.com/news/detail-725444.html
到了这里,关于spark sql如何行转列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!