다음을 통해 공유


테이블 형식 생성기 함수 inline_outer

적용 대상:예로 표시된 확인 Databricks SQL 예로 표시된 확인 Databricks Runtime

구조체 배열을 OUTER 의미 체계가 있는 테이블로 분해합니다.

Databricks Runtime 16.1 및 그 이상 버전에서 이 함수는 명명된 매개변수 호출을 지원합니다.

구문

inline_outer(input)

인수

  • input: ARRAY < STRUCT > 식입니다.

배열 input구조체 요소의 필드로 구성된 행 집합입니다. inline에 의해 생성된 열은 필드의 이름입니다.

inputNULL인 경우, 각 열에 대해 NULL가 있는 단일 행이 생성됩니다.

  • 적용 대상:예로 표시된 확인 Databricks Runtime 12.1 이하:

    식의 루트로서 또는 LATERAL VIEW뒤에 SELECT 목록에만 inline_outer을 배치할 수 있습니다. 함수를 SELECT 목록에 배치할 때 동일한 SELECT 목록에 다른 생성기 함수가 없어야 하며, 그렇지 않으면 UNSUPPORTED_GENERATOR.MULTI_GENERATOR 오류가 발생합니다.

  • check marked yes적용 대상: Databricks SQL Databricks Runtime 12.2 LTS 이상:예로 표시된 확인

    LATERAL VIEW 절 또는 SELECT 목록의 호출은 더 이상 사용되지 않습니다. 대신 table_reference 호출 inline_outer합니다.

예제

적용 대상:예로 표시된 확인 Databricks Runtime 12.1 이하:

> SELECT inline_outer(array(struct(1, 'a'), struct(2, 'b'))), 'Spark SQL';
 1  a Spark SQL
 2  b Spark SQL

> SELECT inline_outer(array(struct(1, 'a'), struct(1, 'b'))),
         inline_outer(array(struct('c', 1.0), struct('d', 2.0))),
         'Spark SQL';
 1  a Spark SQL
 2  b Spark SQL
Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR

check marked yes적용 대상: Databricks SQL Databricks Runtime 12.2 LTS 이상:예로 표시된 확인

> SELECT i.*, 'Spark SQL'
    FROM inline_outer(array(struct(1, 'a'), struct(2, 'b'))) AS i;
 1  a Spark SQL
 2  b Spark SQL

> SELECT i1.*, i2.*, 'Spark SQL'
   FROM  inline_outer(array(struct(1, 'a'), struct(1, 'b'))) AS i1,
         inline_outer(array(struct('c', 1.0), struct('d', 2.0))) AS i2;
 1      a       c       1.0     Spark SQL
 1      b       c       1.0     Spark SQL
 1      a       d       2.0     Spark SQL
 1      b       d       2.0     Spark SQL