Amazon Athena がパラメータクエリをサポートしました

記事タイトルとURLをコピーする

CI2部 技術2課の山﨑です。

7月にAmazon Athena がパラメータクエリをサポートしましたので簡単にご紹介したいと思います。

おさらい

Amazon Athena とは?

標準的なSQLを使用してS3バケット内のデータソースに対してクエリを実行することができるサービスです。S3はRDS/Auroraのように事前に定義されたテーブルに対してデータを挿入するデータベースではなく、様々なデータを様々な形式で保存することができるオブジェクトストレージです。そのため非構造化データやスキーマレスデータが混在していることも少なくありません。このような特性を持ったストレージであるS3に対して標準的なSQLクエリを実行することができることがAmazon Athenaの大きな特徴です。

Amazon Athenaを使ったクエリ実行については、以下のブログも合わせてご覧ください

blog.serverworks.co.jp

blog.serverworks.co.jp

blog.serverworks.co.jp

blog.serverworks.co.jp

アップデート概要

パラメータクエリを実行できるようになりました

パラメータクエリとは、クエリ内に変数を埋め込み、クエリ実行時にその変数に代入する抽出条件の指定をユーザーに求めることができるクエリ実行方法です。

このパラメータクエリを実行すると「パラメーターの入力」ダイアログボックスが表示されるので、そのテキストボックスに抽出条件を入力した上でクエリを実行します。

パラメータクエリの嬉しい点は、抽出条件が変わる度にクエリ本文を編集する必要がないのでメンテナンスの手間が省けることです

今回のAWSアップデートにより、Athenaがパラメータクエリをサポートしました。

aws.amazon.com

Athenaで実行するクエリが定型的なクエリの場合、「パラメータクエリの利用」に加えて「保存したクエリ(Saved Queries)」を利用することでさらにクエリ本文の編集やメンテナンスの手間が省けます。

これまでのクエリとの比較

以下、AWSニュースブログに掲載されているパラメータクエリ利用した場合とそうでない場合のクエリの比較の抜粋です。

aws.amazon.com

パラメータクエリを利用しない場合

aws athena start-query-execution \
--query-string "SELECT * FROM table WHERE x = $ARG1 AND y = $ARG2 AND z = $ARG3" \
--query-execution-context "Database"="default" \
--work-group myWorkGroup

パラメータクエリを利用した場合

aws athena start-query-execution \
--query-string "SELECT * FROM table WHERE x = ? AND y = ? AND z = ?" \
--query-execution-context "Database"="default" \
--work-group myWorkGroup \
--execution-parameters $ARG1 $ARG2 $ARG3

おまけ

その他、Athenaのパフォーマンスチューニングについては以下のAWSニュースブログをご覧ください

aws.amazon.com

まとめ

以上、Amazon Athena がサポートを開始したパラメータクエリのご紹介でした

山﨑 翔平 (Shohei Yamasaki) 記事一覧はコチラ

2019/12入社で現在はクラウドインテグレーション部技術1課所属。AWS資格7冠。元人材営業/キャリアカウンセラー。