Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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} |
+------------------------+