stack
Funzione generatore con valori di tabella
Si applica a: Databricks SQL Databricks Runtime
Separa expr1
, ..., exprN
in numRows
righe.
Sintassi
stack(numRows, expr1 [, ...] )
Argomenti
numRows
: valoreINTEGER
letterale maggiore di 0 che specifica il numero di righe generate.exprN
: espressione di qualsiasi tipo. Il tipo di qualsiasiexprN
oggetto deve corrispondere al tipo diexpr(N+numRows)
.
Valori restituiti
Set di numRows
righe che include max(1, (N/numRows))
colonne prodotte da questa funzione.
Una riga incompleta viene riempita con NULL
s.
Per impostazione predefinita, le colonne prodotte sono denominate col0, … col(n-1)
.
stack
equivale alla VALUES
clausola .
Si applica a: Databricks Runtime 12.1 e versioni precedenti:
stack
può essere inserito nell'elencoSELECT
solo come radice di un'espressione o dopo una VISUALIZZAZIONE LATERALE. Quando si inserisce la funzione nell'elencoSELECT
non deve essere presente alcuna altra funzione generatore nello stessoSELECT
elenco o UNSUPPORTED_GENERATOR. MULTI_GENERATOR viene generato.Si applica a: Databricks SQL Databricks Runtime 12.2 LTS e versioni successive:
La chiamata dalla clausola LATERAL VIEW o dall'elenco
SELECT
è deprecata. Richiamarestack
invece come table_reference.
Esempi
Si applica a: Databricks Runtime 12.1 e versioni precedenti:
> 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
Si applica a: Databricks SQL Databricks Runtime 12.2 LTS e versioni successive:
> 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
Funzioni correlate
- esplodere la funzione generatore con valori di tabella
- explode_outer funzione generatore con valori di tabella
- Funzione generatore inline con valori di tabella
- inline_outer funzione generatore con valori di tabella
- posexplode_outer funzione generatore con valori di tabella
- funzione generatore posexplode con valori di tabella