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 de table
S’applique à :
Databricks SQL
Databricks Runtime
Retourne un ensemble de lignes en annulant l’imbrication de collection à l’aide d’une sémantique externe.
Dans Databricks SQL et Databricks Runtime 13.3 LTS et versions ultérieures, cette fonction prend en charge l’appel de paramètre nommé.
Syntaxe
explode_outer(collection)
Arguments
-
collection: Une expressionARRAYouMAP.
Retours
Ensemble de lignes composées des éléments du tableau ou des clés et des valeurs du mappage.
La colonne produite par explode_outer d’un tableau est nommée col.
Les colonnes d’un mappage sont appelées key et value.
Si collection est NULL, une seule ligne est produite avec des valeurs NULL pour les valeurs du tableau ou du mappage.
Pour ne renvoyer aucune ligne lorsque collection est NULL, utilisez la fonction explode().
S’applique à :
Databricks Runtime 12.1 et versions précédentes :explode_outerne peut être placé que dans la listeSELECTcomme racine d’une expression ou en suivant 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’appel depuis la clause LATERAL VIEW ou depuis la liste
SELECTest déconseillé. En lieu et place, appelezexplode_outeren tant que table_reference.
Exemples
S’applique à :
Databricks Runtime 12.1 et versions précédentes :
> SELECT explode_outer(array(10, 20)) AS elem, 'Spark';
10 Spark
20 Spark
> SELECT explode_outer(collection => array(10, 20)) AS elem, 'Spark';
10 Spark
20 Spark
> SELECT explode_outer(map(1, 'a', 2, 'b')) AS (num, val), 'Spark';
1 a Spark
2 b Spark
> SELECT explode_outer(cast(NULL AS array<int>)), 'Spark';
NULL Spark
> SELECT explode_outer(array(1, 2)), explode_outer(array(3, 4));
Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR
-- The difference between explode() and explode_outer() is that explode_outer() returns NULL if the array is NULL.
> SELECT explode_outer(c1) AS elem, 'Spark' FROM VALUES(array(10, 20)), (null) AS T(c1);
10 Spark
20 Spark
NULL Spark
> SELECT explode(c1) AS elem, 'Spark' FROM VALUES(array(10, 20)), (null) AS T(c1);
10 Spark
20 Spark
S’applique à :
Databricks SQL
Databricks Runtime 12.2 LTS et versions ultérieures :
> SELECT elem, 'Spark' FROM explode_outer(array(10, 20)) AS t(elem);
10 Spark
20 Spark
> SELECT num, val, 'Spark' FROM explode_outer(map(1, 'a', 2, 'b')) AS t(num, val);
1 a Spark
2 b Spark
> SELECT * FROM explode_outer(array(1, 2)), explode_outer(array(3, 4));
1 3
1 4
2 3
2 4
> SELECT * FROM explode_outer(cast(NULL AS array<int>));
NULL
-- Using lateral correlation in Databricks 12.2 and above
> SELECT * FROM explode_outer(array(1, 2)) AS t, LATERAL explode_outer(array(3 * t.col, 4 * t.col));
1 3
1 4
2 6
2 8