Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Fonction de générateur table
S’applique à :
Databricks SQL
Databricks Runtime
Retourne un ensemble de lignes en annulant l’imbrication expr avec la numérotation des positions.
Dans Databricks SQL et Databricks Runtime 16.1 et versions ultérieures, cette fonction prend en charge l’appel de paramètre nommé.
Syntaxe
posexplode(collection)
Arguments
-
collection: Une expressionARRAYouMAP.
Retours
Ensemble de lignes composées de la position et des éléments du tableau ou des clés et des valeurs du mappage.
Les colonnes générées par posexplode d’un tableau sont nommées pos et col.
Les colonnes d’un mappage sont appelées pos, key et value.
Si collection est NULL, aucune ligne n’est générée.
S’applique à :
Databricks Runtime 12.1 et versions précédentes :posexplodepeut uniquement être placé dans la listeSELECTen tant que racine d’une expression ou à la suite d’un LATERAL VIEW. Lorsque vous placez la fonction dans la listeSELECT, il ne doit pas y avoir une autre fonction de générateur dans la même listeSELECTsinon UNSUPPORTED_GENERATOR.MULTI_GENERATOR est déclenché.S’applique à :
Databricks SQL
Databricks Runtime 12.2 LTS et versions ultérieures :L'invocation à partir de la clause LATERAL VIEW ou de la liste
SELECTest déconseillée. En lieu et place, appelezposexplodeen tant que table_reference.
Exemples
S’applique à :
Databricks Runtime 12.1 et versions précédentes :
> SELECT posexplode(array(10, 20)) AS elem, 'Spark';
0 10 Spark
1 20 Spark
> SELECT posexplode(map(1, 'a', 2, 'b')) AS (num, val), 'Spark';
0 1 a Spark
1 2 b Spark
> SELECT posexplode(array(1, 2)), posexplode(array(3, 4));
Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR
S’applique à :
Databricks SQL
Databricks Runtime 12.2 LTS et versions ultérieures :
> SELECT pos, col FROM posexplode(array(10, 20));
0 10
1 20
> SELECT pos, key, value FROM posexplode(map(10, 'a', 20, 'b'));
0 10 a
1 22 b
> SELECT p1.*, p2.* FROM posexplode(array(1, 2)) AS p1, posexplode(array(3, 4)) AS p2;
0 1 0 3
0 1 1 4
1 2 0 3
1 2 1 4
-- Using lateral correlation in Databricks 12.2 and above
> SELECT p1.*, p2.* FROM posexplode(array(1, 2)) AS p1, LATERAL posexplode(array(3 * p1.col, 4 * p1.col)) AS p2;
0 1 0 3
0 1 1 4
1 2 0 6
1 2 1 8
Fonctions connexes
-
explodeFonction génératrice de valeurs tabulaires -
explode_outerFonction génératrice de valeurs tabulaires -
inlineFonction génératrice de valeurs tabulaires -
inline_outerFonction génératrice de valeurs tabulaires -
posexplode_outerFonction génératrice de valeurs tabulaires -
stackFonction génératrice de valeurs tabulaires