posexplode
funkcja generatora wartości tabeli
Dotyczy: Databricks SQL Databricks Runtime
Zwraca zestaw wierszy przez anulowanie zagnieżdżania z numerowaniem expr
pozycji.
W środowisku Databricks Runtime 16.1 lub nowszym ta funkcja obsługuje wywołanie parametru o nazwie .
Składnia
posexplode(collection)
Argumenty
-
collection
: wyrażenieARRAY
lubMAP
.
Zwraca
Zestaw wierszy składający się z pozycji i elementów tablicy lub kluczy i wartości mapy.
Kolumny generowane przez posexplode
tablicę mają nazwy pos
i col
.
Kolumny mapy są nazywane pos
, key
i value
.
Jeśli collection
nie są NULL
generowane żadne wiersze.
Dotyczy: Databricks Runtime 12.1 i starsze:
posexplode
Można umieścić naSELECT
liście tylko jako element główny wyrażenia lub po WIDOKU LATERAL. Podczas umieszczania funkcji naSELECT
liście nie może istnieć żadna inna funkcja generatora na tej samejSELECT
liście lub UNSUPPORTED_GENERATOR. MULTI_GENERATOR jest podniesiona .Dotyczy: Databricks SQL Databricks Runtime 12.2 LTS i nowsze:
Wywołanie z klauzuli LATERAL VIEW lub
SELECT
lista jest przestarzała. Zamiast tego należy wywołaćposexplode
jako table_reference.
Przykłady
Dotyczy: Databricks Runtime 12.1 i starsze:
> 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
Dotyczy: Databricks SQL Databricks Runtime 12.2 LTS i nowsze:
> 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