Udostępnij za pośrednictwem


stack funkcja generatora wartości tabeli

Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime

Oddziela expr1, ..., exprN na numRows wiersze.

Składnia

stack(numRows, expr1 [, ...] )

Argumenty

  • numRows INTEGER: literał większy niż 0 określający liczbę utworzonych wierszy.
  • exprN: wyrażenie dowolnego typu. Typ dowolnego exprN elementu musi być zgodny z typem expr(N+numRows).

Zwraca

Zestaw wierszy numRows zawierający kolumny max(1, (N/numRows)) generowane przez tę funkcję. Niekompletny wiersz jest wypełniony s NULL.

Domyślnie utworzone kolumny mają nazwę col0, … col(n-1).

stackjest odpowiednikiem klauzuli VALUES.

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

    stack można umieścić tylko na liście SELECT jako korzeń wyrażenia lub po LATERAL VIEW. Podczas umieszczania funkcji na liście SELECT nie może istnieć żadna inna funkcja generująca na tej samej liście SELECT, w przeciwnym razie zostaje zgłoszony 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:

    Wywołanie z klauzuli LATERAL VIEW lub z listy SELECT jest przestarzałe. Zamiast tego należy wywołać stack jako table_reference.

Przykłady

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

> SELECT 'hello', stack(2, 1, 2, 3) AS (first, second), 'world';
 hello 1  2    world
 hello 3  NULL world

> SELECT 'hello', stack(2, 1, 2, 3) AS (first, second), stack(2, 'a', 'b') AS (third) 'world';
 Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR

-- Equivalent usage of VALUES
> SELECT 'hello', s1.*, s2.*, 'world'
    FROM VALUES(1, 2), (3, NULL) AS s1(first, second),
         VALUES('a'), ('b') AS s2(third);
 hello  1   2       a   world
 hello  3   NULL    a   world
 hello  1   2       b   world
 hello  3   NULL    b   world

Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 12.2 LTS i nowsze:

> SELECT 'hello', s.*, 'world'
    FROM stack(2, 1, 2, 3) AS s(first, second);
 hello 1  2    world
 hello 3  NULL world

> SELECT 'hello', s1.*, s2.*, 'world'
    FROM stack(2, 1, 2, 3) AS s1(first, second),
         stack(2, 'a', 'b') AS s2(third);
  hello 1  2    a  world
  hello 3  NULL a  world
  hello 1  2    b  world
  hello 3  NULL b  world