array_position
Localise la position de la première occurrence de la valeur donnée dans le tableau donné. Renvoie nul si l'un des arguments est nul. La position n'est pas basée sur zéro, mais sur un index basé sur 1. Renvoie 0 si la valeur donnée n'a pas pu être trouvée dans le tableau.
Syntaxe
from pyspark.sql import functions as sf
sf.array_position(col, value)
parameter
parameter | Type | Description |
|---|---|---|
|
| Colonne cible sur laquelle travailler. |
| N’importe lequel | Valeur ou expression de colonne à rechercher. |
Renvoie
pyspark.sql.Column: position de la valeur dans le tableau donné si trouvée et 0 sinon.
Exemples
Exemple 1 : recherche de la position d'une chaîne dans un tableau de chaînes
from pyspark.sql import functions as sf
df = spark.createDataFrame([(["c", "b", "a"],)], ['data'])
df.select(sf.array_position(df.data, "a")).show()
+-----------------------+
|array_position(data, a)|
+-----------------------+
| 3|
+-----------------------+
Exemple 2 : Recherche de la position d'une chaîne dans un tableau vide
from pyspark.sql import functions as sf
from pyspark.sql.types import ArrayType, StringType, StructField, StructType
schema = StructType([StructField("data", ArrayType(StringType()), True)])
df = spark.createDataFrame([([],)], schema=schema)
df.select(sf.array_position(df.data, "a")).show()
+-----------------------+
|array_position(data, a)|
+-----------------------+
| 0|
+-----------------------+
Exemple 3 : Recherche de la position d'un nombre entier dans un tableau de nombres entiers
from pyspark.sql import functions as sf
df = spark.createDataFrame([([1, 2, 3],)], ['data'])
df.select(sf.array_position(df.data, 2)).show()
+-----------------------+
|array_position(data, 2)|
+-----------------------+
| 2|
+-----------------------+
Exemple 4 : recherche de la position d'une valeur non existante dans un tableau
from pyspark.sql import functions as sf
df = spark.createDataFrame([(["c", "b", "a"],)], ['data'])
df.select(sf.array_position(df.data, "d")).show()
+-----------------------+
|array_position(data, d)|
+-----------------------+
| 0|
+-----------------------+
**Exemple 5** : Recherche de la position d'une valeur dans un tableau avec des valeurs nulles.
from pyspark.sql import functions as sf
df = spark.createDataFrame([([None, "b", "a"],)], ['data'])
df.select(sf.array_position(df.data, "a")).show()
+-----------------------+
|array_position(data, a)|
+-----------------------+
| 3|
+-----------------------+
Exemple 6 : Trouver la position de la valeur d’une colonne dans un tableau d’entiers
from pyspark.sql import functions as sf
df = spark.createDataFrame([([10, 20, 30], 20)], ['data', 'col'])
df.select(sf.array_position(df.data, df.col)).show()
+-------------------------+
|array_position(data, col)|
+-------------------------+
| 2|
+-------------------------+