arrays_zip
Renvoie un tableau Merge de structures dans lequel la Nième structure contient toutes les Nième valeurs des tableaux d'entrée. Si l'un des tableaux est plus court que les autres, la valeur de type structuré résultante sera nulle pour les éléments manquants.
Syntaxe
Python
from pyspark.sql import functions as sf
sf.arrays_zip(*cols)
parameter
parameter | Type | Description |
|---|---|---|
|
| Colonnes de tableaux à Merge. |
Renvoie
pyspark.sql.Column: Merge array d'entrées.
Exemples
Exemple 1 : Fusion de deux tableaux de même longueur
Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([([1, 2, 3], ['a', 'b', 'c'])], ['nums', 'letters'])
df.select(sf.arrays_zip(df.nums, df.letters)).show(truncate=False)
Output
+-------------------------+
|arrays_zip(nums, letters)|
+-------------------------+
|[{1, a}, {2, b}, {3, c}] |
+-------------------------+
Exemple 2 : Combinaison de tableaux de différentes longueurs
Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([([1, 2], ['a', 'b', 'c'])], ['nums', 'letters'])
df.select(sf.arrays_zip(df.nums, df.letters)).show(truncate=False)
Output
+---------------------------+
|arrays_zip(nums, letters) |
+---------------------------+
|[{1, a}, {2, b}, {NULL, c}]|
+---------------------------+
Exemple 3 : Combinaison de plus de deux tableaux
Python
from pyspark.sql import functions as sf
df = spark.createDataFrame(
[([1, 2], ['a', 'b'], [True, False])], ['nums', 'letters', 'bools'])
df.select(sf.arrays_zip(df.nums, df.letters, df.bools)).show(truncate=False)
Output
+--------------------------------+
|arrays_zip(nums, letters, bools)|
+--------------------------------+
|[{1, a, true}, {2, b, false}] |
+--------------------------------+
Exemple 4 : Zippage de tableaux avec des valeurs nulles
Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([([1, 2, None], ['a', None, 'c'])], ['nums', 'letters'])
df.select(sf.arrays_zip(df.nums, df.letters)).show(truncate=False)
Output
+------------------------------+
|arrays_zip(nums, letters) |
+------------------------------+
|[{1, a}, {2, NULL}, {NULL, c}]|
+------------------------------+