見出し画像

AWS Step FunctionとAmazon Athenaを組み合わせたデータ分析のメリット

こんにちは。コグラフ株式会社データアナリティクス事業部のモロズミです。この記事では、AWS Step FunctionとAmazon Athenaを組み合わせたデータ分析のメリットを紹介します。

自動化分析フローの構築

メリットの一つ目は、自動化分析フローの構築ができることです。AWS Athenaを用いたデータ分析では、以下のように複数のステップがあります。

  • データの保存

  • データの取得

  • クエリの実行

  • テーブル作成

  • テーブル更新

Athenaを用いて、特定の条件を満たすデータのテーブルを定期的に作成する必要がある場合、毎回クエリ実行をするのは負担が大きいです。そのため、分析してテーブルを作成、更新するプロセスを自動化することで、省力化が可能になります。この自動化の部分で、AWS Step Functionが役に立ちます。

AWS Step Functionは、AWSサービスを用いたプロセスを自動化するために、ワークフローを構築できるツールです。

AWS Step Functionと他のAWSサービスの場面ごとでの使い分けや連携方法は次の記事で説明されています。

よくある質問 - AWS Step Functions | AWS (amazon.com)

AWS Athenaでのクエリ実行も自動化をサポートしています。公式資料ではデータを最新の状態に保つ例として、以下の構成での例を紹介しています。

  • データの保存:Amazon S3

  • データの取得:AWS Glue

  • クエリの実行:Amazon Athena

  • テーブル作成:Amazon Athena

  • テーブル更新:Amazon Athena

プロセスの全体像はこちらの記事にあります。

プロセスの各タスクに関する公式ページは以下になります。

この例で、AWS Athenaによるクエリで、条件を満たすデータの抽出および分析対象の数値を計算するように記述すれば、AWS Step Functionsで分析の自動化に応用できます。AWS AthenaはAWSが提供する分析サービスです。SQLのクエリなどを実行できます。

AWS Athenaについて、以下の記事で紹介しておりますので、AWS Athenaに興味のある方は合わせてご覧ください。

こうして、分析を人間が何度も行わなくても、AWS Step Functionsによって自動化を行い、データを最新の分析結果の状態に維持できるので便利です。

ステートマシンの活用

メリットの二つ目は、ステートマシンの活用により、簡単にAWS Athenaのタスクに関するワークフローを設定できることです。

AWS Step Functionsの自動化は、ステートマシンと呼ばれるワークフローを定義することで実現します。ステートマシンのステートとはワークフローのステップのことです。このステートを把握してワークフローを実行します。

AWS Athenaによるクエリ実行のタスクも含めて、自動化対象となる一連の処理をステートマシンのコードに書き、AWS Step Functionsで実行します。

ステートマシンには、以下のような要素をコードに記載して、定義します。

  • "Comment"

  • "StartAt"

  • "States"

  • "FirstState"

  • "Type"

  • "Resource"

  • "Next"

詳細は、以下のリンク先にある、Amazonステートメント言語のページや、ステートマシン構造のページで説明されています。

次のリンク先は、AWS Athena、AWS Glue、AWS SNSを用いたクエリ実行をAWS Step Functionsで実行する例が紹介されています。

AWS Athenaのためのステートマシンは以下のような記述となっています。

"Start an Athena query": {
  "Resource": "arn:aws:states:::athena:startQueryExecution.sync",
  "Parameters": {
    "QueryString": "SELECT * FROM \"athena-sample-project-db-wJalrXUtnFEMI\".\"log\" limit 1",
    "WorkGroup": "stepfunctions-athena-sample-project-workgroup-wJalrXUtnFEMI"
  },
  "Type": "Task",
  "Next": "Get query results"
},
"Get query results": {
  "Resource": "arn:aws:states:::athena:getQueryResults",
  "Parameters": {
    "QueryExecutionId.$": "$.QueryExecution.QueryExecutionId"
  },
  "Type": "Task",
  "Next": "Send query results"
},

ワークフローの設定で必要な要素をステートマシンに記述することで簡単に自動化などが実行できます。

コスト効率の良いデータ分析

メリットの三つ目は、AWS Step Functionsを用いることでコスト効率の良いデータ分析が可能になることです。その理由として、不要なクエリの実行を回避できるため、無駄な計算リソースと実行コストを削減できるからです。

AWS Step Functionsは、Athenaのクエリ実行を含むデータ分析のプロセスを細かいタスク単位に分割して実行します。プロセスの各ステップでエラーが発生したかを確認し、それに応じて次のアクションを決定します。そのためエラーが生じたタイミングでプロセスを止めることによって、不要な計算を回避できます。失敗状態の定義は、ステートマシンで簡単に記述できます。

エラーハンドリングの一環として、エラー発生時の再試行回数を設定して、ワークフローの途中で失敗するリスクを小さくする運用も可能です。これは手動での介入を減らすことで、エラー対応での運用コストを削減できます。

AWS Step Functionsのイベント駆動アーキテクチャもコスト削減する工夫につなげられます。例えば、Amazon S3にデータがアップロードされたことをトリガーとして、データの更新されたタイミングに限定してAWS Athenaのクエリを実行するといった設定が可能です。このイベントトリガーの設定もAWS Step Functionsでのステートマシンに記述することで設定ができます。

AWS Step Functionsで柔軟にワークフローを設定すれば、ビジネスの成長やデータ量の増加に合わせて、スケールアップやスケールダウンもできます。

以上のように、特定の条件下でのみAWS Athenaのクエリ実行をするようにAWS Step Functionsを設定することで、リソースの使用を最適化できます。

データ分析に興味のある方募集中!

コグラフ株式会社データアナリティクス事業部ではPythonやSQLの研修を行った後、実務に着手します。
研修内容の充実はもちろん、経験者に相談できる環境が備わっています。
このようにコグラフの研修には、実務を想定し着実にスキルアップを目指す環境があります。
興味がある方は、下記リンクよりお問い合わせください。

X(Twitter)もやってます!

コグラフデータ事業部ではX(Twitter)でも情報を発信しています。
データ分析に興味がある、データアナリストになりたい人など、ぜひフォローお願いします!




いいなと思ったら応援しよう!