Megosztás a következőn keresztül:


stack táblaértékű generátorfüggvény

A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime

Szétválasztja expr1, …, exprNnumRows sorokra.

Szintaxis

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

Argumentumok

  • numRows INTEGER: 0-nál nagyobb literál, amely a létrehozott sorok számát határozza meg.
  • exprN: Bármilyen típusú kifejezés. Az egyik exprN típusának meg kell egyeznie a típusával expr(N+numRows).

Visszaküldések

A függvény által létrehozott numRows oszlopokat tartalmazó max(1, (N/numRows)) sorkészlet. Egy hiányos sor NULL karakterekkel van kitöltve.

Alapértelmezés szerint a létrehozott oszlopok neve col0, … col(n-1).

stack egyenértékű a VALUES záradékkal.

  • A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 12.1 és korábbi verziók:

    stack csak kifejezés gyökereként vagy egy SELECTkövetésével helyezhető el a LATERAL VIEW listában. Ha a függvényt a SELECT listába helyezi el, nem lehet más generátorfüggvény ugyanabban a SELECT listában, különben keletkezik a UNSUPPORTED_GENERATOR.MULTI_GENERATOR hiba.

  • A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 12.2 LTS és újabb:

    A LATERAL VIEW záradék vagy a SELECT lista hivatkozása elavult. Ehelyett hívjon meg stack table_reference.

Példák

A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 12.1 és korábbi verziók:

> 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

A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 12.2 LTS és újabb:

> 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