Aller au contenu principal

en ligne

Décompose un tableau de structs en une table.

Cette fonction prend une colonne d'entrée contenant un tableau de structures et renvoie une nouvelle colonne où chaque structure du tableau est éclatée en une ligne distincte.

Syntaxe

Python
from pyspark.sql import functions as sf

sf.inline(col)

parameter

parameter

Type

Description

col

pyspark.sql.Column ou nom de colonne

Colonne d'entrée de valeurs à éclater.

parameter

Type

Description

col

pyspark.sql.Column ou nom de colonne

Colonne d'entrée de valeurs à éclater.

Renvoie

pyspark.sql.Column: Expression de générateur avec le résultat éclaté en ligne.

Exemples

Exemple 1 : Utilisation en ligne avec une seule colonne de tableau struct

Python
import pyspark.sql.functions as sf
df = spark.sql('SELECT ARRAY(NAMED_STRUCT("a",1,"b",2), NAMED_STRUCT("a",3,"b",4)) AS a')
df.select('*', sf.inline(df.a)).show()
Output
+----------------+---+---+
| a| a| b|
+----------------+---+---+
|[{1, 2}, {3, 4}]| 1| 2|
|[{1, 2}, {3, 4}]| 3| 4|
+----------------+---+---+

Exemple 2 : Utilisation en ligne avec un nom de colonne

Python
import pyspark.sql.functions as sf
df = spark.sql('SELECT ARRAY(NAMED_STRUCT("a",1,"b",2), NAMED_STRUCT("a",3,"b",4)) AS a')
df.select('*', sf.inline('a')).show()
Output
+----------------+---+---+
| a| a| b|
+----------------+---+---+
|[{1, 2}, {3, 4}]| 1| 2|
|[{1, 2}, {3, 4}]| 3| 4|
+----------------+---+---+

Exemple 3 : Utilisation en ligne avec un alias

Python
import pyspark.sql.functions as sf
df = spark.sql('SELECT ARRAY(NAMED_STRUCT("a",1,"b",2), NAMED_STRUCT("a",3,"b",4)) AS a')
df.select('*', sf.inline('a').alias("c1", "c2")).show()
Output
+----------------+---+---+
| a| c1| c2|
+----------------+---+---+
|[{1, 2}, {3, 4}]| 1| 2|
|[{1, 2}, {3, 4}]| 3| 4|
+----------------+---+---+

Exemple 4 : Utilisation de l'intégration avec plusieurs colonnes de tableau de struct

Python
import pyspark.sql.functions as sf
df = spark.sql('SELECT ARRAY(NAMED_STRUCT("a",1,"b",2), NAMED_STRUCT("a",3,"b",4)) AS a1, ARRAY(NAMED_STRUCT("c",5,"d",6), NAMED_STRUCT("c",7,"d",8)) AS a2')
df.select(
'*', sf.inline('a1')
).select('*', sf.inline('a2')).show()
Output
+----------------+----------------+---+---+---+---+
| a1| a2| a| b| c| d|
+----------------+----------------+---+---+---+---+
|[{1, 2}, {3, 4}]|[{5, 6}, {7, 8}]| 1| 2| 5| 6|
|[{1, 2}, {3, 4}]|[{5, 6}, {7, 8}]| 1| 2| 7| 8|
|[{1, 2}, {3, 4}]|[{5, 6}, {7, 8}]| 3| 4| 5| 6|
|[{1, 2}, {3, 4}]|[{5, 6}, {7, 8}]| 3| 4| 7| 8|
+----------------+----------------+---+---+---+---+

Exemple 5 : utilisation en ligne avec une colonne de tableau de struct imbriquée

Python
import pyspark.sql.functions as sf
df = spark.sql('SELECT NAMED_STRUCT("a",1,"b",2,"c",ARRAY(NAMED_STRUCT("c",3,"d",4), NAMED_STRUCT("c",5,"d",6))) AS s')
df.select('*', sf.inline('s.c')).show(truncate=False)
Output
+------------------------+---+---+
|s |c |d |
+------------------------+---+---+
|{1, 2, [{3, 4}, {5, 6}]}|3 |4 |
|{1, 2, [{3, 4}, {5, 6}]}|5 |6 |
+------------------------+---+---+

Exemple 6 : Utilisation en ligne avec une colonne contenant : un tableau contenant des valeurs nulles, un tableau vide et des valeurs nulles

Python
from pyspark.sql import functions as sf
df = spark.sql('SELECT * FROM VALUES (1,ARRAY(NAMED_STRUCT("a",1,"b",2), NULL, NAMED_STRUCT("a",3,"b",4))), (2,ARRAY()), (3,NULL) AS t(i,s)')
df.show(truncate=False)
Output
+---+----------------------+
|i |s |
+---+----------------------+
|1 |[{1, 2}, NULL, {3, 4}]|
|2 |[] |
|3 |NULL |
+---+----------------------+
Python
df.select('*', sf.inline('s')).show(truncate=False)
Output
+---+----------------------+----+----+
|i |s |a |b |
+---+----------------------+----+----+
|1 |[{1, 2}, NULL, {3, 4}]|1 |2 |
|1 |[{1, 2}, NULL, {3, 4}]|NULL|NULL|
|1 |[{1, 2}, NULL, {3, 4}]|3 |4 |
+---+----------------------+----+----+