Glue Data Catalog 뷰 구문 - Amazon Athena

Glue Data Catalog 뷰 구문

이 기능은 현재 프리뷰 버전이 출시 중이기 때문에 변경될 수도 있습니다. 자세한 내용을 알아보려면 AWS 서비스 약관 문서의 베타 및 미리 보기 섹션을 참조하세요.

이 섹션에서는 AWS Glue Data Catalog 뷰를 생성하고 관리하기 위한 데이터 정의 언어(DDL) 명령을 설명합니다.

ALTER VIEW DIALECT

엔진 언어를 추가하거나 기존 엔진 언어를 업데이트 또는 삭제하여 Data Catalog 뷰를 업데이트할 수 있습니다. Lake FormationAdminDefiner(뷰를 생성한 사용자)만 Data Catalog 뷰에서 ALTER VIEW DIALECT 문을 사용할 수 있는 권한을 갖습니다.

구문

ALTER VIEW name [ FORCE ] [ ADD|UPDATE ] DIALECT AS query
ALTER VIEW name [ DROP ] DIALECT
FORCE

FORCE 키워드는 뷰에서 충돌하는 엔진 언어 정보를 새 정의로 덮어쓰게 합니다. FORCE 키워드는 Data Catalog 뷰를 업데이트하여 기존 엔진 언어 간에 뷰 정의가 충돌하는 경우에 유용합니다. Data Catalog 뷰에 Athena 언어와 Amazon Redshift 언어가 모두 있고 업데이트로 인해 보기 정의에서 Amazon Redshift와 충돌이 발생한다고 가정해 보겠습니다. 이 경우 FORCE 키워드를 사용하여 업데이트를 완료하고 Amazon Redshift 언어를 기한 경과로 표시할 수 있습니다. 기한 경과로 표시된 엔진이 뷰를 쿼리하면 쿼리가 실패합니다. 엔진에서 예외를 발생시켜 기한 경과 결과를 허용하지 않습니다. 이 문제를 해결하려면 뷰에서 기한 경과 언어를 업데이트합니다.

ADD

Data Catalog 뷰에 새 엔진 언어를 추가합니다. 지정된 엔진이 Data Catalog 뷰에 이미 존재해서는 안 됩니다.

UPDATE

Data Catalog 뷰에 이미 존재하는 엔진 언어를 업데이트합니다.

DROP

Data Catalog 뷰에서 기존 엔진 언어를 삭제합니다. Data Catalog 뷰에서 엔진을 삭제한 후에는 삭제된 엔진에서 Data Catalog 뷰를 쿼리할 수 없습니다. 뷰의 다른 엔진 언어는 여전히 뷰를 쿼리할 수 있습니다.

DIALECT AS

엔진별 SQL 쿼리를 소개합니다.

ALTER VIEW orders_by_date FORCE ADD DIALECT AS SELECT orderdate, sum(totalprice) AS price FROM orders GROUP BY orderdate
ALTER VIEW orders_by_date FORCE UPDATE DIALECT AS SELECT orderdate, sum(totalprice) AS price FROM orders GROUP BY orderdate
ALTER VIEW orders_by_date DROP DIALECT

CREATE PROTECTED MULTI DIALECT VIEW

AWS Glue Data Catalog에서 Data Catalog 뷰를 생성합니다. Data Catalog 뷰는 Athena와 Amazon Redshift, Amazon EMR 등의 다른 SQL 엔진에서 원활하게 작동하는 단일 뷰 스키마입니다.

구문

CREATE [ OR REPLACE ] PROTECTED MULTI DIALECT VIEW view_name [ SECURITY DEFINER ] AS query
PROTECTED

필수 키워드. 데이터 유출로부터 뷰를 보호하도록 지정합니다. Data Catalog 뷰는 PROTECTED 뷰로만 생성할 수 있습니다.

MULTI DIALECT

뷰가 다양한 쿼리 엔진의 SQL 언어의 지원하므로 해당 엔진에서 읽을 수 있도록 지정합니다.

SECURITY DEFINER

이 뷰에 정의자 의미 체계가 적용되도록 지정합니다. 정의자 의미 체계란 기본 테이블에 대한 유효 읽기 권한이 실제 읽기를 수행하는 보안 주체가 아니라 뷰를 정의한 보안 주체 또는 역할에 속함을 의미합니다.

OR REPLACE

다른 엔진의 SQL 언어가 뷰에 있는 경우 Data Catalog 뷰를 대체할 수 없습니다. 호출 엔진의 뷰에 SQL 언어만 있는 경우 뷰를 바꿀 수 있습니다.

다음 예제에서는 orders 테이블의 쿼리를 기반으로 orders_by_date Data Catalog 뷰를 생성합니다.

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

DESCRIBE

지정된 Data Catalog 뷰의 열 목록을 표시합니다. DESCRIBE 문은 Athena 뷰의 DESCRIBE 문과 유사합니다. Athena의 뷰와 달리 명령문의 출력은 Lake Formation 액세스 제어를 통해 제어됩니다. 따라서 이 쿼리의 출력은 뷰의 모든 열이 아니라 호출자가 액세스할 수 있는 열입니다.

구문

DESCRIBE [db_name.]view_name

DESCRIBE orders

DROP VIEW

호출 엔진 언어가 Data Catalog 뷰에 있는 경우에만 Data Catalog 뷰를 삭제합니다. 예를 들어 사용자가 Athena에서 DROP VIEW를 호출하면 Athena의 언어가 뷰에 있는 경우에만 뷰가 삭제됩니다. 그렇지 않으면 작업이 실패합니다. Lake Formation 관리자와 뷰 정의자만 Data Catalog 뷰에서 DROP VIEW 문을 사용할 수 있는 권한이 있습니다.

구문

DROP VIEW [ IF EXISTS ] view_name

DROP VIEW orders_by_date
DROP FORCE VIEW IF EXISTS orders_by_date

뷰가 없는 경우 선택적 IF EXISTS 절이 오류가 억제되도록 합니다.

SHOW COLUMNS

지정된 단일 데이터 카탈로그 뷰의 열 이름만 표시합니다. SHOW COLUMNS 문은 Athena 뷰의 SHOW COLUMNS 문과 유사합니다. Athena의 뷰와 달리 명령문의 출력은 Lake Formation 액세스 제어를 통해 제어됩니다. 따라서 이 쿼리의 출력은 뷰의 모든 열이 아니라 호출자가 액세스할 수 있는 열입니다.

구문

SHOW COLUMNS {FROM|IN} database_name.view_name
SHOW COLUMNS {FROM|IN} view_name [{FROM|IN} database_name]

SHOW CREATE VIEW

Data Catalog 뷰를 생성한 SQL 구문을 표시합니다. 반환된 SQL은 Athena에서 사용되는 뷰 생성 구문을 보여줍니다. Lake Formation 관리자 및 뷰 정의자 보안 주체만 Data Catalog 뷰에서 SHOW CREATE VIEW를 직접적으로 호출할 권한이 있습니다.

구문

SHOW CREATE VIEW view_name

SHOW CREATE VIEW orders_by_date

SHOW VIEWS

데이터베이스에 있는 모든 뷰의 이름을 나열합니다. Athena 엔진 SQL 언어가 있는 데이터베이스의 모든 Data Catalog 뷰가 나열됩니다. 뷰에 Athena 엔진 언어가 없는 다른 Data Catalog 뷰는 필터링되어 제외됩니다.

구문

SHOW VIEWS [IN database_name] [LIKE 'regular_expression']

SHOW VIEWS
SHOW VIEWS IN marketing_analytics LIKE 'orders*'