Bagikan melalui


str_to_map

Mengonversi string menjadi peta setelah memisahkan teks menjadi pasangan kunci/nilai menggunakan pemisah. Keduanya pairDelim dan keyValueDelim diperlakukan sebagai ekspresi reguler.

Syntax

from pyspark.sql import functions as sf

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

Parameter-parameternya

Pengaturan Tipe Description
text pyspark.sql.Column atau str Kolom input atau string.
pairDelim pyspark.sql.Column atau str, opsional Pemisah yang digunakan untuk memisahkan pasangan. Defaultnya adalah koma (,).
keyValueDelim pyspark.sql.Column atau str, opsional Pemisah yang akan digunakan untuk membagi kunci/nilai. Defaultnya adalah titik dua (:).

Pengembalian Barang

pyspark.sql.Column: Kolom baru jenis peta tempat setiap string di kolom asli dikonversi menjadi peta.

Examples

Contoh 1: Menggunakan pemisah default

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

Contoh 2: Menggunakan pemisah kustom

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

Contoh 3: Menggunakan pemisah yang berbeda untuk baris yang berbeda

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

Contoh 4: Menggunakan kolom pemisah

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

Contoh 5: Menggunakan kolom pembatas kunci/nilai

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