Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
Convierte una cadena en un mapa después de dividir el texto en pares clave-valor mediante delimitadores. Tanto pairDelim como keyValueDelim se tratan como expresiones regulares.
Syntax
from pyspark.sql import functions as sf
sf.str_to_map(text, pairDelim=None, keyValueDelim=None)
Parámetros
| Parámetro | Tipo | Description |
|---|---|---|
text |
pyspark.sql.Column o str |
Columna o cadenas de entrada. |
pairDelim |
pyspark.sql.Column o str, opcional |
Delimitador que se va a usar para dividir pares. El valor predeterminado es coma (,). |
keyValueDelim |
pyspark.sql.Column o str, opcional |
Delimitador que se va a usar para dividir clave/valor. El valor predeterminado es dos puntos (:). |
Devoluciones
pyspark.sql.Column: una nueva columna de tipo de mapa donde cada cadena de la columna original se convierte en un mapa.
Examples
Ejemplo 1: Uso de delimitadores predeterminados
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}|
+------------------------+
Ejemplo 2: Uso de delimitadores personalizados
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}|
+------------------------+
Ejemplo 3: Uso de delimitadores diferentes para filas diferentes
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}|
+------------------------+
Ejemplo 4: Uso de una columna de delimitadores
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}|
+---------------------------------------+
Ejemplo 5: Uso de una columna de delimitadores de clave y valor
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} |
+------------------------+