[Amazon Athena] 名前付きクエリとVIEWテーブルの違いを確認しつつ使ってみた

2021.12.10

こんにちは、CX事業本部 IoT事業部の若槻です。

今回は、Amazon Athenaの名前付きクエリ(Named Query, Saved Query)とVIEWテーブルの違いを確認しつつ使ってみました。

名前付きクエリ

名前付きクエリ(Named Query, Saved Query)とは、SQLクエリに名前を付けて保存し、コンソールから呼び出して使用できるAmazon Athenaの機能です。

名前付きクエリを使ってみる

Amazon Athenaのマネジメントコンソールで、名前を付けたいSQLクエリを記載したら、[Save as]をクリックします。

//名前付きクエリとしたいSQLクエリ
SELECT eventname,
    dynamodb.approximatecreationdatetime/1000 as unixTimestamp,
    dynamodb.newimage.deviceid.s as newDeviceId,
    dynamodb.newimage.devicename.s as newDeviceName,
    dynamodb.oldimage.deviceid.s as oldDeviceId,
    dynamodb.oldimage.devicename.s as oldDeviceName
FROM "gluedatabase"."gluetable"

[Query name]を指定して、[Save query]をクリックして保存します。

[Saved queries]タブで作成済みの名前付きクエリの一覧を参照できます。先程作成した名前付きクエリを選択します。

名前付きクエリがエディターで開けました。保存したSQLクエリの内容が展開されています。[Run]をクリックして実行します。

クエリが実行でき、クエリ結果が取得できました。

名前付きクエリはコンソールから使うもの

名前付きクエリは、AWS CLIなどのAPIから直接使用することはできません。基本的にはマネジメントコンソールからよく使うSQLクエリを簡単に呼び出せるようにする機能です。

よってAthenaのAWS CLIで利用可能な名前付きクエリに関するコマンドは作成、取得、削除を行うコマンドだけしかありません。

名前付きクエリの作成方法

名前付きクエリは、先程示したマネジメントコンソールからの方法の他に、AWS CLI、CloudFormationからも作成可能です。

VIEWテーブル

VIEWテーブルとは、Glueテーブルの一種で、指定したSQLクエリをデータカタログに論理テーブルとして保存し、SELECTクエリで使用できます。このテーブルに対してSELECTクエリを実行すると指定したSQLクエリが実行された結果が取得できます。

VIEWテーブルを使ってみる

以下のエントリで、Amazon AthenaのマネジメントコンソールからViewテーブルの作成や使用を行っているのでご参照ください。

Amazon Athenaのマネジメントコンソールで、CREATE [ OR REPLACE ] VIEW view_name AS queryという形式でSQLクエリを記載します。今回はgluedatabaseデータベースにgluetable_viewという名前でVIEWテーブルを作成します。

CREATE OR REPLACE VIEW "gluedatabase"."gluetable_view" AS
SELECT eventname,
    dynamodb.approximatecreationdatetime/1000 as unixTimestamp,
    dynamodb.newimage.deviceid.s as newDeviceId,
    dynamodb.newimage.devicename.s as newDeviceName,
    dynamodb.oldimage.deviceid.s as oldDeviceId,
    dynamodb.oldimage.devicename.s as oldDeviceName
FROM "gluedatabase"."gluetable"

[Run]をクリックして実行します。

Query successful.と出力されていれば作成は成功です。またViews一覧に作成したVIEWテーブルが追加されています。

作成したVIEWテーブルに対してSELECTクエリを実行すると、結果を取得できました。

VIEWテーブルはJDBCまたはODBC接続で使うもの

VIEWテーブルが便利に使えるのは、BIツールなどから接続するような場面です。JDBCまたはODBCドライバーでAthena経由でAWS上のデータに接続する際に、VIEWテーブルを指定することにより短いクエリで加工済みのデータを取得できるようになります。

VIEWテーブルの作成方法

VIEWテーブルは、先程示したマネジメントコンソールからの方法の他に、AWS CLI、CloudFormationからも作成可能です。ただしかなり面倒くさいです。

AWS CDKの場合はCfnTableクラスのコンストラクトを使えば可能です。

参考

以上