Iceberg 테이블 데이터 쿼리 - Amazon Athena

Iceberg 테이블 데이터 쿼리

Iceberg 데이터 세트를 쿼리하려면 다음과 같이 표준 SELECT 문을 사용합니다. 쿼리는 Apache Iceberg 포맷 v2 사양을 따르며 위치 및 동일 삭제 모두에 대해 병합 시 읽기 작업을 수행합니다.

SELECT * FROM [db_name.]table_name [WHERE predicate]

쿼리 시간을 최적화하기 위해 일부 술어는 데이터가 존재하는 곳으로 푸시다운됩니다.

시간 이동 및 버전 이동 쿼리에 대한 자세한 내용은 시간 이동 및 버전 이동 쿼리 수행 섹션을 참조하세요.

Iceberg 테이블에서 뷰 생성 및 쿼리

Iceberg 테이블에서 Athena 보기를 생성하고 쿼리하려면 뷰 작업에 설명된 대로 CREATE VIEW 보기를 사용합니다.

예시

CREATE VIEW view1 AS SELECT * FROM iceberg_table
SELECT * FROM view1

Iceberg 보기 사양을 사용하여 보기를 생성하려면 athena-feedback@amazon.com에 문의하세요.

Iceberg 테이블 메타데이터 쿼리

SELECT 쿼리에서 table_name 뒤에 다음 속성을 사용하여 Iceberg 테이블 메타데이터를 쿼리할 수 있습니다.

  • $files - 테이블의 현재 데이터 파일을 표시합니다.

  • $manifests - 테이블의 현재 파일 매니페스트를 표시합니다.

  • $history – 테이블의 기록을 표시합니다.

  • $partitions - 테이블의 현재 파티션을 표시합니다.

  • $snapshots - 테이블의 스냅샷을 보여줍니다.

  • $refs - 테이블의 참조를 표시합니다.

예시

다음 명령문은 Iceberg 테이블의 파일을 나열합니다.

SELECT * FROM "dbname"."tablename$files"

다음 명령문은 Iceberg 테이블의 매니페스트를 나열합니다.

SELECT * FROM "dbname"."tablename$manifests"

다음 명령문은 Iceberg 테이블의 기록을 표시합니다.

SELECT * FROM "dbname"."tablename$history"

다음 예제는 Iceberg 테이블의 파티션을 표시합니다.

SELECT * FROM "dbname"."tablename$partitions"

다음 예제는 Iceberg 테이블의 스냅샷을 나열합니다.

SELECT * FROM "dbname"."tablename$snapshots"

다음 예제는 Iceberg 테이블의 참조를 표시합니다.

SELECT * FROM "dbname"."tablename$refs"

Lake Formation 세분화된 액세스 제어 사용

Athena 엔진 버전 3에서는 열 수준 및 행 수준 보안 액세스 제어를 포함하여 Iceberg 테이블을 통한 Lake Formation 세분화된 액세스 제어를 지원합니다. 이 액세스 제어는 시간 이동 쿼리 및 스키마 진화를 수행한 테이블과 함께 작동합니다. 자세한 내용은 Lake Formation 세분화된 액세스 제어 및 Athena 작업 그룹 단원을 참조하십시오.

Athena 외부에서 Iceberg 테이블을 생성한 경우 Iceberg 테이블 열 정보가 AWS Glue Data Catalog에 채워지도록 Apache Iceberg SDK 버전 0.13.0 이상을 사용하세요. Iceberg 테이블에 AWS Glue의 열 정보가 포함되어 있지 않은 경우 Athena ALTER TABLE SET PROPERTIES 문 또는 최신 Iceberg SDK를 사용하여 AWS Glue에서 테이블을 수정하고 열 정보를 업데이트할 수 있습니다.