Aller au contenu principal

str_to_map

Convertit une chaîne en carte après avoir divisé le texte en paires clé/valeur à l’aide de délimiteurs. Les deux pairDelim et keyValueDelim sont traités comme des expressions régulières.

Syntaxe

Python
from pyspark.sql import functions as sf

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

parameter

parameter

Type

Description

text

pyspark.sql.Column ou str

Colonne d'entrée ou chaînes de caractères.

pairDelim

pyspark.sql.Column ou str, facultatif

Délimiteur à utiliser pour scinder les paires. Default est la virgule (,).

keyValueDelim

pyspark.sql.Column ou str, facultatif

Délimiteur à utiliser pour séparer clé/valeur. default est le signe deux-points (:).

parameter

Type

Description

text

pyspark.sql.Column ou str

Colonne d'entrée ou chaînes de caractères.

pairDelim

pyspark.sql.Column ou str, facultatif

Délimiteur à utiliser pour scinder les paires. Default est la virgule (,).

keyValueDelim

pyspark.sql.Column ou str, facultatif

Délimiteur à utiliser pour séparer clé/valeur. default est le signe deux-points (:).

Renvoie

pyspark.sql.Column: Une nouvelle colonne de type carte où chaque chaîne de la colonne d'origine est convertie en une carte.

Exemples

Exemple 1 : Utilisation des default délimiteurs

Python
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)
Output
+------------------------+
|str_to_map(e, ,, :) |
+------------------------+
|{a -> 1, b -> 2, c -> 3}|
+------------------------+

Exemple 2 : Utilisation de délimiteurs personnalisés

Python
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)
Output
+------------------------+
|str_to_map(e, ;, =) |
+------------------------+
|{a -> 1, b -> 2, c -> 3}|
+------------------------+

**Exemple 3** : Utilisation de délimiteurs différents pour des lignes différentes

Python
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)
Output
+------------------------+
|str_to_map |
+------------------------+
|{a -> 1, b -> 2, c -> 3}|
|{d -> 4, e -> 5, f -> 6}|
+------------------------+

Exemple 4 : Utilisation d'une colonne de délimiteurs

Python
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)
Output
+---------------------------------------+
|str_to_map(e, delim, :) |
+---------------------------------------+
|{a -> 1, b -> 2, c -> 3} |
|{d=4 -> NULL, e=5 -> NULL, f=6 -> NULL}|
+---------------------------------------+

Exemple 5 : utilisation d'une colonne de délimiteurs clé/valeur

Python
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)
Output
+------------------------+
|str_to_map(e, ,, delim) |
+------------------------+
|{a -> 1, b -> 2, c -> 3}|
|{d -> 4;e=5;f=6} |
+------------------------+