Pular para o conteúdo principal

map_from_entries

Transforma um array de entradas de key-valor (estruturas com dois campos) em um mapa. O primeiro campo de cada entrada é usado como key e o segundo campo como valor na coluna do mapa resultante.

Sintaxe

Python
from pyspark.sql import functions as sf

sf.map_from_entries(col)

Parâmetros

Parâmetro

Tipo

Descrição

col

pyspark.sql.Column ou str

Nome da coluna ou expressão

Devoluções

pyspark.sql.ColumnUm mapa criado a partir da matriz de entradas fornecida.

Exemplos

Exemplo 1 : Uso básico 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}|
+----------------------+

Exemplo 2 : map_from_entries com valores nulos

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

Exemplo 3 : map_from_entries com um 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}|
+----------------------+

Exemplo 4 : map_from_entries com array vazio

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