Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Gilt für:
Databricks SQL
Databricks Runtime
Trennt expr1, ..., exprN in numRows Zeilen.
Syntax
stack(numRows, expr1 [, ...] )
Argumente
-
numRows: EinINTEGER-Literal größer als 0, das die Anzahl der generierten Zeilen angibt. -
exprN: Ein Ausdruck beliebigen Typs Der Typ von jedemexprN-Element muss mit dem Typ vonexpr(N+numRows)übereinstimmen.
Gibt zurück
Ein Satz von numRows-Zeilen, der max(1, (N/numRows)) von dieser Funktion erzeugte Spalten enthält.
Eine unvollständige Zeile wird mit NULL aufgefüllt.
Standardmäßig werden die generierten Spalten col0, … col(n-1) genannt.
stack ist identisch mit der VALUES-Klausel.
Gilt für:
Databricks Runtime 12.1 und höher:stackkann nur in derSELECT-Liste als Stamm eines Ausdrucks oder nach einer LATERAL VIEW-Klausel platziert werden. Beim Platzieren der Funktion in derSELECT-Liste darf keine andere Generatorfunktion in derselbenSELECT-Liste oder vorhanden sein, da ansonsten die Fehlermeldung UNSUPPORTED_GENERATOR.MULTI_GENERATOR ausgelöst wird.Gilt für:
Databricks SQL
Databricks Runtime 12.2 LTS und höher:Der Aufruf über die LATERAL VIEW-Klausel oder
SELECT-Liste ist veraltet. Rufen Sie stattdessenstackals table_reference auf.
Beispiele
Gilt für:
Databricks Runtime 12.1 und höher:
> 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
Gilt für:
Databricks SQL
Databricks Runtime 12.2 LTS und höher:
> 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
Zugehörige Funktionen
-
explodeFunktion zum Erzeugen von Tabellenwerten -
explode_outerFunktion zum Erzeugen von Tabellenwerten -
inlineFunktion zum Erzeugen von Tabellenwerten -
inline_outerFunktion zum Erzeugen von Tabellenwerten -
posexplode_outerFunktion zum Erzeugen von Tabellenwerten -
posexplodeFunktion zum Erzeugen von Tabellenwerten