KIOICHO Eng.

株式会社イーウェルのエンジニアが社内エンジニア系イベント等の情報を発信するブログです。

Azure Synapse Analyticsを使用した新サービスをリリースしました

こんにちは。IT企画本部 開発1部 開発1Gです!

開発1Gでは主によりよいサービス提供のための新しいサービスや仕組み作りによるサービスアップを目的とした開発案件を主に請け負っています。

イーウェルでは以前からサービスのAzure移行を進めており、今回Azureのサービスを利用してサービスの利用状況が確認できるサービスをリリースしましたので、ソフトウェアや実現方法・工夫点を紹介します!

【サービス内容】
WELBOXの利用状況やログイン率などの導入企業従業員のサービス利用状況をグラフなどで視覚的に表示を行い、WEBサイトに表示することで利用状況の確認や分析をすることができるダッシュボード機能です。

表示グラフ例↓ WELBOXの利用人数を月ごとの累計で表示しています。

f:id:KIOICHOEng:20211117145958p:plain【実現にあたり導入したサービス/ソフトウェア】
・Azure Synapse Analytics
 →Microsoftが提供しているデータウェアハウス(※1)のサービス。
  ※1 企業の様々なデータ(利用データや顧客データなど)を分析しやすい形に加工               し、加工したデータを保持する専用の格納場所のことです。

・Power BI Desktop
 →Microsoftが提供しているBIツール。
  Azure Synapse Analyticsとの親和性が高く、データを読み込んで折線グラフや棒グ          ラフで視覚的に表現することができます。

・Power BI(ブラウザサービス)
 →Power BI Desktopで作成したグラフを本オンラインサービスに連携(発行といいま          す)  することで、グラフデータの公開や共有を行うサービス。

・Power BI Embedded
 →Power BIで作成したグラフをWEBサイトに表示するサービス。

【実現方法・構成図】
①イーウェル内で保持しているデータをAzure Synapse Analyticsに格納します。
 格納するデータはRAWデータという加工が加えられていない生データです。
②RAWデータを分析が行いやすい集計データに加工を行い、RAWデータとは別でAzure Synapse Analyticsに格納します。
③集計データをPowerBIに取り込み、グラフデータに加工します。
④Power BI(ブラウザ)に発行したグラフを発行します。
⑤「④」で発行したしたグラフをPower BI EmbeddedでWEBサイトに表示します。

構成イメージ↓

f:id:KIOICHOEng:20211117150104p:plain

【Azure Synapse Analytics採用意図】
データウェアハウスのサービスとしてAzure Synapse Analyticsを採用とした意図は以下になります。
・弊社エンジニアが知見を持つマイクロソフト社のSQLにて操作が可能であること。
・機能の拡張性が高いこと。
・Power BIとの親和性があり、グラフ化を前提にしていたためBIツールの導入がスムーズに行えること。
・サービス維持のためのコスト算出が可能であること。

【Azureの便利な点】
①データを抽出や加工・出力を行う操作がazure data factoryという機能のパイプライン(※2)を利用してGUI上で簡単に実現できました。
※2 データのコピーなどの処理を複数定義することができる処理グループのことです。
②日々積みあがるデータを自動でPower BIのグラフに反映することができました。
③トリガー(※3)を使ってデータの抽出や加工・出力をGUI上で自動化することが出来ました。
※3 設定されたスケジュールに従いパイプラインを自動実行するシステムです。
④サービス死活監視を行うことで可用性の計測が行えました。
 定期的に可用性チェック処理を実行し、結果から可用性を計測することで実現してい      ます。

【工夫点】
①PowerBIでRAWデータをそのまま取得するのではなく月ごとに集計したデータを読み込むことで、パフォーマンスの改善を行いました。
→RAWデータは日々の利用データがすべて記録されているため、WELBOXの利用データのみでも何十万・何百万というレコードが存在します。
これをそのままPowerBIで読み込んでしまうとパフォーマンスに懸念があるため、事前に月毎に集計を行ったデータを読み込むようにしています。
 
例として利用回数を企業・メニュー別に分けて以下のように表示をしたいとします。
 

f:id:KIOICHOEng:20211117150020p:plain

このグラフの実現には以下のようなRAWデータで実現が可能です。

f:id:KIOICHOEng:20211117150034p:plain

しかしRAWデータは日々の利用データがすべて記録されるため、大量のデータが対象が分析対象となりパフォーマンスに影響が出てしまいます。
※例のため省略しましたが、実際のデータは分析には不要なデータも保持しています。
 
パフォーマンスの問題をクリアするため、RAWデータから以下のような企業・メニューで集計したデータを作成します。

f:id:KIOICHOEng:20211117150045p:plain
集計データでも想定しているグラフの表現は行うことができ、RAWデータをそのまま読み込むときよりもデータのサイズを減らすことができます。
 
②スタースキーマを設計し、PowerBI上でグラフを作成することに適したデータ構造にしました。
→どのようなグラフと表示するかを事前に確定させていたため、グラフ表示に適した集計データ構造をデザインしました。
データ構造はスタースキーマ構造を採用しました。

スタースキーマ - Wikipedia

 

ざっくりではありますが新サービスの解説などご紹介致しました。

次回の記事ではPower BIのメジャーと列の使い方について解説する予定ですので、閲覧頂けると嬉しいです!

ご覧頂きありがとうございました。