[AWS Glue]ViewテーブルをAthenaで作成・更新してみた

2021.01.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

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

前回の記事ではAWS GlueのViewテーブルをAWS CLIのglue create-tableコマンドで作成してみましたが、かなり煩雑な手順となりました。これはglue update-tableコマンドによる更新操作についても同様となります。

一方でAthenaでCREATE VIEWクエリを使うことによってもViewテーブルの作成や更新を行えますが、こちらの方が比較的かんたんです。

そこで今回は、Viewテーブルの作成および更新をAmazon Athenaで試してみました。

やってみた

前提

前回の下記記事のCloudFormationテンプレートのリソースがデプロイ済みである前提とします。

作成するViewテーブルの参照元テーブルは下記とします。

  • データベース:devices_data_analystics
  • テーブル:devices_raw_data

このテーブルに対して直接SELECT *を実行すると下記のようなデータが取得できます。

SELECT * FROM "devices_data_analystics"."devices_raw_data"

Viewの作成

AthenaでのViewの作成にはCREATE VIEWを使用します。

参照元のテーブルからstatetrueのレコードのみ取得するというオリジナルSQLのViewdevices_raw_data_viewを作成します。

CREATE VIEW "devices_data_analystics"."devices_raw_data_view" AS
SELECT *
FROM "devices_data_analystics"."devices_raw_data"
WHERE state = true

作成したViewに対してSELECT *を実行すると、オリジナルSQLの通りにデータが取得できています。

SELECT * FROM "devices_data_analystics"."devices_raw_data_view"

Viewの更新

AthenaでのViewの更新にはCREATE OR REPLACE VIEWを使用します。

オリジナルSQLを、参照元のテーブルからdevice_idおよびtimestamp列のみ取得するように変更します。

CREATE OR REPLACE VIEW "devices_data_analystics"."devices_raw_data_view" AS
SELECT device_id, timestamp
FROM "devices_data_analystics"."devices_raw_data"

更新したViewに対してSELECT *を実行すると、更新したオリジナルSQLの通りにデータが取得できています。

SELECT * FROM "devices_data_analystics"."devices_raw_data_view"

もちろんFROM句の参照元のテーブルを変更するというViewの更新が可能なことも確認済みです。

おわりに

Viewテーブルの作成および更新をAmazon Athenaで試してみました。

前回のAWS CLIのコマンドによる方法と比べるとやることは格段にシンプルになりますね。

以上