Delen via


stack generatorfunctie met tabelwaarde

Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime

expr1Scheidt , ..., exprN in numRows rijen.

Syntaxis

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

Argumenten

  • numRows: Een INTEGER letterlijke waarde groter dan 0 die het aantal geproduceerde rijen aangeeft.
  • exprN: Een expressie van elk type. Het type van een van deze exprN moet overeenkomen met het type expr(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 NULLs.

De geproduceerde kolommen hebben standaard de naam col0, … col(n-1).

stack is gelijk aan de VALUES component.

  • Van toepassing op:vinkje als ja aan Databricks Runtime 12.1 en eerder:

    stack kan alleen in de SELECT lijst worden geplaatst als hoofdmap van een expressie of na een LATERALE WEERGAVE. Wanneer u de functie in de SELECT lijst plaatst, mag er geen andere generatorfunctie in dezelfde SELECT lijst of UNSUPPORTED_GENERATOR zijn. MULTI_GENERATOR wordt opgevoed.

  • Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 12.2 LTS en hoger:

    Aanroep vanuit de COMPONENT LATERAL VIEW of de SELECT lijst is afgeschaft. Roep in plaats daarvan stack aan als een table_reference.

Voorbeelden

Van toepassing op:vinkje als ja aan 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:vinkje als ja aan Databricks SQL vinkje als ja aan 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