Unpivot

Převést datový rámec z širokého formátu na dlouhý formát a volitelně ponechat sloupce identifikátoru nastavené. Jedná se o opak groupBy(...).pivot(...).agg(...), s výjimkou agregace, kterou nelze vrátit zpět.

Přidáno do Databricks Runtime 11.1

Syntaxe

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

Parametry

Parameter Typ Description
ids str, Column, řazená kolekce členů, seznam Sloupce, které se mají použít jako identifikátory. Může to být jeden sloupec nebo název sloupce nebo seznam nebo řazená kolekce členů pro více sloupců.
values str, Column, řazená kolekce členů, seznam, volitelné Sloupce, které chcete převést na řádky Může to být jeden sloupec nebo název sloupce nebo seznam nebo řazená kolekce členů pro více sloupců. Pokud je zadáno, nesmí být prázdné. Pokud není zadáno, použije všechny sloupce, které nejsou nastaveny jako ids.
variableColumnName str Název sloupce proměnné.
valueColumnName str Název sloupce hodnoty.

Návraty

DataFrame: Nepřekontovaný datový rámec.

Poznámky

Podporuje Spark Connect.

Příklady

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|
# +---+------+----+