stack
(función de generador con valores de tabla)
Se aplica a Databricks SQL Databricks Runtime
Separa expr1
, …, exprN
en numRows
filas.
Sintaxis
stack(numRows, expr1 [, ...] )
Argumentos
numRows
: un literal deINTEGER
mayor que 0 que especifica el número de filas generadas.exprN
: una expresión de cualquier tipo. El tipo de cualquierexprN
debe coincidir con el tipo deexpr(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 NULL
s.
De forma predeterminada, las columnas producidas se denominan col0, … col(n-1)
.
stack
es equivalente a la cláusula VALUES
.
Se aplica a Databricks Runtime 12.1 y versiones posteriores:
stack
solo se puede colocar en la listaSELECT
como la raíz de una expresión o después de una VISTA LATERAL. Al colocar la función en la listaSELECT
, no debe haber ninguna otra función generadora en la misma listaSELECT
o se genera UNSUPPORTED_GENERATOR. MULTI_GENERATOR.Se aplica a Databricks SQL 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, invocastack
como un table_reference.
Ejemplos
Se aplica a: Databricks Runtime 12.1 y versiones anteriores:
> 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 Databricks SQL 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
Funciones relacionadas
- explode (función generadora con valores de tabla)
- explode_outer (función de generador con valores de tabla)
- inline (función de generador con valores de tabla)
- inline_outer (función de generador con valores de tabla)
- posexplode_outer (función de generador con valores de tabla)
- posexplode (función de generador con valores de tabla)