unpivot

Avpivot en DataFrame från brett format till långt format, om du vill lämna identifierarkolumner angivna. Det här är omvänd till groupBy(...).pivot(...).agg(...), förutom aggregeringen, som inte kan ångras.

Har lagts till i Databricks Runtime 11.1

Syntax

unpivot(ids: Union["ColumnOrName", List["ColumnOrName"], Tuple["ColumnOrName", ...]], values: Optional[Union["ColumnOrName", List["ColumnOrName"], Tuple["ColumnOrName", ...]]], variableColumnName: str, valueColumnName: str)

Parameters

Parameter Type Beskrivning
ids str, Column, tuple, list Kolumner som ska användas som identifierare. Kan vara ett kolumn- eller kolumnnamn eller en lista eller tuppel för flera kolumner.
values str, Column, tuple, list, optional Kolumner till unpivot. Kan vara ett kolumn- eller kolumnnamn eller en lista eller tuppel för flera kolumner. Om det anges får det inte vara tomt. Om det inte anges använder du alla kolumner som inte har angetts som ids.
variableColumnName str Namnet på variabelkolumnen.
valueColumnName str Namn på värdekolumnen.

Retur

DataFrame: Opivoterad dataram.

Notes

Stöder Spark Connect.

Exempel

df = spark.createDataFrame(
    [(1, 11, 1.1), (2, 12, 1.2)],
    ["id", "int", "double"],
)
df.show()
# +---+---+------+
# | id|int|double|
# +---+---+------+
# |  1| 11|   1.1|
# |  2| 12|   1.2|
# +---+---+------+

from pyspark.sql import functions as sf
df.unpivot(
    "id", ["int", "double"], "var", "val"
).sort("id", sf.desc("var")).show()
# +---+------+----+
# | id|   var| val|
# +---+------+----+
# |  1|   int|11.0|
# |  1|double| 1.1|
# |  2|   int|12.0|
# |  2|double| 1.2|
# +---+------+----+