stack Funzione generatore con valori di tabella

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime

expr1Separa , ..., exprN in numRows righe.

Sintassi

stack(numRows, expr1 [, ...] )

Argomenti

  • numRows: valore INTEGER letterale maggiore di 0 che specifica il numero di righe generate.
  • exprN: espressione di qualsiasi tipo. Il tipo di qualsiasi exprN oggetto deve corrispondere al tipo di expr(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 NULLs.

Per impostazione predefinita, le colonne prodotte sono denominate col0, … col(n-1).

stack equivale alla VALUES clausola .

  • Si applica a:segno di spunta sì Databricks Runtime 12.1 e versioni precedenti:

    stack può essere inserito nell'elenco SELECT solo come radice di un'espressione o dopo una VISUALIZZAZIONE LATERALE. Quando si inserisce la funzione nell'elenco SELECT non deve essere presente alcuna altra funzione generatore nello stesso SELECT elenco o UNSUPPORTED_GENERATOR. MULTI_GENERATOR viene generato.

  • Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime 12.2 LTS e versioni successive:

    La chiamata dalla clausola LATERAL VIEW o dall'elenco SELECT è deprecata. Richiamare stack invece come table_reference.

Esempi

Si applica a:segno di spunta sì 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:segno di spunta sì Databricks SQL segno di spunta sì 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