[Power BI] データフローを考える🤔

# はじめに

Power BIのデータフロー。便利なのにあまり活用している話を聞かない。地味だからなのかな。
データフローの魅力を伝えるために、10月のPower BI勉強会で話したことをブログにまとめました。

## 大前提

データフロー大好き🎉

データフローを活用して社内のデータ管理もしています。社内の実環境でも、データフローがたーくさんあり、データ分析基盤のなかで重要な位置づけになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/51dfbfe9-e71f-605f-cf0b-c7affe1872bf.png)

# データフローとは（概要）

https://learn.microsoft.com/ja-jp/power-bi/transform-model/dataflows/dataflows-introduction-self-service

> データの量は増え続けるので、データを整った形式のアクションにつながる情報に変換することが課題です。大量のデータをアクションにつながる分析情報に迅速に変換できるよう、分析を行ったり、ビジュアル、レポート、ダッシュボードに設定したりする準備が整っているデータが必要です。Power BI のビッグ データに対するセルフサービスのデータ準備を使用すると、ほんの数クリックでデータを Power BI の分析情報にできます。

公式ドキュメントには上記のように書いてあり、つまり**データの加工を行う場所・機能**であるということがわかります。

更に具体的には、Power BI Serviceからデータフローは作成することができ、ExcelやPower BI DesktopのPower Queryとほぼ同じUIの画面が開きます。**Power Query Online**とも呼びます。

# データフローとは（2回目）

先程のドキュメントをさらに読み進めていくと、以下のような記載があります。

- Power BI 内の多くのデータセットおよびレポートで共有できる**再利用可能な変換ロジック**を作成します。

- 基になるシステムに接続するのではなく、**アナリストにデータフローへの接続を強制することで、信頼できる単一の情報源を作成し**、アクセスするデータと、データをレポート作成者に公開する方法を制御することができます。

- 大量のデータを処理して ETL を大規模に実行する場合、**Power BI Premium を使用したデータフローはより効率的に拡張され、柔軟性が向上します**。 データフローにより、さまざまなクラウドおよびオンプレミスのソースがサポートされます。

- **アナリストが基になるデータ ソースに直接アクセスするのを防ぎます**。 レポート作成者はデータフローに基づいて作成できるため、基になるデータソースへのアクセスを少数の個人にのみ許可し、アナリストがデータフローにアクセスし、それに基づいて作成できるようにする方が便利な場合があります。 このアプローチを使用すると、**基になるシステムへの負荷が削減**され、管理者は、システムが更新から読み込まれるタイミングをより細かく制御できます。

![](https://learn.microsoft.com/ja-jp/power-bi/transform-model/dataflows/media/dataflows-introduction-self-service-flow.png)

# データフロー図解

という、文字でつらつら書いてあることを図解してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/64812ee6-00bb-4fe7-0573-0fe2e96fc763.png)

上図のようにデータソースにPower BIから直接接続することは往々にしてある形式です。Power BIには豊富なコネクターが用意されています。直接接続できるデータソースが多いのも製品の魅力の一つですよね。

#### しかし…

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/2e47e938-ea28-e8b0-b561-e412433c6957.png)

データソースに直接接続してBIを進めていくと、同じようなデータ加工処理がそれぞれのデータセット上で行われていることが起こりえます。同じようなデータ加工処理をそれぞれが行うと、もちろん**時間の無駄**もありますし、**計算リソースの無駄**も起こります。さらに、当然、同じ処理をしているとおもっていても、人間ですから、間違うことだってあります。見るレポートによって数字が違うなんてあってはいけないですよね👊

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/6b79d1f9-0bed-d4c2-9a1e-654f9a0c7cac.png)

ここででてくるのが**Dataflow**です😁

それぞれ末端のユーザーがしていた同じような加工集計処理を、間に挟んだDataflowで行うことで加工集計を各ユーザーが行う必要がなくなります。便利ですよね。

そして、加工処理を一箇所で行うことになるので、**信頼できる単一の情報源**になります。**再利用可能な変換ロジック**ですので、このデータをもとにさらに細かくデータ加工を行っていくこともできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/a285fd3c-d8db-dc28-46cb-f88eb78ad615.png)

もちろん、同じように、ユーザーが使いやすそうなテーブルを最上流のデータソース側で作成することも可能です。可能ですが、やはり、**時間がかかります**😭 データエンジニアに頼んで、数日待って、ようやくデータが完成する。アクセスしてみたら、思ってたのとちょっと違う😭ありますよね。

**DataflowはPower Queryと同じUI**ですから、ユーザー自身でデータの加工集計を行うことができます。思い立ったらすぐ、希望のデータを自分で生み出すことができます。
Dataflowを分析基盤に活用することで、ビジネスを止めることなく、分析可視化を続けられます。加工処理を上流に移すのは、その**加工処理が長期的に必要だということが確定したあとにやればいい**という考え方もできるかもしれません。

# Power BI Premium の Dataflow

Power BI PremiumのライセンスをもっているとDataflowは更に進化します💪

https://learn.microsoft.com/ja-jp/power-bi/transform-model/dataflows/dataflows-premium-features?tabs=gen2

### 拡張コンピューティング エンジンの使用

- CSVではなくSQL Databaseに保存
- joins や group by 演算など) を実行する計算テーブルのパフォーマンスが向上💪

### 計算対象エンティティ/リンクされたエンティティ

- 計算列の追加ができる。
- 処理を段階に分けた実装が可能
- メダリオンアーキテクチャをPower BI Service内に作成できる

https://www.databricks.com/jp/glossary/medallion-architecture

### 増分更新

データフローで増分更新の設定が可能

### データフローへのダイレクトクエリ

これは純粋に便利😁
データソースへのアクセス負荷軽減も考えられる。

# データ加工集計をどこで行うのか

これは答えはなく、社内の組織・チームによって変わってきます。しかし重要なことは**上流**で行うこと。また、役割分担を明確にすること。

データエンジニアがチーム内にいるのであれば、SQLデータベースが上流となり、必要なスキルはSQLやPythonになるでしょう。

データエンジニアがチーム内にいないのであれば、データフローを活用することで、アナリストやビジネスユーザーだけでもBI・可視化・分析を行うことができるのがPower BIの強みだと考えます🎉

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/5bf0ef93-e183-4ced-b224-10536aa1245a.png)

組織やチームに応じて、最適な構成をサッと提供できる管理者も重要な役割になりますね😁

# まとめ

Power BIを可視化ツールと捉えてしまうと思考が止まります。Power BI ServiceはDataflowやDatamartも含めて、幅広い機能を持っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/bcf000e8-ee67-9535-995e-073f527312c0.png)

https://learn.microsoft.com/ja-jp/azure/architecture/example-scenario/dataplate2e/data-platform-end-to-end?tabs=portal

こういったアーキテクチャを見ると、Power BIは可視化ツールとして右端の方に置かれていることが多いです。が、実態は、Power BIの世界の中でもETLをすることはできて、アーキテクチャを構成することができてしまいます。

Power BI Premiumの環境だと、Dataflowを活用して、逆にデータベース側の処理能力を落とす＝コスト削減を考えることだってできます。

データ分析、データ加工、アーキテクチャ・・終わりはありません、みんなで考えましょう。そして、いいアイデアはぜひシェアし合いましょう！😁

Happy Power BI ！🎉

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80467/a54dc337-8818-56e5-8000-8e611cc4526c.png)