다음을 통해 공유


posexplode table-valued 생성기 함수

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

위치 번호를 매기며 expr을 중첩 해제하여 set개의 행을 반환합니다.

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

구문

posexplode(collection)

인수

  • collection: 식 ARRAY 입니다 MAP .

반품

배열의 위치와 요소 또는 맵의 키와 values로 구성된 set 행. 배열의 posexplode에 의해 생성된 columns은 poscol로 이름이 붙여집니다. 맵의 columns는 pos, keyvalue라고 불립니다.

행이 collection 생성되지 않는 경우 NULL

예제

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

> SELECT posexplode(array(10, 20)) AS elem, 'Spark';
 0  10 Spark
 1  20 Spark

> SELECT posexplode(map(1, 'a', 2, 'b')) AS (num, val), 'Spark';
 0  1   a   Spark
 1  2   b   Spark

> SELECT posexplode(array(1, 2)), posexplode(array(3, 4));
  Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR

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

> SELECT pos, col FROM posexplode(array(10, 20));
 0  10
 1  20

> SELECT pos, key, value FROM posexplode(map(10, 'a', 20, 'b'));
 0  10   a
 1  22   b

> SELECT p1.*, p2.* FROM posexplode(array(1, 2)) AS p1, posexplode(array(3, 4)) AS p2;
 0  1  0  3
 0  1  1  4
 1  2  0  3
 1  2  1  4

-- Using lateral correlation in Databricks 12.2 and above
> SELECT p1.*, p2.* FROM posexplode(array(1, 2)) AS p1, LATERAL posexplode(array(3 * p1.col, 4 * p1.col)) AS p2;
 0      1  0  3
 0      1  1  4
 1      2  0  6
 1      2  1  8