다음을 통해 공유


str_to_map

구분 기호를 사용하여 텍스트를 키/값 쌍으로 분할한 후 문자열을 맵으로 변환합니다. pairDelimkeyValueDelim 모두 정규식으로 처리됩니다.

문법

from pyspark.sql import functions as sf

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

매개 변수

매개 변수 유형 Description
text pyspark.sql.Column 또는 str 입력 열 또는 문자열입니다.
pairDelim pyspark.sql.Column 또는 str, 선택 사항 쌍을 분할하는 데 사용할 구분 기호입니다. 기본값은 쉼표(,)입니다.
keyValueDelim pyspark.sql.Column 또는 str, 선택 사항 키/값을 분할하는 데 사용할 구분 기호입니다. 기본값은 콜론(:).

Returns

pyspark.sql.Column: 원래 열의 각 문자열이 맵으로 변환되는 지도 유형의 새 열입니다.

예시

예제 1: 기본 구분 기호 사용

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

예제 2: 사용자 지정 구분 기호 사용

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

예제 3: 다른 행에 다른 구분 기호 사용

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

예제 4: 구분 기호 열 사용

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

예제 5: 키/값 구분 기호 열 사용

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