str_to_map

Sınırlayıcıları kullanarak metni anahtar/değer çiftlerine böldükten sonra bir dizeyi eşlem içine dönüştürür. pairDelim Hem hem de keyValueDelim normal ifadeler olarak değerlendirilir.

Sözdizimi

from pyspark.sql import functions as sf

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

Parametreler

Parametre Türü Description
text pyspark.sql.Column veya str Giriş sütunu veya dizeleri.
pairDelim pyspark.sql.Column veya str, isteğe bağlı Çiftleri bölmek için kullanılacak sınırlayıcı. Varsayılan virgüldür (,).
keyValueDelim pyspark.sql.Column veya str, isteğe bağlı Anahtarı/değeri bölmek için kullanılacak sınırlayıcı. Varsayılan iki nokta üst üste (:).

İade

pyspark.sql.Column: Özgün sütundaki her dizenin haritaya dönüştürüldüğü yeni bir eşleme türü sütunu.

Örnekler

Örnek 1: Varsayılan sınırlayıcıları kullanma

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

Örnek 2: Özel sınırlayıcıları kullanma

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

Örnek 3: Farklı satırlar için farklı sınırlayıcılar kullanma

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

Örnek 4: Sınırlayıcılardan oluşan bir sütun kullanma

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

Örnek 5: Anahtar/değer sınırlayıcıları sütununu kullanma

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