外部 Hive メタストアクエリでカタログ名を省略する - Amazon Athena

外部 Hive メタストアクエリでカタログ名を省略する

外部 Hive メタストアで DML クエリと DDL クエリを実行するとき、クエリエディタでカタログ名が選択されている場合は、カタログ名を省略することでクエリ構文を簡略化できます。この機能には一定の制限が適用されます。

DML ステートメント

登録済みカタログでクエリを実行するには
  1. 次の例のように、構文 [[data_source_name].database_name].table_name を使用してデータベースの前にデータソース名を配置できます。

    select * from "hms-catalog-1".hms_tpch.customer limit 10;
  2. 使用するデータソースが、クエリエディタ内ですでに選択されている場合は、次の例のようにクエリからカタログ名を省略できます。

    select * from hms_tpch.customer limit 10:
    デフォルトのデータソースを使用した DML クエリ。
  3. クエリで複数のデータソースを使用する場合、デフォルトのデータソース名のみ省略が可能で、デフォルト以外のすべてのデータソースについては、フルネームを指定する必要があります。

    例えば、クエリエディタでデフォルトのデータソースとして AwsDataCatalog が選択されているとします。次に抜粋した、クエリの FROM ステートメントでは、最初の 2 つのデータソース名については完全修飾名で指定していますが、3 番目のデータソースの名前は、AWS Glue データカタログに含まれているため省略しています。

    ... FROM ehms01.hms_tpch.customer, "hms-catalog-1".hms_tpch.orders, hms_tpch.lineitem ...

DDL ステートメント

以下の Athena DDL ステートメントは、カタログ名のプレフィックスをサポートします。他の DDL ステートメントのカタログ名プレフィックスは、構文エラーの原因となります。

SHOW TABLES [IN [catalog_name.]database_name] ['regular_expression'] SHOW TBLPROPERTIES [[catalog_name.]database_name.]table_name [('property_name')] SHOW COLUMNS IN [[catalog_name.]database_name.]table_name SHOW PARTITIONS [[catalog_name.]database_name.]table_name SHOW CREATE TABLE [[catalog_name.][database_name.]table_name DESCRIBE [EXTENDED | FORMATTED] [[catalog_name.][database_name.]table_name [PARTITION partition_spec] [col_name ( [.field_name] | [.'$elem$'] | [.'$key$'] | [.'$value$'] )]

クエリエディタでデータソースとデータベースが選択されている場合には、DML のステートメントと同様に、クエリからデータソースとデータベースのプレフィックスを省略できます。

次の図では、クエリエディタでデータソース hms-catalog-1 とデータベース hms_tpch が選択されています。クエリ自体から、プレフィックス hms-catalog-1 と データベース名 hms_tpch が省略されていても、show create table customer ステートメントは成功します。

デフォルトのカタログを使用する DDL ステートメント。

JDBC 接続文字列でのデフォルトデータソースの指定

Athena JDBC ドライバーを使用して Athena を外部 Hive メタストアに接続する場合、SQL Workbench などの SQL エディタで、Catalog パラメータを使用して接続文字列にデフォルトのデータソース名を指定します。

注記

最新の Athena JDBC ドライバーをダウンロードするには、「Athena での JDBC ドライバーの使用」を参照してください。

次の接続文字列は、デフォルトのデータソースに hms-catalog-name を指定しています。

jdbc:awsathena://AwsRegion=us-east-1;S3OutputLocation=s3://amzn-s3-demo-bucket/lambda/results/;Workgroup=AmazonAthenaPreviewFunctionality;Catalog=hms-catalog-name;

以下の画像は、SQL Workbench で設定されている、JDBC 接続 URL の例を示しています。

SQL Workbench での JDBC 接続 URL の設定。