stack
generatorfunctie met tabelwaarde
Van toepassing op: Databricks SQL Databricks Runtime
expr1
Scheidt , ..., exprN
in numRows
rijen.
Syntaxis
stack(numRows, expr1 [, ...] )
Argumenten
numRows
: EenINTEGER
letterlijke waarde groter dan 0 die het aantal geproduceerde rijen aangeeft.exprN
: Een expressie van elk type. Het type van een van dezeexprN
moet overeenkomen met het typeexpr(N+numRows)
.
Retouren
Een set numRows
rijen die kolommen bevat max(1, (N/numRows))
die door deze functie worden geproduceerd.
Een onvolledige rij wordt opgevuld met NULL
s.
De geproduceerde kolommen hebben standaard de naam col0, … col(n-1)
.
stack
is gelijk aan de VALUES
component.
Van toepassing op: Databricks Runtime 12.1 en eerder:
stack
kan alleen in deSELECT
lijst worden geplaatst als hoofdmap van een expressie of na een LATERALE WEERGAVE. Wanneer u de functie in deSELECT
lijst plaatst, mag er geen andere generatorfunctie in dezelfdeSELECT
lijst of UNSUPPORTED_GENERATOR zijn. MULTI_GENERATOR wordt opgevoed.Van toepassing op: Databricks SQL Databricks Runtime 12.2 LTS en hoger:
Aanroep vanuit de COMPONENT LATERAL VIEW of de
SELECT
lijst is afgeschaft. Roep in plaats daarvanstack
aan als een table_reference.
Voorbeelden
Van toepassing op: Databricks Runtime 12.1 en eerder:
> 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
Van toepassing op: Databricks SQL Databricks Runtime 12.2 LTS en hoger:
> 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