我们如何在数据框中的多个列上进行透视。例如,此处提到的示例https://spark.apache.org/docs/latest/sql-ref-syntax-qry-select-pivot.html
SELECT * FROM person
PIVOT (
SUM(age) AS a, AVG(class) AS c
FOR (name, age) IN (('John', 30) AS c1, ('Mike', 40) AS c2)
);
此处枢轴是根据(名称,年龄)完成的。我们不能在Spark Scala的支点方法中传递多个参数,因为它只希望将一个列名作为参数。我们如何对数据框执行类似的操作?
您可以将数组列传递给pivot
:
val df2 = df.groupBy("id","address")
.pivot(array("name","age"),
Seq(array(lit("John"),lit("30")).as("c1"),
array(lit("Mike"),lit("40")).as("c2")))
.agg(sum('age).as("a"), avg('class).as("c"))
df2.show
+---+-------+----+----+----+----+
| id|address|c1_a|c1_c|c2_a|c2_c|
+---+-------+----+----+----+----+
|200|Street2|null|null|null|null|
|100|Street1|30.0| 1.0|null|null|
|400|Street4|null|null|null|null|
|300|Street3|null|null|null|null|
+---+-------+----+----+----+----+
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句