explode_outer
generatorfunctie met tabelwaarde
Van toepassing op: Databricks SQL Databricks Runtime
Retourneert een set rijen door nesten op te collection
heffen 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 waarden van de kaart.
De kolom die door explode_outer
een matrix wordt geproduceerd, heeft de naam col
.
De kolommen voor een kaart worden aangeroepen key
en value
.
Als collection
één NULL
rij met NULL
s voor de matrix- of kaartwaarden wordt geproduceerd.
Van toepassing op: Databricks Runtime 12.1 en eerder:
explode_outer
kan alleen in deSELECT
lijst worden geplaatst als hoofdmap van een expressie of na een LATERALE WEERGAVE. Wanneer u de functie in deSELECT
lijst plaatst, mag er geen andere generatorfunctie in dezelfdeSELECT
lijst of UNSUPPORTED_GENERATOR zijn. MULTI_GENERATOR wordt opgevoed.Van toepassing op: Databricks SQL Databricks Runtime 12.2 LTS en hoger:
Aanroep vanuit de COMPONENT LATERAL VIEW of de
SELECT
lijst is afgeschaft. 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
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