Power BI データフローによるデータソース共通化の取り組み

この記事は 弥生 Advent Calendar 2022 の8日目の記事です。

弥生の川本です。開発本部でQAエンジニアを担当しています。
業務効率化ネタでよく「もくテク」に登壇していますが、今回は業務効率化ネタから離れて、ごく一部の人に刺さるかもしれない実践ネタを共有させて頂こうと思います!
タイトルの通り、Microsoft Power BIに関連した実践ネタです。Power BIがどういったサービスで、どんなことができるのか、みたいなお話はすっ飛ばしてしまいますがご容赦くださいませ。

この記事は以下のような困りごとをお持ちの方に刺さるかもしれません。

  • 同じデータソースを参照するデータセットを複数運用していて非効率的だと感じる
  • データフローとデータセットの更新を連続かつ自動で行いたい

目次

はじめに

弥生では各プロジェクトの品質データをPower BIで確認できる仕組みを構築しています。
基本的な構成としては以下の通りで、Power BIがデータソースを集計してWebブラウザ上で表示してくれる仕組みです。Power BIから弥生社内のデータソースにアクセスするための「データ ゲートウェイ」を用意する必要はありますが、それ以外のデータベースやWebサーバーはPower BI自体が担ってくれるので、とてもかんたんです。

同じデータソースを集計しているのに反映されない!

Power BIの運用が軌道に乗って集計するデータセット(データの集合体)が増えてくると、ちょっとめんどくさい課題が発生しました。

同じデータソースなのに、データセットが異なると、それぞれで集計しないといけない!!!


図にすると、こういうことです。

データセットはそれぞれが「独立した箱」で、仮に同じデータソースを集計していても「箱」に入れる時点で別物の扱いになってしまうのです。
そのため、せっかくデータセットAの方で集計しても、データセットBには最新のデータが反映されません。データセットBも最新データにするためには、あらためて集計(更新)する必要があります。

ちなみに、Power BIにはスケジュール更新機能があるので、それぞれのデータセットで更新スケジュールを設定すれば、運用上の手間は軽減することができます。
一方で何度も同じデータソースを集計するのは仕組みとして非効率。もっと効率的にすべてのデータセットを最新データにしたいところです。

データセットからデータフローへ

上記の困りごとを解決するための仕組みが「データフロー」です。
データセットが「独立した箱」だとすると、データフローはかんたんに言ってしまえば「共有できる箱」だと認識しています。

図にすると、こういうことです。

このような構成にすることで、データフローが集計した最新のデータをデータセットから参照することが可能となります。
また、今後データセットC、データセットD・・・と同じデータソースを集計する成果物を作る際には、このデータフローを参照して必要なデータだけ持ってくれば良いので、非常にカスタマイズが容易になります。

なお、「データフロー」を使用するためには、以下の条件を満たしている必要があります。

  • Power BI Premiumライセンス(有料)を契約していること
  • Power BI Premiumの共通ワークスペースを作成していること

データフロー更新をトリガーにデータセットを更新しよう

さて、データフローを導入したことで、何度も同じデータソースの集計をする必要がなくなりました。
しかし一方で、「データフロー/データセットの更新」という点では別の課題が生まれます。

データフローとデータセットはそれぞれが「別の箱」なので、結局はそれぞれを更新する必要があります。
つまり、適切に最新のデータを表示しようとすると、
①データフローを集計(更新) ⇒ ②データフロー更新完了後、データセットを更新
という手続きを取らなければなりません。

しかし残念なことに、Power BIのスケジュール更新機能はあくまで時間をトリガーに更新するだけなので、データフローの更新完了をトリガーにデータセットを更新するといった器用なことができないのでした。

「ん!?見出しと違くね!?」と思った方、安心してください。
Power BIにはそのような機能はありませんが、Microsoft Power Automateというサービスで実現可能です。

Power Automate は、定期的なタスクを自動化するための Microsoft による iPaaS プラットフォームです。
以下のような手順で、「Power BIのデータフロー更新をトリガーに、Power BIのデータセット更新を自動的に行う」フローを作成することができます。

  1. 左部メニューより、[マイフロー]-[作成]を押下する
  2. 「自動化したクラウド フロー」を押下する
  3. 「データフロー」で検索し、「データフローの更新が完了したとき」を選択する
  4. 「グループの種類」「グループ」「データフロー」の項目を設定して、[新しいステップ]を押下する
  5. 「データセット」で検索し、「Power BI」を選択する
  6. 「データセットの更新」を選択する
  7. 「ワークスペース」「データセット」の項目を設定して、[保存]を押下する
  8. 以上で設定完了

なお、上記の仕組みは、Power Automateの無料ライセンスでも実現が可能です。
ただし無料ライセンスだとトリガーの実行間隔が15分間隔という制限事項があります。
もし15分間隔だとタイムラグが・・・という方は、有料ライセンスにすることで実行間隔を短縮することができるようです。

まとめ

Power BIをより効率的に運用する実践ネタをご紹介しました。
分離独立したデータセットをデータフローに統廃合したことで、重複していた集計時間を大幅に削減することができました。 不要な繰り返し集計が無くなり集計リソースにゆとりが生まれたことで、結果的に集計のパフォーマンス自体も良くなったような印象があります。
また、今後の保守性、拡張性が大いに改善されたことが、運営チームとしては大きいなーと感じています。

この記事が誰かの参考になれば幸いです!



herp.careers

herp.careers