stack
funkcja generatora wartości tabeli
Dotyczy: Databricks SQL 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 dowolnegoexprN
elementu musi być zgodny z typemexpr(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)
.
stack
jest odpowiednikiem klauzuli VALUES
.
Dotyczy: Databricks Runtime 12.1 i starsze:
stack
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ćstack
jako table_reference.
Przykłady
Dotyczy: 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: Databricks SQL 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