このページの本文へ

FIXER Tech Blog - Cloud

Microsoft Fabricを使ってAmazon SESのメールログを可視化してみる

2024年03月18日 10時00分更新

文● FIXER/多田 祐一朗

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「【Microsoft Fabric】Amazon S3 にある Amazon SES のメールログを可視化してみる」を再編集したものです。

 こちらの記事の続編です。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から送ったメールのイベントタイプの割合などの視覚化が可能です。

最後に

 データ分析面白いです。

多田 祐一朗/FIXER
四日市所属のエンジニア。最近は名古屋でも働いてます。
基盤インフラ経験が少しある。

カテゴリートップへ

この連載の記事