データエクスポート(CSV/Excel)のTipsとベストプラクティス | Data Export - Tips and Best Practice | Japanese

Amazon QuickSightでは、ダッシュボード上に表示されたデータをエクスポートする機能を提供しています。この記事では、その機能を利用する場合のTipsとベストプラクティスを記載します。

エクスポート機能は、インサイトを除く、全てのビジュアルにおいて、以下のようにメニューオプションアイコンを選択することにより、CSV形式へのエクスポートができ、テーブルとピボットテーブルにおいてはExcel形式へのエクスポートをすることができます。
article1

上記の通り、このエクスポート機能はReader(閲覧者)にて使用することができますが、この機能の使用自体を許可するかどうかを制御することができます。
まず、ダッシュボードの公開時に、各々のダッシュボードレベルで、以下のようにチェックボックスにて許可をすることができ、デフォルトは許可する設定になっています。

また、ユーザレベルでも制御が可能です。あらかじめ管理者が管理者画面にてユーザーのカスタムアクセス許可を作成し(以下参照)、それを個別にユーザ設定することで、当機能の使用を制限することができます。
image (23)

当機能を使用した場合は、そのAudit情報がCloudTrail上に記録されます(以下参照)

image (24)

ユースケース

当機能は、クエリーを書かなくてもデータソースにあるデータを、簡単にダッシュボード上からエクスポートできる利便性と、QuickSightの行レベルセキュリティ機能など、利用するユーザーに応じてデータを制御できるセキュリティ機能を合わせて利用できるため、様々なユースケースにてご利用いただいています。主なユースケースとしては、以下の通りです。

データセットで定義されたデータをダウンロードし、データを再利用
データソースに直接接続し抽出した方が望ましいケースもありますが、データセット内のデータをできるだけ多く正確に取得することを目的とし、多くの場合において、シンプルにデータを表示できる「テーブル」が使用されます。

フォーマットされた集計データをダウンロードし、業務で利用
業務で必要となる指標などの集計項目が含まれていたり、集計処理されたデータをエクスポートする目的で、クロス集計にてデータ表示ができる「ピボットテーブル」が利用されています。

Tipsとベストプラクティス
これらのユースケースでの利用にあたり実装する際のTipsとベストプラクティストについて、以下記載します。

CSV/Excelエクスポートのサイズ制限範囲内で データ量を調整する

CSV形式かExcel形式、またExcel形式の場合はテーブルかピボットテーブルかにより、エクスポートのサイズ制限が異なります。

  • CSV : 500 MB または 100万行
  • Excel
    * ピボットテーブル : 40万セル数 または 5万行
    * テーブル:80万セル数 または 10万行

image (27)
image (28)

Reader(閲覧者)は抽出したいデータの項目を選択できない

計算フィールドを使用して動的にデータ項目を切り替える手法については、DemoCentralに紹介されていますが、計算フィールドで使用できる最大文字列数に制限があること、また列レベルセキュリティで制御している項目がその計算フィールドに含まれていると、計算フィールド自体が使用できなくなります。実際にその方法で実装できるかどうかは、十分にテストして確認する必要があります。

データ項目数は制限範囲内で設定する

テーブル、ピボットテーブル各々において、指定できる最大項目数があります。まずテーブルにおいては、ドキュメントに記載されている通り、指定できる列数、さらにピボットテーブルにおいては、ドキュメントに記載されているように、行と列の合計数において制限があります

ビジュアル表示にタイムアウトがある(ビジュアルのクエリタイムアウト

ビジュアル生成時、QuickSightはデータを取得するクエリーを実行しますが、当タイムアウトは、その結果を受け取るまでの最大待ち時間に相当します。SPICEと直接クエリー、各々のデータセットに対して同様のタイムアウト値となっており、個別変更は不可になります。(タイムアウトが発生すると、以下のようなエラーメッセージが表示されます)

このタイムアウトを発生させない対処法として、まず、使用する各々のビジュアル(テーブルかピボットテーブル)の表示仕様とベストプラクティスについて、以下に記載します。

「テーブル」の場合

  • 表示において、ページネーションをサポートしているため、レンダリングはページ単位に実施され、1ページにおける件数を選択可能
  • ビジュアル表示上の重複を避けるため、ソート処理を実施し、ページ表示制御。ソート項目の指定はできないので項目数を必要最小限にする
  • テーブル作成時の設定で、“グループ化の条件”で設定した項目で集計処理(Group-by)するため、できるだけ”値”に設定することを推奨(ブログを参照)

「ピボットテーブル」の場合

  • ページ単位のレンダリングはなし
  • 全てのデータを取得する一方で、段階的に画面描写を実施(ブログを参照)
  • 設定する項目数、計算フィールド・小計・合計の有無、カーディナリティの高さに大きく依存。(詳細はドキュメントにあるベストプラクティスを参照)

その他のベストプラクティスは、以下の通りです。

  • 計算処理をビジュアル描画時ではなく、可能な限りデータ準備またはデータソース側で実施する(ブログを参照)
  • 直接クエリーであれば、データソース側のチューニングをする
  • フィルター設定をして表示データを絞る
  • フィルターのデフォルト値を利用し、初期描画でタイムアウトしないようにする(「すべて選択」を選択肢から除外したり、直近1ヶ月分をデフォルト設定にする、など)
  • 直接クエリー であれば、 データセットパラメータ機能を利用しカスタムクエリーで最適化、デフォルトフィルター値設定を強制する

フィルターを利用した場合、抽出できるデータはQuickSightで利用できるフィルター定義(またはパラメータ定義)の範囲に依存する

日付型項目のフィルターに nullを使用することは現時点ではできません。つまり、日付型項目にフィルター設定をしている場合、日付型項目にnullが入っているデータは抽出できないということになります。対処としては、文字列型であれば、null値はサポートしているので、文字列型の日付データをフィルター用に作成することで代替は可能になります。文字列型であればnullをサポートしているので、文字列型の日付データをフィルター用に作成することで代替は可能です。




その他エクスポート機能の応用例

ここまでは、Reader(閲覧者)がダッシュボード上でオンデマンドでデータをエクスポートする方法について紹介しました。QuickSightは、Paginatedレポート機能をサブスクリプションすることにより、さらに幅広いユースケースにてご利用いただけるようになっています。以下にそれを紹介します。

スケジュール配信機能
Paginatedレポート機能では、ダッシュボード上のテーブル・ピボットテーブルの表示データを、Eメールのスケジューリングにてエクスポート生成し、そのURLリンクを、ダッシュボード上で過去1年分アーカイブする機能を提供しています。

当機能を利用するには、あらかじめダッシュボードの作成者が、Eメールのスケジューリングにて、対象となるテーブル・ピボットテーブルを指定(最大5つまで)し、ダッシュボードへのアクセス権限をもつQuickSightユーザにEメール送信を設定します。

10MB未満であれば、Eメール受信者は、Eメールへの添付ファイルという形で受信することもできますが、10MB以上であれば、ダッシュボード上のスナップショット一覧から、エクスポートデータを取得することができます。スナップショット上のファイルは1年分保管されます。

エクスポートできるサイズ制限は、オンデマンド方式と比較し、以下のようにさらに多くのデータをエクスポートできるようになっています。

  • CSV 1 GB または 300万行
  • Excel 1600万セル数 または 100万行

SNAPSHOT Export API

APIにて、特定のダッシュボード内のテーブルやピボットテーブルを指定し、その表示データをプログラムにてエクスポートすることができます。エクスポートするデータの要件に応じ、パラメータ化したフィルター値や、タグを利用した行レベルセキュリティを指定、エクスポートするファイル形式、さらに、エクスポート生成されたファイルを、特定のS3バケットに配置することもできます。
APIで生成されたエクスポートファイルは、上記スケジュール配信機能と同様、CSV/Excelエクスポートのサイズ制限が緩和されており、さらに、QuickSightユーザーのみならず、QuickSightユーザでないユーザにも提供することができます。

当APIは、以下の通り3つのAPIが提供されています

  • StartDashboardSnapshotJob(ダッシュボード内のデータのエクスポートを非同期で実行するジョブの開始)
  • DescribeDashboardSnapshotJob(上記で実行されたジョブのステータスを提供)
  • DescribeDashboardSnapshotJobResult(上記で実行されたジョブの完了結果を提供)

以下は、StartDashboardSnapshotJobの使用例になります。

上記にて、ジョブが開始されると、DescribeDashboardSnapshotJobにて確認することができ、以下のように、その使用状況を確認することができます。

ジョブが完了すると、DescribeDashboardSnapshotJobResultにて、以下のように、生成されたエクスポートファイルを取得することができます。

当APIを利用することにより、特定のS3バケットににエクスポートをすることができ、さらにQuickSightの利用ユーザや利用していないユーザへの配布もできるので、以下のようなユースケースにもご利用いただくことができます。

  • QuickSightの書式設定されたExcelシートのバッチ生成や、アーカイブ保管用CSVファイルのバッチ生成
  • Webアプリケーションから、オンデマンドでエクスポートファイルを生成し、Slackなどを介したデータ共有や外部システムへの連携
1 Like