Power Appsのデータフローと増分更新について


## はじめに
　この記事は、Power Apps Advent Calendar 2022 12月22日担当分の記事です。

https://qiita.com/advent-calendar/2022/powerapps

　佐賀県の小売業（和服業）で情シスをしています。
　
　地方の非ＩＴ企業でデジタルとはかなり無縁の業種ではありますが、Microsoft Power Platformを活用して少しでも社内のデジタル化が進むように頑張ってます。
　


## 今回の記事内容
　
　県のＤＸ補助事業でPower Appsにてアプリを作成する際に上から「業務システムの一部データをタブレット(Power Apps)にも表示して」と言われ試してみたPower Appsのデータフローを今回記事にしたいともいます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2277732/a0f12eb4-bb84-4ba7-7fec-6038da251faf.png)

https://learn.microsoft.com/ja-jp/power-query/dataflows/overview-dataflows-across-power-platform-dynamics-365#dataflows-run-in-the-cloud

　

## データフローとは

### １．Power Appsのデータフロー
　Power Appsのデータフローは　様々なデータソースからデータを取得・加工・変換しDataverseにデータ取込が可能で、またスケジュールによる自動更新等も可能になります。

https://learn.microsoft.com/ja-jp/power-apps/maker/data-platform/create-and-use-dataflows


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2277732/edadc5cc-43be-1d11-9f3a-8884edece5ee.png)

またデータフロー(Power Apps,Power BI)を利用する際は、必要なライセンスがありますのでご注意ください。

https://learn.microsoft.com/ja-jp/power-query/dataflows/what-licenses-do-you-need-in-order-to-use-dataflows


### ２．もう一つのデータフロー
「Power Appsでのデータフロー」と書かれている通り、Power Platform製品でPower Apps以外にもPower BIにもデータフローがあります。今回はPower BIのデータフローの説明は今回省きます。

https://learn.microsoft.com/ja-jp/power-bi/transform-model/dataflows/dataflows-create


## データフローの説明
### １．データソース選択
 新しいデータフローを作成をすると、画面の左上に「Power Query」が表示され様々なデータソースの選択可能となります。

Power Queryとはデータ読込・加工・変換(ETL)を行えるツールで、みんながよく使用しているMicrosoft ExcelにもPower Queryが内蔵されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2277732/8d841eea-e381-73b3-d780-5aed933627a1.png)


https://learn.microsoft.com/ja-jp/power-query/power-query-what-is-power-query


### ２．Dataverseに取込めるようにデータを整理する
 データソースを選択し接続設定を行うとPower Queryエディタが表示され、Dataverseにデータを取込めるように画面操作でデータ整理を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2277732/7cfd2af4-0643-1d46-1a43-fe38305b79a2.png)

　データの型（文字型・数値型・日付型）についても、Dataverseで定義しているデータ型と同じにします（列マッピングや増分更新の日付指定に影響するため）。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2277732/a387ea16-1257-6229-5ba4-0b78f2a4ea9e.png)


### ３．列マッピング
#### 　①列マッピング（キー設定）
　Dataverseにデータを取込・更新を行う際は、Dataverse側のキー設定を行います。
　Dataverseテーブルのスキーマのキー設定よりキーを設定することが可能です。

  キーの設定をしていないと、全く同じデータであっても、更新されずデータが追加されていきますので更新データがある場合にはキーの設定が必要です。
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2277732/abc42671-48a9-b21a-5444-d7b0c0611753.png)
　
#### 　②列マッピング（紐付け）
　Dataverseのカラム名がPower Queryエディタでのヘッダ名との紐付けを行います。
　Dataverseテーブルのカラム名が「表示名」ではなく「名前」が表示されているので注意が必要です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2277732/99ac9629-6624-782d-e068-8d980d7a74de.png)


### ４．更新日時の設定
 スケジュールによる更新設定を行います。
更新日時については、UTC時刻(日本時刻の９時間前）にて設定を行うため注意が必要です。

データフローの一覧画面では日本時刻で表示されるので、最終実行日時や次回更新日時は日本時刻で確認することが出来ます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2277732/0a7741a4-4936-b72b-3999-434d5ac6544e.png)



### ５．増分更新について
　増分更新を利用することにより、更新するデータ範囲指定することにより、更新する時間を短縮することが可能です。
　「フィルタ処理する日付または時刻列」はPower Queryエディタのヘッダ項目（日付形式のみ表示）を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2277732/56bb3bb9-6429-c2c4-4bc9-07d7e5092efa.png)



##  結果　データフローとPower Appsの活用
　以前まではレガシーシステムということもあり、買上商品の写真管理については、営業さん・店長さんの携帯での写真管理しかできなかったのですが、データフローで業務システムから取り込んだ買上データに写真を紐付けすることにより、買上商品の色・柄の把握ができかつ写真を一元管理（会社で管理）することが出来ました。（写真の登録店舗はまだ約６割ですが・・・・）



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2277732/d2e5c681-086a-df81-e932-5fe7136a715f.png)


他に前まではパソコン（レガシーシステムのため）でしかお客様情報を把握できなかったのが、データフローにて接客に必要な情報はタブレット（Power Apps)でも見れるようになり、接客の幅が広がるようになったと思う。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2277732/ead9f39e-88eb-2f2f-3d91-78a43292edf0.png)


## まとめ
  Power Appsのデータフローを使用すると、比較的簡単な操作で業務システムからデータ取込を定期実行でき、Power Apps側に業務システムのデータを活用したアプリを開発することが可能です。
　
　ただローコード開発（Power Apps)・セルフサービスBI(Power BI)について、簡単にアプリ開発・データ分析が出来るツールだと経営者が思った（簡単でないと伝えてはいるが・・・）らしく、秘密裏に幹部や店舗にシステム要望やデータ分析の要望を集めて、たった一人の市民開発者に依頼（情シス業務もやりつつ）しようとしたので、開発の大変さや知識を得るための勉強についての大変さを伝えていく必要がある。
　

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2277732/90f285c5-eb30-83a1-dd6d-e9f3cf151ae2.png)