AWS QuickSightのできないこと

1 min read読了の目安(約1100字

本当はできるかもしれないが、できないことをツラツラ。

QuickSightはBIツールであること

何を言っているかというと、BIツールで処理した結果を取り込んでQuickSightで解析、といったことには向いていないと思います。
そんなことはしないと私も思っていましたが、勘が良い方は既にわかっているかも知れません。そうです、Excel先生です。

Joushi:今あるExcel廃止してQuickSight利用したいんやけどー
Boku:おっけーすー(ちょっろ
Boku:よっしゃ、ExcelをQuickSightにアップロードして必要な行列だけ抜きだしてグラフ化・・・できない。

ソリューションとしては以下になります。
S3にExcelをUpload->Lambda(or Glue)で必要な行列を指定してCSV化->Athenaで読み取り集計等しやすく->QuickSightで読み取り出力
ただ、CSVの生データをできるだけ取得するのが良いかと思います。

Athenaで取り込むときは型に注意

S3からLambdaを通してAthenaに取り込むとき、データ型に注意しましょう。
俺的ベストプラクティスは以下です。
・AthenaのTableではstring型で定義し、Viewでint型などの正しいデータ型に変換
・View変換時、int型に対して空文字がある場合は、関数使って0に変換
・QuickSightではViewを見る

Lambda処理の勘所

・Excelのシートごとにどの範囲を読み取るか異なることが往々にあるため、変数で外だししましょう。シートが変わっても楽です。
・CSVをS3に格納するときはExcelファイル名/シート名/タイムスタンプ/シート名のCSVファイルにすると、Athenaで読み取るときにシート名単位で過去分も読み取れるので良いかなと思います。その場合、ファイル名とシート名が往々にして日付入りでユニークな名前になるので、そこはネーミングルールつけてPGで処理か、マンパワーで都度格納時に同じ名前にする、になるかと思います。
・シート名にすみ括弧など、マルチバイト文字がある場合は、削除するのが個人的にはクールです。
・計算式がある場合は、計算後の結果を取得するのか決めましょう。標準だと式になりますが、PythonのExcel読み取りライブラリを利用すれば、計算結果を取得することができます。
・セルの中の改行の取り扱いを決めましょう。スペース置換するとか。

色々苦労はありますが、AWSなら無料枠で色々できたりするので、おすすめです。
したっけー。