Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
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} |
+------------------------+