explode
generatorfunctie met tabelwaarde
Van toepassing op: Databricks SQL Databricks Runtime
Retourneert een set rijen door het nesten op te heffen collection
.
In Databricks SQL en Databricks Runtime 13.3 LTS en hoger ondersteunt deze functie benoemde parametertoeroepen.
Syntaxis
explode(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
een matrix wordt geproduceerd, heeft de naam col
.
De kolommen voor een kaart worden aangeroepen key
en value
.
Als collection
er NULL
geen rijen worden geproduceerd.
Van toepassing op: Databricks Runtime 12.1 en eerder:
explode
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
aan als een table_reference.
Voorbeelden
Van toepassing op: Databricks SQL Databricks Runtime 12.1 en eerder:
> 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
Van toepassing op: Databricks SQL Databricks Runtime 12.2 LTS en hoger:
> 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