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
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)
.
stack
jest odpowiednikiem klauzuli VALUES
.
Dotyczy:
Databricks Runtime 12.1 i starsze:
stack
można umieścić tylko na liścieSELECT
jako korzeń wyrażenia lub po LATERAL VIEW. Podczas umieszczania funkcji na liścieSELECT
nie może istnieć żadna inna funkcja generująca na tej samej liścieSELECT
, w przeciwnym razie zostaje zgłoszony UNSUPPORTED_GENERATOR.MULTI_GENERATOR.Dotyczy:
Databricks SQL
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: 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