Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:
SQL do Databricks
Runtime do Databricks
Separa expr1, …, exprN em numRows linhas.
Sintaxe
stack(numRows, expr1 [, ...] )
Argumentos
-
numRows: mUINTEGERliteral maior que 0 especificando o número de linhas produzidas. -
exprN: uma expressão de qualquer tipo. O tipo de qualquerexprNdeve corresponder ao tipo deexpr(N+numRows).
Retornos
Um conjunto de numRows linhas que inclui max(1, (N/numRows)) colunas produzidas por essa função.
Uma linha incompleta é preenchida com NULLs.
Por padrão, as colunas produzidas são nomeadas col0, … col(n-1).
stack é equivalente à VALUEScláusula.
Aplica-se a:
Databricks Runtime 12.1 e versões anteriores:stacksó pode ser colocado naSELECTlista como a raiz de uma expressão ou seguindo um LATERAL VIEW. Ao colocar a função na listaSELECT, não deve haver nenhuma outra função de gerador na mesma listaSELECTou um UNSUPPORTED_GENERATOR. MULTI_GENERATOR será gerado.Aplica-se a:
SQL do Databricks
Databricks Runtime 12.2 LTS e superior:A invocação da LATERAL VIEW cláusula ou da
SELECTlista está obsoleta. Em vez disso, invoquestackcomo uma table_reference.
Exemplos
Aplica-se a:
Databricks Runtime 12.1 e versões 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
Aplica-se a:
SQL do Databricks
Databricks Runtime 12.2 LTS e superior:
> 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