Amazon Athena Engine Version 3 が使えるようになりました

2022.10.14

いわさです。

Amazon Athena ではクエリエンジンにバージョンの概念があります。
バージョンアップ時にはバグ修正や機能追加・パフォーマンス向上などいくつかのアップデートを含んでおり、これまでは Version 1 と Version 2 を使うことが存在し、Version 1 については 2021 年に廃止済みのためここ最近は Version 2 が利用されていました。

今回のアップデートで Version 3 がリリースされました。
本日時点で東京リージョン・大阪リージョンともに利用出来るようになっていました。

この記事ではエンジンバージョンの確認・変更を行い簡単に変更点をいくつか試してみましたので紹介します。

バージョンの確認と設定

クエリエンジンバージョンはワークグループごとに設定します。
既存のワークグループの設定と変更は以下から行うことが出来ます。

アップグレードが自動になっている場合は Athena に自動アップデートのタイミングを任せる形となり、その際は AWS Health Dashboard にて通知がされるようです。

ただし、冒頭の Athena Version 1 廃止の際の記事を確認頂きたいのですが Athena コンソールで予告されたのち、Health Dashboard ではアップグレード後に通知されるようです。
公式ドキュメントでも「更新後に通知しますね」と記載があるのでおそらく今後もそうなるでしょう。

バージョンアップタイミングをコントロールしたい場合は事前に手動でバージョン設定したワークグループを用意し評価する必要がありますのでご注意ください。
クエリエディタでの利用時には以下のようにワークグループを指定します。
あるいは API で実行する場合はwork-groupを指定します。

バージョン 3 での変更点

変更点については以下のドキュメントにまとめられているので詳細はそちらをご参照ください。

改善と新機能もありますが、制限事項と重大な変更がある点にご注意頂きアップグレード前に事前に最新エンジンでの結果を評価頂いたほうが良いでしょう。
エンジンバージョンアップグレードについては以下をご確認ください。
事前にテスト用のワークグループを用意し評価する推奨事項が案内されています。

この記事では追加された関数と挙動が変わった関数を適当に試してみます。
複雑なことやパフォーマンスについては言及しませんが、実行計画の変更影響が出ていてパフォーマンスに影響が出る場合がある旨も記載があったので上記公式ドキュメントは必ずご確認頂いたほうが良いでしょう。

追加された関数

以下は新たに使えるようになったformat_numberです。
K や M など単位を付与して変換してくれます。

こちらの機能は Version 2 では利用出来ないものでしたが Version 3 から利用可能になっています。

このように Version 3 でいくつかの関数が追加されています。

挙動が変わった関数

一方で Version 2 から利用出来ていたが挙動が変わった関数も一部あります。
例えば以下では Unix Time からタイムスタンプを取得した際の精度について挙動が変わったことを確認しています。

Athena のタイムスタンプでサポートされている小数精度は 3 なので 4 以上の場合に桁が処理されます。
Version 2 では丸められていますが Version 3 では切り捨てられています。

他にもいくつか、Version 2 と Version 3 で実行結果が変わっているものがあります。
先程の更新一覧にそのあたりの変更点がまとまっていますのでそちらをご確認ください。

そういった変更点もあるので評価の必要性がわかるかなと思います。

さいごに

本日は Amazon Athena Engine Version 3 が使えるようになっていたので少し触ってみました。

エンジンの挙動が変わる点から評価が必要ですぐに運用ワークロードに適用するのはリスクがありますが、Version 1 のように将来的に Version 2 が廃止される可能性を考えるとお早めにバージョンアップ計画を立てられたほうが良さそうですね。