Glue データカタログビュー構文
この機能はプレビューリリースであり、変更される可能性があります。詳細については、「AWS のサービス条件 |
このセクションでは、AWS Glue Data Catalog ビューを作成および管理するためのデータ定義言語 (DDL) コマンドについて説明します。
ALTER VIEW DIALECT
データカタログビューを更新するには、エンジンダイアレクトを追加するか、既存のエンジンダイアレクトを更新または削除します。データカタログビューで ALTER VIEW DIALECT
ステートメントを使用する権限を持っているのは、Lake Formation
Admin
と Definer
(ビューを作成したユーザー) のみです。
構文
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*'