Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:
Databricks SQL
Databricks Runtime
Returnerar en uppsättning rader genom av-nestning av collection.
I Databricks SQL och Databricks Runtime 13.3 LTS och senare stöder den här funktionen namngivna parameteranrop.
Syntax
explode(collection)
Argumenten
-
collection: EttARRAYellerMAPuttryck.
Returer
En uppsättning rader som består av elementen i matrisen eller nycklarna och värdena för kartan.
Kolumnen som skapas av explode för en matris heter col.
Kolumnerna för en karta kallas key och value.
Om collection är NULL skapas inga rader. För att returnera en enskild rad med NULLför matris- eller mappvärden använder du funktionen explode_outer().
Gäller för:
Databricks Runtime 12.1 och tidigare:explodekan bara placeras i listanSELECTsom rot för ett uttryck eller efter en LATERAL VIEW. När du placerar funktionen iSELECT-listan får det inte finnas någon annan generatorfunktion i sammaSELECT-lista, eller så höjs UNSUPPORTED_GENERATOR.MULTI_GENERATOR.Gäller för:
Databricks SQL
Databricks Runtime 12.2 LTS och senare:Anrop från LATERAL VIEW-satsen eller
SELECT-listan är föråldrat. Anropaexplodei stället som en table_reference.
Exempel
Gäller för:
Databricks SQL
Databricks Runtime 12.1 och tidigare:
> 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
Gäller för:
Databricks SQL
Databricks Runtime 12.2 LTS och senare:
> 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