map_from_entries
Transforme un tableau d'entrées de paires clés-valeurs (structures avec deux champs) en une map. Le premier champ de chaque entrée est utilisé comme clé et le second champ comme valeur dans la colonne de mappage résultante.
Syntaxe
Python
from pyspark.sql import functions as sf
sf.map_from_entries(col)
parameter
parameter | Type | Description |
|---|---|---|
|
| Nom de colonne ou d'expression |
Renvoie
pyspark.sql.Column: Une carte créée à partir du tableau d'entrées donné.
Exemples
**Exemple 1** : Utilisation de base de map_from_entries
Python
from pyspark.sql import functions as sf
df = spark.sql("SELECT array(struct(1, 'a'), struct(2, 'b')) as data")
df.select(sf.map_from_entries(df.data)).show()
Output
+----------------------+
|map_from_entries(data)|
+----------------------+
| {1 -> a, 2 -> b}|
+----------------------+
Exemple 2 : map_from_entries avec des valeurs nulles
Python
from pyspark.sql import functions as sf
df = spark.sql("SELECT array(struct(1, null), struct(2, 'b')) as data")
df.select(sf.map_from_entries(df.data)).show()
Output
+----------------------+
|map_from_entries(data)|
+----------------------+
| {1 -> NULL, 2 -> b}|
+----------------------+
**Exemple 3** : map_from_entries avec un DataFrame
Python
from pyspark.sql import Row, functions as sf
df = spark.createDataFrame([([Row(1, "a"), Row(2, "b")],), ([Row(3, "c")],)], ['data'])
df.select(sf.map_from_entries(df.data)).show()
Output
+----------------------+
|map_from_entries(data)|
+----------------------+
| {1 -> a, 2 -> b}|
| {3 -> c}|
+----------------------+
Exemple 4 : map_from_entries avec tableau vide
Python
from pyspark.sql import functions as sf
from pyspark.sql.types import ArrayType, StringType, IntegerType, StructType, StructField
schema = StructType([
StructField("data", ArrayType(
StructType([
StructField("key", IntegerType()),
StructField("value", StringType())
])
), True)
])
df = spark.createDataFrame([([],)], schema=schema)
df.select(sf.map_from_entries(df.data)).show()
Output
+----------------------+
|map_from_entries(data)|
+----------------------+
| {}|
+----------------------+