Amazon Web Services ブログ

Excel データを自動的に Amazon QuickSight に取り込む

Amazon QuickSight は、クラウドベースで高速なビジネスインテリジェンス (BI) サービスです。これにより、組織の誰もが容易に洞察を入手できるようになります。この投稿では、頻繁に変更されるデータを Amazon QuickSight ダッシュボードの SPICE (超高速、並列、インメモリ計算エンジン) データセットに自動でインポートする、サーバーレスのデータ取り込みパイプラインを構築する方法を示します。

BI 開発でアジャイルであることは、時には非常に困難です。たとえば、セルフサービス分析を実行するエンドユーザーは、追加のアドホックデータを既存のデータセットに追加し、対応する更新済みダッシュボードとレポートをタイムリーに表示することができます。ただし、ダッシュボードとレポートは通常、厳格なスキーマを持つ単一のオンライン分析処理 (OLAP) データウェアハウスの上に構築されます。そのため、エンドユーザー (データセットを直接更新する権限がない) は、ウェアハウスでデータを更新するために、複雑で時間のかかる手順を実行する必要があります。または、データセットを手動で編集するためにチケットを発行することもできますが、それでも非常に不便なソリューションであり、特にデータを頻繁に更新する必要がある場合は、相当な量の反復手動作業が必要になります。

したがって、リアルタイムのデータ取り込みを実行できる自動データ処理ツールは非常に便利です。この投稿では、エンドユーザーが Excel ファイルを Amazon S3 またはその他のデータファイル共有場所にアップロードするときに、次のエンドツーエンドプロセスを実行するツールについて説明します。

  • Excel ファイルから未加工データを消去します。これには、多くの書式設定と冗長な情報が含まれている場合があります。
  • クリーニングされたデータを取り込みます。
  • ステータスチェックを実行して、データのクリーニングと取り込みのプロセスをモニタリングします。
  • 結果通知をエンドユーザーと BI 開発チームに送信します。

最近開始されたクロスデータソース結合機能により、ファイル間、ファイルとデータベース間、データベース間結合など、Amazon QuickSight がサポートするすべてのデータソース間で結合できます。詳細については、Amazon QuickSight のデータソース間での結合を参照してください。

クロスデータソース結合に加えて、Amazon QuickSight は SPICE 取り込み用の新しい API も開始しました。詳細については、データを SPICE にインポートと、Amazon QuickSight の新しい API とテーマ機能で、分析をさらに進化させるを参照してください。

この投稿では、これらの機能を組み合わせて、Excel ファイルをクリーニングして Amazon QuickSight の SPICE データセットに自動的に取り込むアジャイルソリューションを構築する方法を示します。SPICE では、Excel からのリアルタイムデータは Amazon Redshift OLAP データウェアハウスと結合し、エンドユーザーはプロセス全体を通じてそのステータスに関する Amazon SNS メッセージを受信します。

ソリューションの概要

次の図は、このソリューションのワークフローを示しています。

ワークフローには次の手順が含まれます。

  1. エンドユーザーが Excel ファイルをオンプレミスの共有フォルダにアップロードします。
  2. Excel ファイルは Amazon S3 バケット excel-raw-data にアップロードします。また、エンドユーザーはこの手順をスキップして、Excel ファイルをこの Amazon S3 バケットに直接アップロードできます。
  3. このアップロードイベントは、SNS メッセージ Excel-Raw-Data-Uploaded をトリガーします。
  4. エンドユーザーと BI チームの両方が、新しいアップロードイベントに関するメッセージを受け取ります。
  5. また、アップロードイベントは、AWS Lambda 関数の DataClean をトリガーして Excel データを処理します。
  6. Lambda 関数は、Excel ファイルの書式設定と冗長情報を削除し、クリーニングされたデータを CSV ファイルとして S3 バケット autoingestionqs に保存し、SNS メッセージを発行して、エンドユーザーにデータクリーニングステータスに関する通知を送信します。
  7. このクリーンな CSV ファイルは、Amazon Athena テーブルとしてマップされます。
  8. Amazon QuickSight SPICE データセットでは、このテーブルはクロスデータソース結合機能を介して Amazon Redshift テーブルと結合します。
  9. S3 バケット autoingestionqs の CSV ファイル作成イベントは、Lambda 関数 qsAutoIngestion をトリガーします。
  10. この関数は、Amazon QuickSight のデータ取り込み API を呼び出し、データ取り込みステータスを確認します。
  11. データの取り込みが完了すると、エンドユーザーは Ingestion-Finished SNS メッセージを受け取ります。

前提条件

このウォークスルーには、以下の前提条件が必要です。

リソースの作成

次の AWS CloudFormation スタックを起動してリソースを作成します。

スタック作成プロセス中に、有効な E メールアドレスを Amazon SNS サービスのエンドポイントとして提供する必要があります。スタックの作成が成功すると、3 つの SNS トピック、2 つの S3 バケット、および対応する IAM ポリシーが作成されます。

チュートリアル

ソリューションを実装するには、次の手順を実行します。

  1. S3 バケット excel-raw-data で新しいオブジェクト作成イベントの SNS 通知を有効にします。詳細については、S3 バケットのイベント通知を有効化して設定する方法をご覧ください。 エンドユーザーが Excel ファイルを excel-raw-data S3 バケットにアップロードすると、イベントが Amazon SNS メッセージをトリガーします。次のスクリーンショットは、この投稿で使用する Excel ファイルの例を示しています。次のスクリーンショットは、アップロードイベントの詳細を含む SNS メッセージ Excel-Raw-Data-Upload を示しています。
  2. GitHub リポジトリから Python 3.7 のサンプルコード DataClean.py をダウンロードします。
  3. DataClean という名前の Lambda 関数を作成します。
  4. SNS トピック Excel-Raw-Data-Uploadedサブスクライバーになるように関数を設定します。
  5. SNS トピック Cleaning-is-Done を編集し、次のコードをアクセスポリシーに追加します。
    "Sid": "example-statement-ID",
          "Effect": "Allow",
          "Principal": {
            "AWS": "*"
          },
          "Action": "SNS:Publish",
          "Resource": " arn:aws:sns:us-east-1:AWS Account ID: SNS Topic Name",
          "Condition": {
            "ArnLike": {
              "aws:SourceArn": "arn:aws:lambda:us-east-1:AWSAccountID:function:DataClean"
            }
          }

    このポリシーにより、Lambda 関数 DataClean が SNS メッセージ Cleaning-is-Done をトリガーできます。

    関数 DataClean は、クリーニングされたデータの CSV ファイルを S3 バケット autoingestionqs に保存します。このバケットに新しい CSV ファイルが表示されます。次のスクリーンショットを参照してください。

    Lambda 関数が終了すると、SNS メッセージ Cleaning-is-Done がトリガーされます。次のスクリーンショットは、通知メッセージのテキストを示しています。

  6. S3 バケット autoingestionqsイベント通知を追加して、qsAutoIngestion という名前の Lambda 関数をトリガーします。この関数は、Amazon QuickSight データ API を呼び出して、SPICE データセットにデータを取り込みます。S3 バケット autoingestionqs 内のクリーニングされた CSV ファイルは、Athena テーブルとしてマッピングされます。次のスクリーンショットは、CSV ファイルのサンプルデータを示しています。Amazon QuickSight SPICE データセットでは、Athena テーブルがクロスデータソース結合機能を介して Amazon Redshift テーブルと結合します。
  7. SPICE データセットを作成します。詳細については、Amazon QuickSight のデータソース間での結合を参照してください。次のスクリーンショットは、データセットの詳細が表示される Amazon QuickSight のデータページを示しています。Athena テーブルは Redshift テーブルに結合します。Amazon S3 バケットの autoingestionqs の新しいオブジェクト作成イベントは、qsAutoIngestion という名前の別の Lambda 関数をトリガーします。この関数は、Amazon QuickSight のデータ取り込み API を呼び出し、データ取り込みステータスを確認します。データの取り込みが正常に完了すると、エンドユーザーは SNS メッセージ Ingestion-Finished を受け取ります。GitHub リポジトリから qsAutoIngestion のサンプルコードをダウンロードできます。

クリーンアップ

将来、料金の請求が発生しないように、作成したリソース (2 つの Lambda 関数、3 つの SNS トピック、2 つの S3 バケット、および対応する IAM ポリシー) を削除します。

まとめ

この投稿では、BI 開発者とアーキテクトがデータ API、Lambda 関数、およびその他の AWS サービスを使用してエンドツーエンドの自動化プロセスを完了する方法について説明しました。エンドユーザーは、リアルタイムデータを取り込み、OLAP データウェアハウステーブルと結合して、データをタイムリーに可視化できます。夜間または 1 時間ごとの ETL を待ったり、複雑な技術開発手順を理解したりする必要はありません。これで、開発環境でソリューションを構築し、非技術的なビジネスエンドユーザーに対して実演するための準備が完全に整いました。

 


著者について

Ying Wang は、AWS プロフェッショナルサービスの Data & Analytics グローバルスペシャリティプラクティスのデータ可視化エンジニアです。