posexplode_outer
funkcja generatora wartości tabeli
Dotyczy: Databricks SQL Databricks Runtime
Zwraca wiersze, usuwając zagnieżdżanie tablicy z numerowaniem pozycji przy użyciu OUTER
semantyki.
Składnia
posexplode_outer(expr)
Argumenty
expr
: wyrażenie ARRAY lub MAP.
Zwraca
Zestaw wierszy składający się z pozycji i elementów tablicy lub kluczy i wartości mapy.
Kolumny generowane przez posexplode_outer
tablicę mają nazwy pos
i col
.
Kolumny mapy są nazywane pos
, key
i value
.
Jeśli expr
jest NULL
to , pojedynczy wiersz z NULLs dla tablicy lub wartości mapy.
Dotyczy: Databricks Runtime 12.1 i starsze:
posexplode_outer
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_outer
jako table_reference.
Przykłady
Dotyczy: Databricks Runtime 12.1 i starsze:
> SELECT posexplode_outer(array(10, 20)) AS elem, 'Spark';
0 10 Spark
1 20 Spark
> SELECT posexplode_outer(map(1, 'a', 2, 'b')) AS (num, val), 'Spark';
0 1 a Spark
1 2 b Spark
> SELECT posexplode_outer(array(1, 2)), posexplode_outer(array(3, 4));
Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR
Dotyczy: Databricks SQL Databricks Runtime 12.2 LTS i nowsze:
> SELECT pos, col FROM posexplode_outer(array(10, 20));
0 10
1 20
> SELECT pos, key, value FROM posexplode_outer(map(10, 'a', 20, 'b'));
0 10 a
1 22 b
> SELECT p1.*, p2.* FROM posexplode_outer(array(1, 2)) AS p1, posexplode_outer(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_outer(array(1, 2)) AS p1, LATERAL posexplode_outer(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