Spark Scala中 Dataframe 的转换

carvr3hs  于 2023-02-13  发布在  Apache
关注(0)|答案(1)|浏览(168)

我有一个数据框在这里,我需要一些转换。这里的Col_X和Col_Y是需要工作的列。Col_X和Col_Y的后缀是X和Y,我需要在新列Col_D和Col_x和col_y的值应该被拆分到不同的行中的值。我通过透视表选项,但似乎不工作。在Spark Scala中有没有一种方法可以有效地转换数据

ColA  ColB Col_x Col_y
a      1     10   20
b      2     30   40

所需表格:

ColA  ColB ColC   Col_D 
a      1     10     X
a      1     20     Y
b      2     30     X
b      2     40     Y
nxowjjhe

nxowjjhe1#

您可以使用stack函数,

val df = // input
df.selectExpr("ColA", "ColB", "stack(2, 'X', Col_x, 'Y', Col_y) as (ColD, ColC)")
    .show()

+----+----+----+----+
|ColA|ColB|ColD|ColC|
+----+----+----+----+
|   a|   1|   X|  10|
|   a|   1|   Y|  20|
|   b|   2|   X|  30|
|   b|   2|   Y|  40|
+----+----+----+----+

相关问题