

# Athena 뷰 작업
<a name="views-console"></a>

Athena 뷰는 Athena 콘솔에서 쉽게 생성, 업데이트, 관리할 수 있습니다.

## 뷰 생성
<a name="creating-views"></a>

템플릿을 사용하거나 기존 쿼리를 실행하여 Athena 콘솔에서 뷰를 생성할 수 있습니다.

**템플릿을 사용하여 뷰 생성**

1. Athena 콘솔에서 **테이블 및 뷰(Tables and views)** 옆에 있는 **생성(Create)**을 선택한 다음 **뷰 생성(Create view)**을 선택합니다.  
![\[뷰 생성.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/create-view.png)

   이 작업은 편집 가능한 뷰 템플릿을 쿼리 편집기에 배치합니다.

1. 요구 사항에 따라 뷰 템플릿을 편집합니다. 문에 뷰 이름을 입력할 때 뷰 이름에 밑줄`(_)` 이외의 특수 문자를 사용할 수 없습니다. [이름 데이터베이스, 테이블 및 열](tables-databases-columns-names.md)을(를) 참조하세요. 뷰 이름을 지정하는데 [쿼리에서 예약어 이스케이프](reserved-words.md)를 사용하지 마세요.

   뷰 생성에 대한 자세한 내용은 [CREATE VIEW 및 CREATE PROTECTED MULTI DIALECT VIEW](create-view.md) 및 [Athena 뷰 예제](views-examples.md) 섹션을 참조하세요.

1. **실행(Run)**을 선택하여 뷰를 생성합니다. 뷰가 Athena 콘솔의 뷰 목록에 나타납니다.

**기존 쿼리에서 뷰 생성**

1. Athena 쿼리 편집기를 사용하여 기존 쿼리를 실행합니다.

1. 쿼리 편집기 창에서 **생성(Create)**을 선택한 다음 **쿼리에서 뷰(View from query)**를 선택합니다.  
![\[생성(Create), 쿼리에서 뷰(View from query)를 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/create-view-from-query.png)

1. **뷰 생성(Create View)** 대화 상자에서 뷰 이름을 입력하고 **생성(Create)**을 선택합니다. 뷰 이름에는 밑줄 `(_)` 이외의 특수 문자를 사용할 수 없습니다. [이름 데이터베이스, 테이블 및 열](tables-databases-columns-names.md)을(를) 참조하세요. 뷰 이름을 지정하는데 [쿼리에서 예약어 이스케이프](reserved-words.md)를 사용하지 마세요.

   Athena는 콘솔의 뷰 목록에 뷰를 추가하고 쿼리 편집기에 뷰에 대한 `CREATE VIEW` 문을 표시합니다.

**참고**
+ 테이블의 기반이 되는 테이블을 삭제한 다음 뷰를 실행하려고 하면 Athena에서 오류 메시지를 표시합니다.
+ 기존 뷰의 위에 있는 뷰인 중첩 뷰(nested view)를 생성할 수 있습니다. Athena는 자신을 참조하는 재귀 뷰가 실행되지 않도록 방지합니다.

# Athena 뷰 예제
<a name="views-examples"></a>

뷰 쿼리 구문을 표시하려면 [SHOW CREATE VIEW](show-create-view.md)를 사용합니다.

**Example 예제 1.**  
`id` 및 `name`이라는 열 2개가 있는 `employees` 테이블과, `id` 및 `salary`라는 열 2개가 있는 `salaries` 테이블을 가정하겠습니다.  
이 예에서는 테이블 `employees` 및 `salaries`에서 급여에 매핑된 ID 목록을 가져오는 `SELECT` 쿼리로 `name_salary`라는 뷰를 생성합니다.  

```
CREATE VIEW name_salary AS
SELECT
 employees.name, 
 salaries.salary 
FROM employees, salaries 
WHERE employees.id = salaries.id
```

**Example 예제 2.**  
다음 예에서는 더 복잡한 쿼리 구문을 숨길 수 있는 `view1`이라는 뷰를 생성합니다.  
이 뷰는 `table1` 및 `table2`라는 테이블 2개 위에서 실행되며, 각 테이블은 다른 `SELECT` 쿼리입니다. 이 뷰는 `table1`에서 열을 선택하고 `table2`로 결과를 조인합니다. 이 조인은 두 테이블에 있는 `a` 열을 기반으로 합니다.  

```
CREATE VIEW view1 AS
WITH
  table1 AS (
         SELECT a, 
         MAX(b) AS the_max 
         FROM x 
         GROUP BY a
         ),
  table2 AS (
         SELECT a, 
         AVG(d) AS the_avg 
         FROM y 
         GROUP BY a)
SELECT table1.a, table1.the_max, table2.the_avg
FROM table1
JOIN table2 
ON table1.a = table2.a;
```

페더레이션된 보기 쿼리에 대한 자세한 내용은 [페더레이션 뷰 쿼리](running-federated-queries.md#running-federated-queries-federated-views) 섹션을 참조하세요.

# Athena 뷰 관리
<a name="views-managing"></a>

Athena 콘솔에서 다음을 수행할 수 있습니다.
+ 테이블이 나열된 왼쪽 창에서 모든 뷰를 찾을 수 있습니다.
+ 뷰를 필터링합니다.
+ 뷰를 미리 보거나, 속성을 표시, 편집 또는 삭제합니다.

**뷰에 대한 작업 표시**

뷰를 이미 생성한 경우에만 콘솔에 뷰가 나타납니다.

1. Athena 콘솔에서 **뷰(Views)**를 선택한 다음 확장하면 뷰(Views) 아래 여러 열이 표시됩니다.

1. 뷰 옆에 있는 3개의 세로 점을 선택하여 뷰에 대한 작업 목록을 표시합니다.  
![\[뷰에 대한 작업 메뉴\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/view-options.png)

1. 뷰를 미리 보거나, 뷰 이름을 쿼리 편집기에 삽입하거나, 뷰를 삭제하거나, 뷰의 속성을 보거나, 쿼리 편집기에서 뷰를 표시하고 편집하는 작업을 선택합니다.

## Athena 뷰에 지원되는 DDL 작업
<a name="views-supported-actions"></a>

Athena는 뷰에 대해 다음 관리 작업을 지원합니다.


| 문 | 설명 | 
| --- | --- | 
| [CREATE VIEW 및 CREATE PROTECTED MULTI DIALECT VIEW](create-view.md) |  지정된 `SELECT` 쿼리에서 새 뷰를 생성합니다. 자세한 내용은 [뷰 생성](views-console.md#creating-views) 단원을 참조하세요. 선택적 `OR REPLACE` 절을 사용하여 기존 뷰를 바꿔 업데이트할 수 있습니다.  | 
| [DESCRIBE VIEW](describe-view.md) |  명명된 뷰의 열 목록을 보여 줍니다. 이를 통해 복잡한 뷰의 속성을 검사할 수 있습니다.  | 
| [DROP VIEW](drop-view.md) |  기존 뷰를 삭제합니다. 뷰가 없는 경우 선택적 `IF EXISTS` 절이 오류를 억제합니다.  | 
| [SHOW CREATE VIEW](show-create-view.md) |  지정된 뷰를 생성하는 SQL 문을 보여 줍니다.  | 
| [SHOW VIEWS](show-views.md) |  지정된 데이터베이스 또는 현재 데이터베이스(데이터베이스 이름이 생략된 경우)의 뷰를 나열합니다. 선택적 `LIKE` 절을 정규식과 함께 사용하여 뷰 이름 목록을 제한합니다. 콘솔의 왼쪽 창에서 뷰 목록을 볼 수도 있습니다.  | 
| [SHOW COLUMNS](show-columns.md) |  뷰에 대한 스키마에 열을 나열합니다.  | 

# Athena 뷰 고려 사항 및 제한 사항
<a name="considerations-limitations-views"></a>

Athena 뷰에는 다음과 같은 고려 사항 및 제한 사항이 있습니다.

## 고려 사항
<a name="considerations-views"></a>

다음 고려 사항은 Athena에서 뷰를 생성하고 사용하는 데 적용됩니다.
+ Athena에서 Athena 콘솔, AWS Glue Data Catalog 또는 동일한 카탈로그에 연결된 Amazon EMR 클러스터에서 실행되는 Presto를 사용하여 생성된 뷰를 미리 보고 작업할 수 있습니다.
+ Data Catalog에서 Athena 뷰를 생성한 경우, Data Catalog가 뷰를 테이블로 처리합니다. Data Catalog에서 테이블 수준 세분화된 액세스 제어를 사용하여 이러한 뷰에 대한 [액세스를 제한](fine-grained-access-to-glue-resources.md)할 수 있습니다.
+  Athena는 재귀 뷰를 실행하지 못하도록 하고 그러한 경우 오류 메시지를 표시합니다. 재귀 뷰는 자체를 참조하는 뷰 쿼리입니다.
+ Athena는 기한 경과 뷰를 감지하면 오류 메시지를 표시합니다. 다음 중 하나가 발생하면 기한 경과 뷰가 보고됩니다.
  + 뷰가 존재하지 않는 테이블 또는 데이터베이스를 참조합니다.
  + 스키마 또는 메타데이터 변경이 참조된 테이블에서 이루어집니다.
  + 참조된 테이블이 삭제되고 다른 스키마 또는 구성으로 재생성됩니다.
+ 중첩 뷰 뒤의 쿼리가 유효하고 테이블과 데이터베이스가 있는 한 중첩 뷰를 만들고 실행할 수 있습니다.

## 제한 사항
<a name="limitations-views"></a>
+ Athena 뷰 이름에는 밑줄 `(_)` 이외의 특수 문자를 사용할 수 없습니다. 자세한 내용은 [이름 데이터베이스, 테이블 및 열](tables-databases-columns-names.md) 단원을 참조하세요.
+ 뷰 이름을 지정하는 데 예약어를 사용하지 마세요. 예약어를 사용하는 경우에는 뷰에 대한 쿼리에서 큰 따옴표를 사용하여 예약어를 묶습니다. [쿼리에서 예약어 이스케이프](reserved-words.md)을(를) 참조하세요.
+ 외부 Hive 메타스토어 또는 UDF를 통해 Athena에서 생성된 보기를 사용할 수 없습니다. 외부 Hive에서 작성된 뷰 작업에 대한 자세한 내용은 [Hive 뷰 작업](hive-views.md)을 참조하세요.
+ 지리 공간 함수에 뷰를 사용할 수 없습니다.
+ 뷰를 사용하여 Amazon S3의 데이터에 대한 액세스 제어를 관리할 수 없습니다. 뷰를 쿼리하려면 Amazon S3에 저장된 데이터에 액세스할 수 있는 권한이 필요합니다. 자세한 내용은 [Athena에서 Amazon S3에 대한 액세스 제어](s3-permissions.md) 섹션을 참조하세요.
+ 여러 계정에서 보기를 쿼리하는 작업은 Athena 엔진 버전 3에서 지원되지만 교차 계정 AWS Glue Data Catalog를 포함하는 보기는 생성할 수 없습니다. 교차 계정 데이터 카탈로그 액세스에 관한 자세한 내용은 [AWS Glue 데이터 카탈로그에 대한 크로스 계정 액세스 구성](security-iam-cross-account-glue-catalog-access.md)를 참조하세요.
+ Athena에서는 Hive 또는 Iceberg의 숨겨진 메타데이터 열 `$bucket`, `$file_modified_time`, `$file_size` 및 `$partition`을 보기에서 지원하지 않습니다. Athena에서 `$path` 메타데이터 열 사용에 대한 자세한 내용은 [Amazon S3의 소스 데이터에 대한 파일 위치 가져오기](select.md#select-path) 섹션을 참조하세요.