다음을 통해 공유


stack 테이블 값 생성기 함수

적용 대상:체크 마크 예 Databricks SQL 체크 마크 예 Databricks Runtime

expr1, …, exprNnumRows개 행으로 구분합니다.

구문

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

인수

  • numRows INTEGER: 생성된 행 수를 지정하는 0보다 큰 리터럴입니다.
  • exprN: 모든 형식의 식입니다. 임의 exprN의 형식은 expr(N+numRows)의 형식과 일치해야 합니다.

반품

이 함수로 생성된 numRows 행 집합은 max(1, (N/numRows)) 열을 포함합니다. 불완전한 행은 NULLs로 채워집니다.

기본적으로 생성된 열의 이름은 col0, … col(n-1).입니다.

stackVALUES 조항과 동등합니다.

  • 적용 대상:체크 표시된 예 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