Glue データカタログビュー構文 - Amazon Athena

Glue データカタログビュー構文

この機能はプレビューリリースであり、変更される可能性があります。詳細については、「AWS のサービス条件」ドキュメントの「ベータ版とプレビュー」セクションを参照してください。

このセクションでは、AWS Glue Data Catalog ビューを作成および管理するためのデータ定義言語 (DDL) コマンドについて説明します。

ALTER VIEW DIALECT

データカタログビューを更新するには、エンジンダイアレクトを追加するか、既存のエンジンダイアレクトを更新または削除します。データカタログビューで ALTER VIEW DIALECT ステートメントを使用する権限を持っているのは、Lake FormationAdminDefiner (ビューを作成したユーザー) のみです。

構文

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

FORCE キーワードにより、ビュー内の競合するエンジンダイアレクト情報が新しい定義で上書きされます。FORCE キーワードは、データカタログビューの更新後に、既存のエンジンダイアレクト間でビュー定義に競合が発生した場合に役立ちます。例えば、データカタログビューに Athena と Amazon Redshift の両方のダイアレクトがあり、更新後に、ビュー定義で Amazon Redshift と競合が発生したとします。この場合は、FORCE キーワードを使用して更新を完了させ、Amazon Redshift ダイアレクトを古いものとしてマークできます。古いとマークされたエンジンがビューをクエリすると、クエリは失敗します。エンジンは例外をスローして、古い結果を許可しません。これを修正するには、ビュー内の古いダイアレクトを更新します。

ADD

データカタログビューに新しいエンジンダイアレクトを追加します。指定するエンジンは、データカタログビューに既に存在していない必要があります。

UPDATE

データカタログビューに既に存在するエンジンダイアレクトを更新します。

DROP

既存のエンジンダイアレクトをデータカタログビューから削除します。データカタログビューからエンジンを削除すると、削除されたエンジンからデータカタログビューをクエリできなくなります。ビュー内の他のエンジンダイアレクトは引き続きビューをクエリできます。

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

保護されたマルチダイアレクトの作成

AWS Glue Data Catalog にデータカタログビューを作成します。データカタログビューは、Athena と Amazon Redshift や Amazon EMR のような他の SQL エンジン間でシームレスに機能する単一のビュースキーマです。

構文

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

キーワードが必須です。ビューをデータ漏洩から保護するように指定します。データカタログビューは PROTECTED ビューとしてのみ作成できます。

MULTI DIALECT

ビューがさまざまなクエリエンジンの SQL ダイアレクトをサポートし、それらのエンジンで読み取れるように指定します。

SECURITY DEFINER

このビューに対して definer セマンティクスが有効であることを指定します。definer セマンティクスとは、基礎となるテーブルに対する有効な読み取り権限が、実際の読み取りを実行するプリンシパルではなく、ビューを定義したプリンシパルまたはロールに属することを意味します。

OR REPLACE

データカタログビューに他のエンジンの SQL ダイアレクトが含まれている場合、そのビューを置き換えることはできません。呼び出し側のエンジンの SQL ダイアレクトがビュー内に存在する場合は、そのビューを置き換えることができます。

次の例では、orders テーブルに対するクエリに基づいて orders_by_date データカタログビューを作成します。

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

指定されたデータカタログビューの列のリストを表示します。DESCRIBE ステートメントは、Athena ビューの DESCRIBE ステートメントと似ています。Athena ビューとは異なり、ステートメントの出力は Lake Formation アクセスコントロールによって制御されます。そのため、このクエリの出力はビューのすべての列ではなく、呼び出し元がアクセスできる列のみになります。

構文

DESCRIBE [db_name.]view_name

DESCRIBE orders

DROP VIEW

データカタログビューを削除するのは、呼び出し側のエンジンダイアレクトがデータカタログビューに表示されている場合のみです。例えば、ユーザーが Athena から DROP VIEW を呼び出した場合、ビューに Athena のダイアレクトが存在する場合にのみビューが削除されます。それ以外の場合は、このオペレーションは失敗します。Lake Formation 管理者とビュー定義者のみが、データカタログビューで 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]

ビューの作成を表示する

データカタログビューを作成した SQL 構文が表示されます。返される SQL には、Athena で使用されているビュー作成構文が表示されます。データカタログビューに対して SHOW CREATE VIEW を呼び出す権限があるのは、Lake Formation 管理者とビュー定義者のプリンシパルのみです。

構文

SHOW CREATE VIEW view_name

SHOW CREATE VIEW orders_by_date

ビューの表示

データベース内のすべてのビューの名前を一覧表示します。Athena エンジン SQL ダイアレクトを使用するデータベース内のすべてのデータカタログビューが一覧表示されます。ビューに Athena エンジンダイアレクトがない他のデータカタログビューは除外されます。

構文

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

SHOW VIEWS
SHOW VIEWS IN marketing_analytics LIKE 'orders*'