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 dés imbrication collection.
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(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 d’un tableau est nommée col.
Les colonnes d’un mappage sont appelées key et value.
Si collection est NULL, aucune ligne n’est générée. Pour renvoyer une seule ligne avec NULLdes valeurs de tableau ou de mappage, utilisez la fonction explode_outer().
S’applique à :
Databricks Runtime 12.1 et versions précédentes :explodene peut être placé dans laSELECTliste que comme racine d’une expression ou après 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 la
SELECTliste est déconseillé. En lieu et place, appelezexplodeen tant que table_reference.
Exemples
S’applique à :
Databricks SQL
Databricks Runtime 12.1 et versions antérieures :
> SELECT explode(array(10, 20)) AS elem, 'Spark';
10 Spark
20 Spark
> SELECT explode(map(1, 'a', 2, 'b')) AS (num, val), 'Spark';
1 a Spark
2 b Spark
> SELECT explode(array(1, 2)), explode(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(array(10, 20)) AS t(elem);
10 Spark
20 Spark
> SELECT num, val, 'Spark' FROM explode(map(1, 'a', 2, 'b')) AS t(num, val);
1 a Spark
2 b Spark
> SELECT * FROM explode(array(1, 2)), explode(array(3, 4));
1 3
1 4
2 3
2 4
-- Using lateral correlation in Databricks 12.2 and above
> SELECT * FROM explode(array(1, 2)) AS t, LATERAL explode(array(3 * t.col, 4 * t.col));
1 3
1 4
2 6
2 8