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

  • numRowsINTEGER: 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 , który zawiera max(1, (N/numRows)) kolumny utworzone 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ć 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ć 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