Udostępnij za pośrednictwem


posexplode_outer funkcja generatora wartości tabeli

Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak 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 NULLto , pojedynczy wiersz z NULLs dla tablicy lub wartości mapy.

  • Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks Runtime 12.1 i starsze:

    posexplode_outer Można umieścić na SELECT liście tylko jako element główny wyrażenia lub po WIDOKU LATERAL. Podczas umieszczania funkcji na SELECT liście nie może istnieć żadna inna funkcja generatora na tej samej SELECT liście lub UNSUPPORTED_GENERATOR. MULTI_GENERATOR jest podniesiona .

  • Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak 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: zaznacz pole wyboru oznaczone jako tak 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: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak 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