适用于:
 Databricks SQL 
 Databricks Runtime
将 expr1 … exprN 分隔成 numRows 行。
语法
stack(numRows, expr1 [, ...] )
参数
- 
              
numRows:一个大于 0 的INTEGER字面量,指定生成的行数。 - 
              
exprN:一个任意类型的表达式。 任何exprN的类型必须与expr(N+numRows)的类型匹配。 
返回
              numRows 行集,其中包含此函数生成的 max(1, (N/numRows)) 列。
不完整的行将以 NULL 填充。
默认情况下,生成的列命名为 col0, … col(n-1)。
              stack 等效于 VALUES 子句。
适用于:
 Databricks Runtime 12.1 及更早版本:stack只能作为表达式的根或跟在SELECT之后放入 列表中。 将该函数放入SELECT列表中时,同一个SELECT列表中不得有其他生成器函数,否则会引发 UNSUPPORTED_GENERATOR.MULTI_GENERATOR。适用于:
 Databricks SQL 
 Databricks Runtime 12.2 LTS 及更高版本:从 LATERAL VIEW 子句或
SELECT列表调用的语法已弃用。 请改为将stack作为 table_reference 调用。
示例
              适用于:
 Databricks Runtime 12.1 及更早版本:
> 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
              适用于:
 Databricks SQL 
 Databricks Runtime 12.2 LTS 及更高版本:
> 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