こちらの記事の続編です。Amazon S3 から直接データを参照して Microsoft Fabric で可視化をしてみます。
はじめに
Microsoft Fabric というのは、Power BI、Azure Synapse、Azure Data Factory などを内包したオールインワン分析ソリューションのSaaSです。Azureで分析用のシステムを構築しなくても Microsoft Fabric を使えば割とすぐに分析が可能です。データの蓄積は従来通り実施し、分析だけSaaSとして切り離したイメージですかね(多分)
イメージ図
今回やることのイメージ図です。
Fabric 容量を作成
30日間の無償版は今回利用しない手順としてます。
Azure ポータルから Fabric 容量を作成します。サイズに気を付けないととんでもない額を請求されるのでご注意ください。
今回は F4 を選択しています。F2 を過去に使っていた時期があるんですが、すぐに性能の制限に達して検証どころではなかったので。
作成した容量を Fabric で指定する
Microsoft Fabric にアクセスして右上の歯車アイコンをクリックし、管理ポータルをクリックします。
ファブリック容量タブをクリックして移動し、先ほど作成した Fabric 容量をクリックします。
一番下にある「この容量に割り当てられているワークスペース」を開いてワークスペースを割り当てます。
Amazon S3 のファイルをFabricで表示する
Microsoft OneLake のショートカットを使います。ショートカットはAzureやAWSなどにあるデータソースに接続し、Fabric側で様々なデータを管理できるようにする仕組みです。
Amazon S3 への接続
LakeHouseを作成します。
S3 のショートカットを作成します。S3接続用のIAMの作成と必要な権限の付与をあらかじめ実施しておきます。
KQL データベースの準備
データベースの作成
データベースを作成します。
テーブルの作成
イベントタイプがDelivary用のテーブルを作成します。
ソースではソースタイプをファイルに指定します。S3からイベントタイプがDeliveryのメールをエクスポートしてアップロードします。
OneLakeにショートカット作ったのでそこから参照すればいいじゃん?と思ったんですけど、ログファイルに拡張子が無いせいか参照できませんでした(僕が知らないだけでできるのかもしれませんが)
ファイル内容の構成をもとにテーブル作るだけなので今回は特に気にせずやります。
データ形式を Json に変更して Nested levels を深くします。ここでは特に削除してませんが、必要のないカラムは消した方がテーブルに取り込まれるデータ量が少なくなるのでなるべく実施した方がよいと思います。
部分的なデータのプレビューに出てきたカラムにいくつか dynamic 型があるのでそれらを別のデータ型に変更します。PowerBI に取り込んだ時に dynamic 型のままだとうまくできなかったので別のデータ型に変更しています。 テーブル作成後でも以下クエリで変更ができるのでそちらでも大丈夫です。
.alter column ['{テーブル名}'].['{カラム名}'] type=string
また、mail_headers(mail.headers)のカラムはそのままだとうまく値を取り出せないので工夫する必要があります。今回はとりあえず可視化できればいいので特に触れません。
データのコピー (OneLake ⇒ KQL データベースの対象のテーブル)
Pipeline を作成して OneLake にあるショートカットから KQL データベースのテーブルにデータをコピーします。
データの確認
KQL データベースにデータがコピーされたので確認します。シミュレーターで送ったメールは邪魔なのでWhere句で省いてます。Pipeline詳しくないんですが、Pipelineの中で省く処理を入れれるならそうした方がいいです。後述のPowerBIにて、データの取り込み時に必要のない値は除外できるので手間ですがこちらでも問題ないと思います。その場合はKQL データベースに取り込まれるデータ量が多くなる点に注意です。
PowerBI で可視化
PowerBI Desktop にて Microsoft Fabric に接続して KQL データベースのテーブルデータをインポートします。
イベントタイプがDeliveryのものしか今回試してませんが、Deliveryと同じようにBounce用のテーブルを用意してあげればまとめてPowerBI上にインポートすることができるので、SES から送ったメールのイベントタイプの割合などの視覚化が可能です。
最後に
データ分析面白いです。