posexplode
funkce generátoru s tabulkovými hodnotami
Platí pro: Databricks SQL Databricks Runtime
Vrátí sadu řádků rozbalením expr
s očíslováním pozic.
Ve verzích Databricks Runtime 16.1 a novějších tato funkce podporuje volání pojmenovaných parametrů.
Syntaxe
posexplode(collection)
Argumenty
-
collection
: AnARRAY
neboMAP
expression.
Návraty
Sada řádků složená z pozice a prvků pole nebo klíčů a hodnot mapy.
Sloupce vytvořené polem posexplode
se nazývají pos
a col
.
Sloupce mapy se nazývají pos
, key
a value
.
Pokud collection
nejsou NULL
vytvořeny žádné řádky.
Platí pro: Databricks Runtime 12.1 a starší:
posexplode
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
žádná jiná generátorová funkce, jinak se vyvolá chyba UNSUPPORTED_GENERATOR.MULTI_GENERATOR.Platí pro: Databricks SQL Databricks Runtime 12.2 LTS a vyšší:
Vyvolání z klauzule LATERAL VIEW nebo či ze seznamu
SELECT
je zastaralé. Místo toho se vyvoláposexplode
jako table_reference.
Příklady
Platí pro: Databricks Runtime 12.1 a starší:
> SELECT posexplode(array(10, 20)) AS elem, 'Spark';
0 10 Spark
1 20 Spark
> SELECT posexplode(map(1, 'a', 2, 'b')) AS (num, val), 'Spark';
0 1 a Spark
1 2 b Spark
> SELECT posexplode(array(1, 2)), posexplode(array(3, 4));
Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR
Platí pro: Databricks SQL Databricks Runtime 12.2 LTS a vyšší:
> SELECT pos, col FROM posexplode(array(10, 20));
0 10
1 20
> SELECT pos, key, value FROM posexplode(map(10, 'a', 20, 'b'));
0 10 a
1 22 b
> SELECT p1.*, p2.* FROM posexplode(array(1, 2)) AS p1, posexplode(array(3, 4)) AS p2;
0 1 0 3
0 1 1 4
1 2 0 3
1 2 1 4
-- Using lateral correlation in Databricks 12.2 and above
> SELECT p1.*, p2.* FROM posexplode(array(1, 2)) AS p1, LATERAL posexplode(array(3 * p1.col, 4 * p1.col)) AS p2;
0 1 0 3
0 1 1 4
1 2 0 6
1 2 1 8