Teilen über


str_to_map

Konvertiert einen String in eine Zuordnung, nachdem der Text mithilfe von Trennzeichen in Schlüssel-Wert-Paare aufgeteilt wurde. Sowohl pairDelim als auch keyValueDelim werden als reguläre Ausdrücke behandelt.

Syntax

from pyspark.sql import functions as sf

sf.str_to_map(text, pairDelim=None, keyValueDelim=None)

Die Parameter

Parameter Typ Description
text pyspark.sql.Column oder str Eingabespalten oder Zeichenfolgen.
pairDelim pyspark.sql.Column oder str, optional Trennzeichen, das zum Teilen von Paaren verwendet werden soll. Der Standardwert ist Komma (,).
keyValueDelim pyspark.sql.Column oder str, optional Trennzeichen, das zum Teilen des Schlüssels/Werts verwendet werden soll. Der Standardwert ist Doppelpunkt (:).

Rückkehr

pyspark.sql.Column: Eine neue Spalte vom Kartentyp, in der jede Zeichenfolge in der ursprünglichen Spalte in eine Karte konvertiert wird.

Examples

Beispiel 1: Verwenden von Standardtrennzeichen

from pyspark.sql import functions as sf
df = spark.createDataFrame([("a:1,b:2,c:3",)], ["e"])
df.select(sf.str_to_map(df.e)).show(truncate=False)
+------------------------+
|str_to_map(e, ,, :)     |
+------------------------+
|{a -> 1, b -> 2, c -> 3}|
+------------------------+

Beispiel 2: Verwenden von benutzerdefinierten Trennzeichen

from pyspark.sql import functions as sf
df = spark.createDataFrame([("a=1;b=2;c=3",)], ["e"])
df.select(sf.str_to_map(df.e, sf.lit(";"), sf.lit("="))).show(truncate=False)
+------------------------+
|str_to_map(e, ;, =)     |
+------------------------+
|{a -> 1, b -> 2, c -> 3}|
+------------------------+

Beispiel 3: Verwenden unterschiedlicher Trennzeichen für unterschiedliche Zeilen

from pyspark.sql import functions as sf
df = spark.createDataFrame([("a:1,b:2,c:3",), ("d=4;e=5;f=6",)], ["e"])
df.select(sf.str_to_map(df.e,
  sf.when(df.e.contains(";"), sf.lit(";")).otherwise(sf.lit(",")),
  sf.when(df.e.contains("="), sf.lit("=")).otherwise(sf.lit(":"))).alias("str_to_map")
).show(truncate=False)
+------------------------+
|str_to_map              |
+------------------------+
|{a -> 1, b -> 2, c -> 3}|
|{d -> 4, e -> 5, f -> 6}|
+------------------------+

Beispiel 4: Verwenden einer Spalte mit Trennzeichen

from pyspark.sql import functions as sf
df = spark.createDataFrame([("a:1,b:2,c:3", ","), ("d=4;e=5;f=6", ";")], ["e", "delim"])
df.select(sf.str_to_map(df.e, df.delim, sf.lit(":"))).show(truncate=False)
+---------------------------------------+
|str_to_map(e, delim, :)                |
+---------------------------------------+
|{a -> 1, b -> 2, c -> 3}               |
|{d=4 -> NULL, e=5 -> NULL, f=6 -> NULL}|
+---------------------------------------+

Beispiel 5: Verwenden einer Spalte mit Schlüssel-/Werttrennzeichen

from pyspark.sql import functions as sf
df = spark.createDataFrame([("a:1,b:2,c:3", ":"), ("d=4;e=5;f=6", "=")], ["e", "delim"])
df.select(sf.str_to_map(df.e, sf.lit(","), df.delim)).show(truncate=False)
+------------------------+
|str_to_map(e, ,, delim) |
+------------------------+
|{a -> 1, b -> 2, c -> 3}|
|{d -> 4;e=5;f=6}        |
+------------------------+