Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Kolekcja: scala dwie podane mapy w jedną mapę, stosując funkcję do par klucz-wartość. Obsługuje program Spark Connect.
Aby uzyskać odpowiednią funkcję SQL usługi Databricks, zobacz map_zip_with funkcja.
Składnia
from pyspark.databricks.sql import functions as dbf
dbf.map_zip_with(col1=<col1>, col2=<col2>, f=<f>)
Parametry
| Parameter | Typ | Description |
|---|---|---|
col1 |
pyspark.sql.Column lub str |
Nazwa pierwszej kolumny lub wyrażenia kolumny reprezentującego pierwszą mapę. |
col2 |
pyspark.sql.Column lub str |
Nazwa drugiej kolumny lub wyrażenia kolumny reprezentującego drugą mapę. |
f |
function |
Ternary funkcja, która definiuje sposób scalania wartości z dwóch map. Ta funkcja powinna zwrócić kolumnę, która będzie używana jako wartość w wynikowej mapie. |
Zwraca
pyspark.sql.Column: Nowa kolumna mapy, w której każda para klucz-wartość jest wynikiem zastosowania funkcji do odpowiednich par klucz-wartość w mapach wejściowych.
Przykłady
Przykład 1. Scalanie dwóch map z prostą funkcją
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([
(1, {"A": 1, "B": 2}, {"A": 3, "B": 4})],
("id", "map1", "map2"))
row = df.select(
dbf.map_zip_with("map1", "map2", lambda _, v1, v2: v1 + v2).alias("updated_data")
).head()
sorted(row["updated_data"].items())
[('A', 4), ('B', 6)]
Przykład 2. Scalanie dwóch map z niezgodnymi kluczami
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([
(1, {"A": 1, "B": 2}, {"B": 3, "C": 4})],
("id", "map1", "map2"))
row = df.select(
dbf.map_zip_with("map1", "map2",
lambda _, v1, v2: dbf.when(v2.isNull(), v1).otherwise(v1 + v2)
).alias("updated_data")
).head()
sorted(row["updated_data"].items())
[('A', 1), ('B', 5), ('C', None)]