Compartir a través de


stack (función de generador con valores de tabla)

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

Separa expr1, …, exprN en numRows filas.

Sintaxis

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

Argumentos

  • numRows: un literal de INTEGER mayor que 0 que especifica el número de filas generadas.
  • exprN: una expresión de cualquier tipo. El tipo de cualquier exprN debe coincidir con el tipo de expr(N+numRows).

Devoluciones

Un conjunto de numRows filas que incluye max(1, (N/numRows)) columnas generadas por esta función. Se agrega una fila incompleta con NULLs.

De forma predeterminada, las columnas producidas se denominan col0, … col(n-1).

stack es equivalente a la cláusula VALUES.

  • Se aplica a:check marked yes Databricks Runtime 12.1 y versiones posteriores:

    stack solo se puede colocar en la lista SELECT como la raíz de una expresión o después de una VISTA LATERAL. Al colocar la función en la lista SELECT, no debe haber ninguna otra función generadora en la misma lista SELECT o se genera UNSUPPORTED_GENERATOR. MULTI_GENERATOR.

  • Se aplica a:casilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 12.2 LTS y versiones posteriores:

    La invocación de la cláusula LATERAL VIEW o la lista SELECT está en desuso. En su lugar, invoca stack como un table_reference.

Ejemplos

Se aplica a:casilla marcada como sí Databricks Runtime 12.1 y versiones posteriores:

> 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

Se aplica a:casilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 12.2 LTS y versiones posteriores:

> 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