explode_outer
table-waardegeneratorfunctie
Van toepassing op: Databricks SQL Databricks Runtime
Retourneert een set rijen door collection
te ontnesten met behulp van buitenste semantiek.
In Databricks SQL en Databricks Runtime 13.3 LTS en hoger ondersteunt deze functie benoemde parametertoeroepen.
Syntaxis
explode_outer(collection)
Argumenten
-
collection
: EenARRAY
ofMAP
expressie.
Retouren
Een set rijen die bestaan uit de elementen van de matrix of de sleutels en values van de kaart.
De column geproduceerd door explode_outer
van een matrix heeft de naam col
.
De columns voor een kaart worden key
en value
genoemd.
Als collection
is NULL
één rij met NULL
s voor de matrix of kaart values wordt geproduceerd.
Als u geen rijen wilt retourneren wanneer collection
NULL
u de functie explode() gebruikt.
Van toepassing op: Databricks Runtime 12.1 en eerder:
explode_outer
kan alleen in deSELECT
list worden geplaatst als de basis van een expressie of na een LATERAL VIEW. Bij het plaatsen van de functie in deSELECT
list mag er geen andere generatorfunctie aanwezig zijn in dezelfdeSELECT
list of , anders wordt UNSUPPORTED_GENERATOR.MULTI_GENERATOR opgeroepen.Van toepassing op: Databricks SQL Databricks Runtime 12.2 LTS en hoger:
Aanroep van de LATERAL VIEW clausule of de
SELECT
list is verouderd verklaard. Roep in plaats daarvanexplode_outer
aan als een table_reference.
Voorbeelden
Van toepassing op: Databricks Runtime 12.1 en eerder:
> 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
Van toepassing op: Databricks SQL Databricks Runtime 12.2 LTS en hoger:
> 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