

# Iceberg 테이블 데이터 쿼리
<a name="querying-iceberg-table-data"></a>

Iceberg 데이터 세트를 쿼리하려면 다음과 같이 표준 `SELECT` 문을 사용합니다. 쿼리는 Apache Iceberg [포맷 v2 사양](https://iceberg.apache.org/spec/#format-versioning)을 따르며 위치 및 동일 삭제 모두에 대해 병합 시 읽기 작업을 수행합니다.

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

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

시간 이동 및 버전 이동 쿼리에 대한 자세한 내용은 [시간 이동 및 버전 이동 쿼리 수행](querying-iceberg-time-travel-and-version-travel-queries.md) 섹션을 참조하세요.

## Iceberg 테이블에서 뷰 생성 및 쿼리
<a name="querying-iceberg-views"></a>

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

예제:

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

```
SELECT * FROM view1 
```

[Iceberg 보기 사양](https://github.com/apache/iceberg/blob/master/format/view-spec.md)을 사용하여 보기를 생성하려면 [athena-feedback@amazon.com](mailto:athena-feedback@amazon.com)에 문의하세요.

## Iceberg 테이블 메타데이터 쿼리
<a name="querying-iceberg-table-metadata"></a>

`SELECT` 쿼리에서 *table\$1name* 뒤에 다음 속성을 사용하여 Iceberg 테이블 메타데이터를 쿼리할 수 있습니다.
+ **\$1files** - 테이블의 현재 데이터 파일을 표시합니다.
+ **\$1manifests** - 테이블의 현재 파일 매니페스트를 표시합니다.
+ **\$1history** – 테이블의 기록을 표시합니다.
+ **\$1partitions** - 테이블의 현재 파티션을 표시합니다.
+ **\$1snapshots** - 테이블의 스냅샷을 보여줍니다.
+ **\$1refs** - 테이블의 참조를 표시합니다.

### 예제
<a name="querying-iceberg-table-metadata-syntax"></a>

다음 명령문은 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 세분화된 액세스 제어 사용
<a name="querying-iceberg-working-with-lf-fgac"></a>

Athena 엔진 버전 3에서는 열 수준 및 행 수준 보안 액세스 제어를 포함하여 Iceberg 테이블을 통한 Lake Formation 세분화된 액세스 제어를 지원합니다. 이 액세스 제어는 시간 이동 쿼리 및 스키마 진화를 수행한 테이블과 함께 작동합니다. 자세한 내용은 [Lake Formation 세분화된 액세스 제어 및 Athena 작업 그룹](lf-athena-limitations.md#lf-athena-limitations-fine-grained-access-control) 섹션을 참조하세요.

Athena 외부에서 Iceberg 테이블을 생성한 경우 Iceberg 테이블 열 정보가 AWS Glue Data Catalog에 채워지도록 [Apache Iceberg SDK](https://iceberg.apache.org/releases/) 버전 0.13.0 이상을 사용하세요. Iceberg 테이블에 AWS Glue의 열 정보가 포함되어 있지 않은 경우 Athena [ALTER TABLE SET TBLPROPERTIES](querying-iceberg-alter-table-set-properties.md) 문 또는 최신 Iceberg SDK를 사용하여 AWS Glue에서 테이블을 수정하고 열 정보를 업데이트할 수 있습니다.