

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

Amazon Athena의 뷰는 물리적 테이블이 아니라 논리적 테이블입니다. 뷰를 정의하는 쿼리는 쿼리에서 해당 뷰가 참조될 때마다 실행됩니다. `SELECT` 쿼리에서 뷰를 생성한 후 향후 쿼리에 이 뷰를 참조할 수 있습니다.

Athena에서는 Athena 뷰와 AWS Glue Data Catalog 뷰 두 가지 종류의 뷰를 사용할 수 있습니다.

## Athena 뷰를 사용해야 하는 경우
<a name="when-to-use-views"></a>

Athena 뷰를 생성하여 다음을 수행할 수 있습니다.
+ **데이터 하위 집합 쿼리** - 예를 들어 원본 테이블에서 열 하위 집합이 있는 뷰를 생성하여 데이터 쿼리를 단순화할 수 있습니다.
+ **테이블 결합** - 뷰를 사용하여 여러 테이블을 하나의 쿼리로 결합할 수 있습니다. 테이블이 여러 개 있고 `UNION ALL`로 테이블을 결합하려는 경우 해당 표현식으로 뷰를 생성하여 결합된 테이블에 대한 쿼리를 간소화할 수 있습니다.
+ **복잡성 숨기기** - 기존 기본 쿼리의 복잡성을 숨기고 사용자의 쿼리 실행을 단순화합니다. 기본 쿼리에는 보통 쿼리 이해 및 디버깅을 어렵게 하는 테이블 사이의 조인, 열 목록의 표현식, 여러 SQL 구문이 포함됩니다. 복잡성을 숨기고 쿼리를 간소화하는 뷰를 생성할 수 있습니다.
+ **쿼리 최적화** - 뷰를 사용하면 여러 최적화 기술을 실험하여 최적화된 쿼리를 생성할 수 있습니다. 예를 들어 최고의 성능을 입증하는 `WHERE` 조건, `JOIN` 명령 또는 여러 표현식의 조합을 찾은 경우, 이러한 절과 표현식을 사용하여 뷰를 생성할 수 있습니다. 그러면 애플리케이션이 이 뷰에 대해 비교적 간단한 쿼리를 만들 수 있습니다. 원래 쿼리를 최적화할 더 좋은 방법을 나중에 찾은 경우, 뷰를 다시 생성할 때 모든 애플리케이션이 최적화된 기본 쿼리의 이점을 즉시 활용합니다.
+ **기본 이름 숨기기** - 뷰를 사용하면 기본 테이블 및 열 이름이 변경된 경우 그러한 이름을 숨기고 유지 관리 문제를 최소화할 수 있습니다. 이름이 변경되면 새 이름을 사용하여 뷰를 다시 생성하면 됩니다. 테이블을 직접 사용하는 대신 뷰를 사용하는 모든 쿼리는 아무런 변경 없이 계속 실행됩니다.

  자세한 내용은 [Athena 뷰 작업](views-console.md) 섹션을 참조하세요.

## AWS Glue Data Catalog 뷰를 사용해야 하는 경우
<a name="when-to-use-views-gdc"></a>

Amazon Athena, Amazon Redshift 등의 AWS 서비스 전반에 걸쳐 단일 공통 뷰를 원하는 경우 AWS Glue Data Catalog 뷰를 사용합니다. Data Catalog 뷰에서 액세스 권한은 뷰를 쿼리하는 사용자 대신 뷰를 만든 사용자가 정의합니다. 이러한 권한 부여 방법을 **정의자 의미 체계라고 합니다.

다음은 Data Catalog 뷰를 사용할 수 있는 방법을 보여주는 사용 사례입니다.
+ **액세스 제어 강화** - 사용자에게 필요한 권한 수준에 따라 데이터 액세스를 제한하는 뷰를 생성합니다. 예를 들어 Data Catalog 뷰를 사용하여 인사 관리(HR) 부서 소속이 아닌 직원은 개인 식별 정보를 보지 못하도록 할 수 있습니다.
+ **완전한 기록 보장** - Data Catalog 뷰에 특정 필터를 적용하여 Data Catalog 뷰의 데이터 레코드가 항상 완전한지 확인할 수 있습니다.
+ **보안 강화** - Data Catalog 뷰에서 뷰를 생성하려면 뷰를 생성하는 쿼리 정의가 그대로 유지되어야 합니다. 이렇게 하면 Data Catalog 뷰가 악의적인 행위자의 SQL 명령에 덜 취약해집니다.
+ **기본 테이블에 대한 액세스 방지** - 정의자 의미 체계를 통해 사용자는 기본 테이블을 사용하지 않으면서 뷰에 액세스할 수 있습니다. 뷰를 정의하는 사용자에게만 테이블에 대한 액세스 권한이 필요합니다.

Data Catalog 뷰 정의는 AWS Glue Data Catalog에 저장됩니다. 즉, AWS Lake Formation을 사용하여 리소스 부여, 열 부여 또는 태그 기반 액세스 제어를 통해 액세스 권한을 부여할 수 있습니다. Lake Formation에서 액세스 권한 부여 및 취소에 대한 자세한 내용은 **AWS Lake Formation 개발자 안내서의 [Granting and revoking permissions on Data Catalog resources](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-catalog-permissions.html)를 참조하십시오.

자세한 내용은 [Athena에서 Data Catalog 뷰 사용](views-glue.md) 섹션을 참조하세요.

# 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) 섹션을 참조하세요.

# Athena에서 Data Catalog 뷰 사용
<a name="views-glue"></a>

Amazon Athena에서 Data Catalog 뷰를 생성하려면 특수한 `CREATE VIEW` 문이 필요합니다. 쿼리할 때는 일반적인 SQL `SELECT` 구문을 사용합니다. Data Catalog 뷰를 *다중 언어* 뷰 또는 MDV라고 합니다.

## Data Catalog 뷰 생성
<a name="views-glue-creating-a-data-catalog-view"></a>

Athena에서 Data Catalog 뷰를 생성하려면 다음 구문을 사용합니다.

```
CREATE [ OR REPLACE ] PROTECTED MULTI DIALECT VIEW view_name 
SECURITY DEFINER 
[ SHOW VIEW JSON ]
AS athena-sql-statement
```

**참고**  
`SHOW VIEW JSON` 옵션은 Data Catalog 뷰에만 적용되며 Athena 뷰에는 적용되지 않습니다. `SHOW VIEW JSON` 옵션을 사용하면 입력의 유효성을 검사하는 ‘테스트 실행’이 수행되고, 검사가 성공하면 뷰를 나타내는 AWS Glue 테이블 객체의 JSON이 반환됩니다. 실제 뷰는 생성되지 않습니다. `SHOW VIEW JSON` 옵션을 지정하지 않으면 유효성 검사가 수행되고 데이터 카탈로그에 평소와 같이 뷰가 생성됩니다.

다음 예제 구문은 `Definer` 역할의 사용자가 `orders_by_date` Data Catalog 뷰를 생성하는 방법을 보여줍니다. 이 예제에서는 `Definer` 역할에 `default` 데이터베이스의 `orders` 테이블에 대한 전체 `SELECT` 권한이 있다고 가정합니다.

```
CREATE PROTECTED MULTI DIALECT VIEW orders_by_date 
SECURITY DEFINER 
AS 
SELECT orderdate, sum(totalprice) AS price 
FROM orders 
WHERE order_city = 'SEATTLE' 
GROUP BY orderdate
```

구문 정보는 [CREATE PROTECTED MULTI DIALECT VIEW](create-view.md#create-protected-multi-dialect-view) 섹션을 참조하세요.

## Data Catalog 뷰 쿼리
<a name="views-glue-querying-a-data-catalog-view"></a>

뷰가 생성된 후 `Lake Formation` 관리자는 Data Catalog 뷰에 대한 `Invoker` 권한을 `SELECT` 보안 주체에게 부여할 수 있습니다. 그러면 `Invoker` 보안 주체는 뷰에서 참조하는 기본 테이블에 액세스하지 않고도 뷰를 쿼리할 수 있습니다. 다음은 `Invoker` 쿼리의 예입니다.

```
SELECT * from orders_by_date where price > 5000
```

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

다음 Data Catalog 뷰 제한 사항은 대부분 Athena에만 해당됩니다. 다른 서비스에도 적용되는 추가 Data Catalog 뷰 제한 사항은 Lake Formation 설명서를 참조하세요.
+ Data Catalog 뷰는 다른 뷰, 데이터베이스 리소스 링크 또는 테이블 리소스 링크를 참조할 수 없습니다.
+ 뷰 정의에서 최대 10개의 테이블을 참조할 수 있습니다.
+ 테이블에는 Lake Formation의 `IAMAllowedPrincipals` 데이터 레이크 권한이 없어야 합니다. 이 권한이 있는 경우 다중 언어 뷰는 IAMAllowedPrincipals 권한이 없는 테이블만 참조라는 오류가 발생할 수 있습니다.
+ 테이블의 Amazon S3 위치를 Lake Formation 데이터 레이크 위치로 등록해야 합니다. 테이블이 등록되지 않은 경우 다중 언어 뷰는 Lake Formation 관리형 테이블만 참조 오류가 발생할 수 있습니다. Lake Formation에 Amazon S3 위치를 등록하는 자세한 방법은 *AWS Lake Formation 개발자 가이드*에서 [ Amazon S3 위치 등록](https://docs.aws.amazon.com/lake-formation/latest/dg/register-location.html)을 참조하세요.
+ AWS Glue [GetTables](https://docs.aws.amazon.com/glue/latest/webapi/API_GetTables.html) 및 [SearchTables](https://docs.aws.amazon.com/glue/latest/webapi/API_SearchTables.html) API 직접 호출은 `IsRegisteredWithLakeFormation` 파라미터를 업데이트하지 않습니다. 이 파라미터의 올바른 값을 보려면 AWS Glue [GetTable](https://docs.aws.amazon.com/glue/latest/webapi/API_GetTable.html) API를 사용하세요. 자세한 내용은 *AWS Lake Formation 개발자 가이드*에서 [GetTables 및 SearchTables API가 IsRegisteredWithLakeFormation 파라미터 값을 업데이트하지 않음](https://docs.aws.amazon.com/lake-formation/latest/dg/limitations.html#issue-GetTables-value)을 참조하세요.
+ `DEFINER` 보안 주체는 IAM 역할만 될 수 있습니다.
+ `DEFINER` 역할에는 기본 테이블에 대한 전체 `SELECT`(부여 가능) 권한이 있어야 합니다.
+ `UNPROTECTED` Data Catalog 뷰는 지원되지 않습니다.
+ 사용자 정의 함수(UDF)는 뷰 정의에서 지원되지 않습니다.
+ Athena 페더레이션 데이터 소스는 Data Catalog 뷰에서 사용할 수 없습니다.
+ 외부 Hive 메타스토어에는 Data Catalog 뷰가 지원되지 않습니다.
+ Athena는 기한 경과 뷰를 감지하면 오류 메시지를 표시합니다. 다음 중 하나가 발생하면 기한 경과 뷰가 보고됩니다.
  + 뷰가 존재하지 않는 테이블 또는 데이터베이스를 참조합니다.
  + 스키마 또는 메타데이터 변경이 참조된 테이블에서 이루어집니다.
  + 참조된 테이블이 삭제되고 다른 스키마 또는 구성으로 재생성됩니다.

## 권한
<a name="views-glue-permissions"></a>

Data Catalog 뷰에는 `Lake Formation Admin`, `Definer` 및 `Invoker`의 세 가지 역할이 필요합니다.
+ **`Lake Formation Admin`** - 모든 Lake Formation 권한을 구성할 수 있는 액세스 권한이 있습니다.
+ **`Definer`** - Data Catalog 뷰를 생성합니다. `Definer` 역할에는 뷰 정의가 참조하는 모든 기본 테이블에 대해 부여 가능한 전체 `SELECT` 권한이 있어야 합니다.
+ **`Invoker`** - Data Catalog 뷰를 쿼리하거나 해당 메타데이터를 확인할 수 있습니다. 쿼리 호출자를 표시하려면 `invoker_principal()` DML 함수를 사용할 수 있습니다. 자세한 내용은 [invoker\$1principal()](functions-env3.md#functions-env3-invoker-principal) 섹션을 참조하세요.

`Definer` 역할의 신뢰 관계는 AWS Glue 및 Lake Formation 서비스 보안 주체에게 `sts:AssumeRole` 작업을 허용해야 합니다. 자세한 내용은 *AWS Lake Formation 개발자 안내서*의 [뷰 생성을 위한 사전 조건](https://docs.aws.amazon.com/lake-formation/latest/dg/working-with-views.html#views-prereqs)을 참조하세요.

Athena 액세스를 위한 IAM 권한도 필요합니다. 자세한 내용은 [Amazon Athena의 AWS 관리형 정책](security-iam-awsmanpol.md) 섹션을 참조하세요.

# Data Catalog 뷰 관리
<a name="views-glue-managing"></a>

DDL 명령을 사용하여 Data Catalog 뷰를 업데이트하고 관리할 수 있습니다.

## Data Catalog 뷰 업데이트
<a name="views-glue-updating-a-data-catalog-view"></a>

`Lake Formation` 관리자 또는 정의자는 `ALTER VIEW UPDATE DIALECT` 구문을 사용하여 뷰 정의를 업데이트할 수 있습니다. 다음 예제에서는 `orders` 테이블 대신 `returns` 테이블에서 열을 선택하도록 뷰 정의를 수정합니다.

```
ALTER VIEW orders_by_date UPDATE DIALECT
AS
SELECT return_date, sum(totalprice) AS price
FROM returns
WHERE order_city = 'SEATTLE'
GROUP BY orderdate
```

## AWS Glue Data Catalog 뷰에 지원되는 DDL 작업
<a name="views-glue-supported-actions"></a>

Athena는 AWS Glue Data Catalog 뷰에 대해 다음 작업을 지원합니다.


| 문 | 설명 | 
| --- | --- | 
| [ALTER VIEW DIALECT](alter-view-dialect.md) |  엔진 언어를 추가하거나 기존 엔진 언어를 업데이트 또는 삭제하여 Data Catalog 뷰를 업데이트합니다.  | 
| [CREATE PROTECTED MULTI DIALECT VIEW](create-view.md#create-protected-multi-dialect-view) |  지정된 `SELECT` 쿼리에서 Data Catalog 뷰를 생성합니다. 자세한 내용은 [CREATE PROTECTED MULTI DIALECT VIEW](create-view.md#create-protected-multi-dialect-view) 섹션을 참조하세요. 선택적 `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) |  뷰에 대한 스키마에 열을 나열합니다.  | 