적용 대상:
Databricks SQL
Databricks Runtime
expr1, …, exprN을 numRows개 행으로 구분합니다.
구문
stack(numRows, expr1 [, ...] )
인수
-
numRowsINTEGER: 생성된 행 수를 지정하는 0보다 큰 리터럴입니다. -
exprN: 모든 형식의 식입니다. 임의exprN의 형식은expr(N+numRows)의 형식과 일치해야 합니다.
반품
이 함수로 생성된 numRows 행 집합은 max(1, (N/numRows)) 열을 포함합니다.
불완전한 행은 NULLs로 채워집니다.
기본적으로 생성된 열의 이름은 col0, … col(n-1).입니다.
stack는 VALUES 조항과 동등합니다.
적용 대상:
Databricks Runtime 12.1 및 이전 버전:stack는 식의 뿌리로서 또는SELECT뒤에 오는 경우에만 LATERAL VIEW 목록에 배치할 수 있습니다. 함수를SELECT목록에 배치할 때 동일한SELECT목록에 다른 생성기 함수가 없어야 하며, 그렇지 않으면 UNSUPPORTED_GENERATOR.MULTI_GENERATOR가 발생합니다.적용 대상:
Databricks SQL
Databricks Runtime 12.2 LTS 이상:LATERAL VIEW 절 또는
SELECT목록의 호출은 더 이상 사용되지 않습니다. 대신stack를 테이블_참조로 호출합니다.
예제
적용 대상:
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