explode
funkce generátoru vracející hodnoty tabulky
Platí pro: Databricks SQL
Databricks Runtime
Vrátí sadu řádků rozbalením vnoření collection
.
V Databricks SQL a Databricks Runtime 13.3 LTS a vyšší podporuje volání pojmenovaných parametrů.
Syntaxe
explode(collection)
Argumenty
-
collection
: AnARRAY
neboMAP
expression.
Návraty
Sada řádků složená z prvků pole nebo klíčů a hodnot mapy.
Sloupec vytvořený prvkem explode
pole se nazývá col
.
Sloupce mapy se nazývají key
a value
.
Pokud collection
nejsou NULL
vytvořeny žádné řádky. Pro vrácení jednoho řádku s hodnotami NULL
pro pole nebo mapy použijte funkci explode_outer().
Platí pro:
Databricks Runtime 12.1 a starší:
explode
lze umístit pouze do seznamuSELECT
jako kořen výrazu nebo za LATERAL VIEW. Při umístění funkce do seznamuSELECT
nesmí být ve stejném seznamuSELECT
nebo žádná jiná generátorová funkce, jinak je vyvolána chyba UNSUPPORTED_GENERATOR.MULTI_GENERATOR.Platí pro:
Databricks SQL
Databricks Runtime 12.2 LTS a vyšší:
Vyvolání z klauzule LATERAL VIEW nebo seznamu
SELECT
je zastaralé. Místo toho se vyvoláexplode
jako table_reference.
Příklady
Platí pro: Databricks SQL
Databricks Runtime 12.1 a starší:
> 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
Platí pro: Databricks SQL
Databricks Runtime 12.2 LTS a vyšší:
> 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
Související funkce
- explode_outer funkce generátoru s hodnotami tabulky
- funkce generátoru s hodnotami tabulky posexplode
- posexplode_outer funkce generátoru s hodnotami tabulky
- vložená funkce generátoru tabulkové hodnoty
- inline_outer funkce generátoru s hodnotami tabulky