중첩된 데이터 제한(미리 보기) - Amazon Redshift

중첩된 데이터 제한(미리 보기)

참고

다음 목록에서 (미리 보기)로 표시된 제한 사항은 다음 리전에서 생성된 미리 보기 클러스터 및 미리 보기 작업 그룹에만 적용됩니다.

  • 미국 동부(오하이오)(us-east-2)

  • 미국 동부(버지니아 북부)(us-east-1)

  • 미국 서부(캘리포니아 북부)(us-west-1)

  • 아시아 태평양(도쿄)(ap-northeast-1)

  • 유럽(아일랜드)(eu-west-1)

  • 유럽(스톡홀름)(eu-north-1)

미리 보기 클러스터 설정에 대한 내용은 Amazon Redshift 클러스터 관리 안내서의 미리 보기 클러스터 생성을 참조하세요. 미리 보기 작업 그룹을 설정하는 방법에 대한 내용은 Amazon Redshift 관리 안내서의 미리 보기 작업 그룹 만들기를 참조하세요.

중첩 데이터에는 다음과 같은 제약이 적용됩니다.

  • array 또는 map 유형에는 쿼리가 중첩된 arrays에 있거나 mapsscalar 값을 반환하지 않는 한 다른 array 또는 map 유형이 포함될 수 있습니다. (미리 보기)

  • Amazon Redshift Spectrum은 외부 테이블의 형태로만 복합 데이터 유형을 지원합니다.

  • 하위 쿼리 결과 열은 최상위 수준이어야 합니다. (미리 보기)

  • OUTER JOIN 표현식이 중첩 테이블을 참조하는 경우에는 해당 테이블과 테이블의 중첩 배열(및 맵)만 참조할 수 있습니다. OUTER JOIN 표현식이 중첩 테이블을 참조하지 않는 경우에는 비중첩 테이블을 무제한 참조할 수 있습니다.

  • 하위 쿼리의 FROM 절이 중첩 테이블을 참조하는 경우에는 다른 테이블을 참조할 수 없습니다.

  • 하위 쿼리가 상위 테이블을 참조하는 중첩 테이블에 따라 달라지는 경우, 하위 쿼리는 FROM 절에서 상위 테이블만 사용할 수 있습니다. SELECT 또는 WHERE 절 같은 다른 절에서는 상위 쿼리를 사용할 수 없습니다. 예를 들어 다음 쿼리는 하위 쿼리의 SELECT 절이 상위 테이블 c를 참조하므로 실행되지 않습니다.

    SELECT c.name.given FROM spectrum.customers c WHERE (SELECT COUNT(c.id) FROM c.phones p WHERE p LIKE '858%') > 1;

    다음 쿼리는 상위 쿼리의 c가 하위 쿼리의 FROM 절에서만 사용되고 있기 때문에 유효합니다.

    SELECT c.name.given FROM spectrum.customers c WHERE (SELECT COUNT(*) FROM c.phones p WHERE p LIKE '858%') > 1;
  • FROM 절이 아닌 다른 곳의 중첩 데이터에 액세스하는 하위 쿼리는 단일 값을 반환해야 합니다. WHERE 절의 (NOT) EXISTS 연산자만 예외입니다.

  • (NOT) IN은(는) 지원되지 않습니다.

  • 모든 중첩 형식의 최대 중첩 깊이는 100입니다. 이러한 제약은 모든 파일 형식(Parquet, ORC, Ion, JSON)에 적용됩니다.

  • 중첩 데이터에 액세스하는 집계 하위 쿼리는 FROMarraysmaps만 참조할 수 있고 외부 테이블은 참조할 수 없습니다.

  • Redshift 스펙트럼 테이블에서 중첩된 데이터의 가성 열을 쿼리하는 것은 지원되지 않습니다. 자세한 내용은 가상 열 섹션을 참조하세요.

  • 배열이나 맵 열을 FROM 절에 지정하여 배열이나 맵에서 데이터를 추출하는 경우 값이 scalar인 경우에만 해당 열에서 값을 선택할 수 있습니다. 예를 들어, 다음 쿼리는 모두 배열 내부의 요소에서 SELECT 작업 수행을 시도합니다. arr.ascalar 값이기 때문에 arr.a를 선택하는 쿼리가 작동합니다. 두 번째 쿼리는 arrayFROM 절의 s3.nested table에서 추출된 배열이기 때문에 작동하지 않습니다. (미리 보기)

    SELECT array_column FROM s3.nested_table; array_column ----------------- [{"a":1},{"b":2}] SELECT arr.a FROM s3.nested_table t, t.array_column arr; arr.a ----- 1 --This query fails to run. SELECT array FROM s3.nested_table tab, tab.array_column array;

    다른 배열이나 맵에서 가져온 FROM 절에 있는 배열이나 맵은 사용할 수 없습니다. 다른 배열 내에 중첩된 배열 또는 기타 복합 구조를 선택하려면 SELECT 문에 인덱스를 사용하는 것이 좋습니다.