15
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Power AppsAdvent Calendar 2024

Day 1

Power Appsのデータフローという最高にCoolなデータ活用を解説!

Last updated at Posted at 2024-11-30

Power Appsでのデータフロー

データフローというとPower BI🧐!!

となりそうですが、Power Appsでのデータフローという機能が存在します。

こちらはPower Apps ポータルから活用することができる高度なデータ活用機能です。

Power AppsPower Automateにおいて、データ統合の手段は複数存在しますが、お勧めはダントツでデータフローを用いる方法です。

こちらについて解説していきたいと思います。

この内容は2024.11.28~30に開催された Japan Microsoft 365 コミュニティ カンファレンス 2024の登壇でも取り扱わせていただきました。
Power Platform でもこの機能が使えるんだ👀✨となれば幸いです!

データフローの詳細

データフローはPower Apps ポータルの中に存在します。ナビゲーション ウィンドウからデータフローを選択すると出ています。

image.png

この機能は、多様なSaaS・ビジネスデータとの接続、データの保管、加工を可能にします。

データの格納先は、Microsoft Dataverse または Azure Data Lake Gen2 ストレージです。

方法 ストレージ Power Query 他アプリケーションとの連携 増分読み込み スケジュール更新 備考
標準データフロー Standard V2 Dataverse Dataverseを通して可能 既定 ビジネスユーザー部門でも利用しやすい
※AI関数・計算されたテーブルは対象外
分析データフロー Azure Data Lake Gen2 Power BIのみ フルロード
※設定可能
高度な機能を含めて提供

データフローを利用する条件

データフローの活用自体は、有償ライセンスが必要です。
2024.12現在では下記のライセンスが該当します。

Power Apps Premium

Power Apps の開発者向けプランでは利用できません。ご注意ください。

「有償ライセンス💰」と聞くと、躊躇してしまう部分もありますが、Dataverseのリッチなデータ管理機能を使えるというだけでも十分にペイする機能ではないかと思います。

そして個人的にこれは👀🔥ということが、公式の資料にも記載があります。

注意
データフローを使用するには、有料の Power Apps プランを使用する必要がありますが、データフローを使用することによって別々に請求されることはありません。

データフローの使用方法

コストコントロールが一定可能であるともいえます。

データフローの活用手順

データフローは単一のPower Platformの環境内に作成されます。
環境を選択したうえで、下記の順序でデータフローを定義します。

  1. データフローの作成
  2. Power Queryを用いたデータ加工の定義
  3. テーブル(Dataverse)へのマッピング
  4. 更新頻度の設定

image.png

「3.テーブル(Dataverse)へのマッピング」ですが、新しいテーブルへの読み込み既存のテーブルへの読み込みの二つをサポートしています。
個人的には既存のテーブルへの読み込みを選択し、あらかじめ定義しておいたテーブルにデータを蓄積していく方法がやり易いです。

推しのポイント: 2. Power Queryを用いたデータ加工

Power BI DesktopPower Query エディターと同じPower Queryの機能を利用することができます。

image.png

私自身、Power Automateのデータ加工、Office Scriptsの解説など、Qiitaで取り上げてきましたが、それぞれ操作性に癖があります。Power Appsも同様です。

完全に主観で比較すると下記のようになりました。

Power Platform データフロー Power Automate Office Scripts
手段 ローコード ノーコード コード
データ変換 高度な変換可能 高度な変換にはテクニックを要する 柔軟に制御可能
エラーハンドリング 標準で失敗処理通知を制御 柔軟 カスタマイズ
スケジュール実行 標準 標準 要Power Automate
外部システム ◎ 多数のコネクタ ◎ 多数のコネクタ 限定的
大量データ処理 百万単位 千単位 万単位
バッチ処理 並列処理は限定的 実装は可能
リアルタイム処理 要Power Automate 最適 要Power Automate
コスト 要プレミアムライセンス 追加費用が必要である可能性あり 低コスト
アクセス制御 ◎ 詳細な設定可 ◎ 詳細な設定可 -
ログ 標準 標準 -
DLP対応 ◎ 対応 ◎ 対応 -

データ加工の手段として、ユーザーフレンドリーである強力な機能は、Power Queryに軍配が上がると自分は考えています。視覚的に加工プロセスを把握することができ、クイックに加工プロセスを定義することが非常に魅力的です。

image.png

この部分は考え方の相違により、ご意見をいただきそうな部分のため、これ以上の持論は避けます。
そしてPower Query自体の説明についても、ほかの文献やlearnに解説を譲らせていただきます。

4. Tips !! LoopによるPower Queryのドキュメンテーション

コラボレーションアプリであるMicrosoft LoopでMermaid図が描画できます。

Power Queryの基本機能でクエリの依存関係を可視化することができますが、Power Query M式からMermaid図の描画がCopilotからクイックにできます。

image.png

プロンプト例
下記のPower Query M式をもとに依存関係をMermaid図で描画してください。
# Power Query M
{コードを貼り付け}

image.png

結果

上記の例は少し微妙ですが、クエリやテーブルの依存関係の可視化し、保守性向上に役立ちますね!

ちなみにマニュアル作成でもCopilotは大活躍するため、ガンガン使い倒すことをおススメします!

3. テーブル(Dataverse)へのマッピング

「2. Power Queryを用いたデータ加工」の結果は、Dataverseのテーブルに格納することができます。
カスタムテーブルだけではなく、標準テーブルも同様です。

どの列に「2. Power Queryを用いたデータ加工」の結果を当てはめるか、これがマッピングに該当します。

image.png

4. 更新頻度を設定する

そして嬉しい機能として更新頻度の設定があります。
コチラは任意のスケジュールでデータフローを更新を自動で設定することができます。

image.png

この機能はPower Automateによる更新とは別物です。
さらに更新頻度をフレキシブルに設定したい場合は、後述するPower Automateとの連携をご参照ください。

原則的に、Power Appsのデータフローは増分更新です。
取引履歴のようなデータを蓄積し続けます。

マスタのようなデータを更新する機能にする場合は、Power Platform 管理センターの機能を活用します。

豊富なDataversePower Platform 管理センターとの組み合わせでハンドリングできるイメージです。魅力が満載です。

大規模なデータを一括で処理するオプションとして、ビジネスユーザー部門からでも心強い機能ではないでしょうか。

Power Automate テンプレート

Microsoft learnにて、データフロー コネクタを利用したテンプレートが紹介されています。

自分で一から考えずとも用意されているのは、ありがたいです🐟

さっそく作成してみましょう🐟

せっかくなので、データフローを作成する手順をみていきます。
今回は特定のデータソースからデータを取得せずに、Power Queryによる計算結果を用いたカレンダーテーブルを作成します。

power query m
let
    // 現在の年を取得
    CurrentYear = Date.Year(DateTime.LocalNow()),

    // 会計年度のロジック
    GetFiscalYear = (date) =>
        let
            year = Date.Year(date),
            month = Date.Month(date)
        in
            if month >= 4 then Text.From(year) & "-" & Text.From(year + 1) else Text.From(year - 1) & "-" & Text.From(year),

    // 開始日と終了日
    StartDate = #date(CurrentYear, 1, 1),
    EndDate = #date(CurrentYear, 12, 31),

    // 日付リストの生成
    DateList = List.Dates(StartDate, Duration.Days(Duration.From(EndDate - StartDate)) + 1, #duration(1, 0, 0, 0)),

    // テーブル化
    DateTable = Table.FromList(DateList, Splitter.SplitByNothing(), {"Date"}),

    // 必要カラムを追加
    AddYear = Table.AddColumn(DateTable, "Year", each Date.Year([Date]), Int64.Type),
    AddFiscalYear = Table.AddColumn(AddYear, "FiscalYear", each GetFiscalYear([Date]), type text),
    AddMonth = Table.AddColumn(AddFiscalYear, "Month", each Date.Month([Date]), Int64.Type),
    AddDayOfMonth = Table.AddColumn(AddMonth, "DayOfMonth", each Date.Day([Date]), Int64.Type),
    AddDayOfWeekName = Table.AddColumn(AddDayOfMonth, "DayOfWeekName", each Date.DayOfWeekName([Date]), type text),
    AddDayOfWeekNumber = Table.AddColumn(AddDayOfWeekName, "DayOfWeekNumber", each Date.DayOfWeek([Date]) + 1, Int64.Type),

    // 祝日データのモックアップ(ここをカスタマイズ)
    AddHolidayName = Table.AddColumn(AddDayOfWeekNumber, "HolidayName", each if Date.Day([Date]) = 1 and Date.Month([Date]) = 1 then "New Year's Day" else null, type text),
    AddHolidayType = Table.AddColumn(AddHolidayName, "HolidayType", each if [HolidayName] <> null then "Public Holiday" else null, type text),
    AddHolidayDescription = Table.AddColumn(AddHolidayType, "HolidayDescription", each if [HolidayName] = "New Year's Day" then "Celebration of the new year" else null, type text),
    AddIsNationalHoliday = Table.AddColumn(AddHolidayDescription, "IsNationalHoliday", each if [HolidayName] <> null then true else false, type logical),
    DuplicatedColumn = Table.AddColumn(AddIsNationalHoliday, "strDate", each Text.From([Date], "ja"), type text),
    TransformColumnTypes = Table.TransformColumnTypes(DuplicatedColumn, {{"Date", type date}})
in
    TransformColumnTypes

具体的な作成の流れ

  1. Power Appsデータフローを作成する環境を選択
    001.png

    登壇に合わせて #JapanM365CC2024 という名称の環境を作成しています。

  2. ソリューションカスタムテーブルを設けてデータフローを作成

    • 今回は、新たにソリューションを作成して進めます。まずはカスタムテーブルを作成
      • 例: カレンダー用のExcelを用意して読み込ませています
        002.png
  3. ソリューションからDataflowを選択
    Dataflowを選択したあと、分析にチェックを入れないで、データフローの作成画面に遷移しましょう。

    003.png

    開くと非常に多くのデータコネクタが表示されます
    004.png

  4. データソースを選択する
    データソースとして空のクエリを選択します。
    今回はサンプルとしてカレンダーを作成してテーブルに読み込ませます。コネクタの認証に関する解説は、公式記事をご参照ください。

  5. Power Query M式でカレンダーを作成

    • 空のクエリで以下のPower Query M式を使用してカレンダーを作成
  6. 宛先を設定する画面で設定を行う

    6-1. 読み込み先の設定

    • (2)で作成したカスタムテーブルを選択
      スクリーンショット 2024-11-28 233507.png

    メタデータからサジェストされることが凄いAIパワーを感じますね📊

    6-2. インポート方法の設定

    • インポート方法: appendを選択
      スクリーンショット 2024-11-28 233518.png

    6-3. 列のマッピング

    • データの列を適切にカスタムテーブルの列に割り当てます
    • 必須列ではない場合、割り当てをせずに、読み込まないということができます
    • データ型が不一致の場合、アラートが表示されます。型の一致を確認してください
      スクリーンショット 2024-11-28 233904.png
  7. 設定の更新と更新頻度のスケジュール

    • データフローの設定を更新します
    • 必要に応じて更新頻度をスケジュールして、自動更新を有効にします
      スクリーンショット 2024-11-28 233917.png
  8. 公開!
    スクリーンショット 2024-11-28 233917.png

実行するとDataverseに値が格納されます!

image.png

最初は面食らうところがありますが、これにより外部システムから、システムジョブとしてデータを取り込むことができます。

多様なコネクタがサポートされ、定期的にデータを更新できるCoolな機能です!
是非試してみてください。

15
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?