Udostępnij przez


str_to_map

Konwertuje ciąg na mapę po podzieleniu tekstu na pary klucz/wartość przy użyciu ograniczników. Zarówno pairDelim , jak i keyValueDelim są traktowane jako wyrażenia regularne.

Składnia

from pyspark.sql import functions as sf

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

Parametry

Parameter Typ Description
text pyspark.sql.Column lub str Dane wejściowe kolumny lub ciągi.
pairDelim pyspark.sql.Column lub str, opcjonalnie Ogranicznik używany do dzielenia par. Wartość domyślna to przecinek (,).
keyValueDelim pyspark.sql.Column lub str, opcjonalnie Ogranicznik używany do dzielenia klucza/wartości. Wartość domyślna to dwukropek (:).

Zwraca

pyspark.sql.Column: Nowa kolumna typu mapy, w której każdy ciąg w oryginalnej kolumnie jest konwertowany na mapę.

Przykłady

Przykład 1. Używanie domyślnych ograniczników

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

Przykład 2: Używanie ograniczników niestandardowych

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

Przykład 3. Używanie różnych ograniczników dla różnych wierszy

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

Przykład 4. Używanie kolumny ograniczników

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

Przykład 5: Używanie kolumny ograniczników klucz/wartość

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