Fonction de générateur table explode_outer
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 expressionARRAY
ouMAP
.
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.
S’applique à :
Databricks Runtime 12.1 et versions précédentes :
explode_outer
peut uniquement être placé dans la listeSELECT
en tant que racine d’une expression ou après 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 listeSELECT
sinon UNSUPPORTED_GENERATOR.MULTI_GENERATOR est déclenché.S’applique à :
Databricks SQL
Databricks Runtime 12.2 LTS et versions ultérieures :
L’appel à partir de la clause LATERAL VIEW ou de la liste
SELECT
est déconseillé. En lieu et place, appelezexplode_outer
en 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
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
Fonctions connexes
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour