Aller au contenu principal

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

cols

pyspark.sql.Column ou str

Colonnes de tableaux à Merge.

parameter

Type

Description

cols

pyspark.sql.Column ou str

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