技術情報ブログ
Power Platform
2025.02.19

Power Apps:外部DBと接続する方法まとめ

Power Apps:外部DBと接続する方法まとめ
小刀稱知哉

こんにちは。アーティサン株式会社の小刀稱(ことね)です。

Power Appsでアプリを作成する際、SharePointリストやDataverseを用いることが多いと思いますが、もちろんそれ以外の外部DB(例:SQL Server・MySQL・PostgreSQLなど)と連携することも可能です。

それぞれの連携方法に応じて、できること・できないことが異なりますので、今回はPower Appsが外部DBと接続する方法について調査した結果を紹介します。
※あくまで私が調査した結果を紹介していますが、他の方法などあるかもしれません。

もしほかの方法などあれば、連絡してもらえればと思います(笑)

 

連携方法一覧

今回紹介する連携方法の一覧を表にしました。

連携方法一覧

Power Appsと外部DBを連携する方法は、全部で5パターンあるかと思います。

 

前提:今回の構成

今回はローカルPC上にSQL Serverを構築しています。 また、SQL Server上のテーブルについて、Power Appsのキャンバスアプリ・モデル駆動型アプリと連携させています。

構成

作成したSQL Server上のテーブル情報は以下の通りです。

列名

内容

id

主キー

prefecture_name

県名

capital_city

県庁所在地名

SQL Serverのテーブル

※注意※

ローカルPC上のDBとPower Appsを連携する際には、オンプレミスデータゲートウェイが必要となります。

今回もオンプレミスデータゲートウェイを用いていますが、本ブログの主題とは無関係なため、 構築などの詳細については省略しております。
オンプレミスデータゲートウェイの詳細については、以下URLを参照してください。
オンプレミス データ ゲートウェイとは

以降では、それぞれの連携方法について紹介します。

 

直接接続

直接接続_構成

最初に、直接接続する方法です。

こちらはPower Apps キャンバスアプリでのみ対応可能な方法です。

SharePointやDataverseと接続する手順と同様に、キャンバスアプリのデータデータの追加から外部DBと連携している接続情報を追加します。

直接接続

こちらの方法で接続する場合、アプリを使用するユーザー数分の有償ライセンスが必要となります。

※注意※

アプリを開発するユーザーの有償ライセンスが必要と思っている方がたまにいらっしゃいますが、 開発するユーザーではなく、アプリを利用するユーザーの有償ライセンスが必要となります。

またこちらの連携方法では、アプリと外部DBが相互同期されます。
相互同期とは、以下の挙動を示します。

  • 外部DB側のCRUD操作が、Power Apps側にも反映される

  • Power Apps側のCRUD操作が、外部DBにも反映される

 

仮想テーブル

仮想テーブル_構成

続いては、Dataverseの仮想テーブルを用いて接続する方法です。

こちらは、Power Apps キャンバスアプリでも、モデル駆動型アプリでも対応可能な方法です。

Dataverseの仮想テーブルとは、テーブルのスキーマ情報のみがDataverseに保存されている状態のテーブルのことを指します。
※実際のレコードデータについては、外部DBに保存されたままとなります。

仮想テーブルの詳細については、以下URLを参照してください。
外部データ ソースからのデータを含む仮想テーブルの作成および編集

Dataverse内で仮想テーブルを作成し、アプリ側では作成した仮想テーブルを用います。

仮想テーブルの作成
モデル駆動型アプリ_仮想テーブル

こちらの方法で接続する場合は、アプリを使用するユーザー数分の有償ライセンスが必要となります。

また、アプリと外部DBが相互同期される構成となります。

 

データフロー

仮想テーブル_構成

続いては、データフローを用いて、外部DBDataverseの実テーブルを連携し、Power Appsと接続する方法です。

こちらの接続方法についても、Power Apps キャンバスアプリ・モデル駆動型アプリどちらでも対応可能な方法です。

Dataverse内に実テーブル(仮想テーブルとの違いをわかりやすくするため、「実テーブル」と表記します。)を作成し、 データフローを用いて、外部DBから定期的に実テーブルへ値を反映させます。

データフロー

データフローの詳細については、以下URLをご参照ください。
Microsoft Power Platform でのデータフローの作成と使用

こちらの方法で接続する場合は、アプリを使用するユーザー数分の有償ライセンスが必要となります。

また同期方法ついては、外部DBからDataverseへデータが連携されるのみとなります。

よって、以下のような挙動となります。

  • 外部DB側のCRUD操作については、Dataverse側(=Power Apps側)へ反映される
    ※データフローを設定する際、「クエリ出力に存在しない行を削除します」をオンにすることで、外部DBのDelete操作をDataverse側へ反映させることができます。

  • Power Apps側のCRUD操作は、外部DBに反映されない

 

仮想テーブルと実テーブルを用いる方法の違い

前項で説明して仮想テーブルを用いる方法と、データフローを用いて実テーブルを用いる方法の違いについては、 以下のような点があるかと思います。

連携方法

構成

メリット

デメリット

仮想テーブルを用いる方法

レコードデータは外部DBのみに保存される
※Dataverse内にはスキーマ情報のみ保存

・Dataverse内の容量を削減できる
・データの相互同期が可能
・外部DBのデータをリアムタイムに取得可能

・データのCRUDが低速
・一部機能の制限があり

実テーブルを用いる方法

レコードデータはDataverse内にも保存される

・データのCRUDが高速
・Dataverseの機能を全て利用可能

・Dataverse内の容量が増える
・外部DBからのCRUD操作のみ反映
・外部DBのデータは定期的な更新となる

仮想テーブルを使用する際の制限事項については、以下URLをご参照ください。
仮想テーブルを使用する際の考慮事項

詳細については上記URLを見ていただければと思いますが、私が着目した点は以下です。

仮想テーブルは、、、
  • 監査をサポートしていない

  • 計算列をサポートしていない

  • テーブルの所有者は「組織」のみ

  • フィールドレベルセキュリティをサポートしていない

 

Power Automate(Dataverse)

Power Automateを用いて、Dataverseの実テーブルを作成_構成

続いては、Power Automateを用いて、外部DBDataverseの実テーブルを連携し、Power Appsと接続する方法です。

前述した接続方法の場合は、データフローを用いてDataverseの実テーブルと連携しましたが、こちらの方法ではデータフローの代わりにPower Automateを用いて連携しています。

使用できるアプリの種類や必要なライセンス数、同期方法については、データフローを用いて、Dataverseの実テーブルを作成し、接続すると同様です。

本手順については、一応紹介はしてはいますが、データフローの機能を越えるような内容は無いのではないかと思っています。

ただし、Power Automateで連携部分を自作するため、手間はかかりますが、その分作り込むことが可能という点は特長として挙げられます。

よって、データフローでは対応できなかったような機能がある場合は、Power Automateを作り込むことにより対応可能となります。
(本手順の活用内容などある場合は、ご教示ください!)

 

Power Automate(SharePoint)

Power Automateを用いて、Dataverseの実テーブルを作成_構成

最後に、Power Automateを用いて、外部DBSharePointリストを連携し、Power Appsと接続する方法です。
前述した方法では外部DBとDataverseを連携させましたが、こちらの方法では、SharePointリストと連携させます。

本接続方法の最大のメリットとしては、有償ライセンス数が1つで対応可能という点だと思います。

今まで紹介していた方法の場合は、アプリを使用する全ユーザー数分の有償ライセンスが必要となりますが、 こちらの方法ではPower Automateの所有者のみ有償ライセンスを持っていれば対応可能です。

※注意※

SharePointリストを用いる場合は、委任に関する問題やデータ量・セキュリティに関する制約などがあります。

簡易的なアプリを作成する場合には、SharePointリストで問題ありませんが、複雑なアプリを作成する場合には、Dataverseを用いることを推奨いたします。(お金はかかってしまいますが、、、(笑))

 

まとめ

前述した各接続方法について、以下にまとめてみました。

 

有償ライセンス数

使用できるアプリ

相互同期

更新頻度

直接接続

使用ユーザー数分

キャンバス

リアルタイム

仮想テーブル

使用ユーザー数分

キャンバス・モデル駆動型

リアルタイム

データフロー

使用ユーザー数分

キャンバス・モデル駆動型


(外部DB→Dataverseは可能)

定期更新
(48回/日)

Power Automate
(Dataverse)

使用ユーザー数分

キャンバス・モデル駆動型


(作り込みで可能)

定期更新
(60秒に1回トリガー可能)

Power Automate
(SharePointリスト)

1

キャンバス・モデル駆動型


(作り込みで可能)

定期更新
(60秒に1回トリガー可能)

 

おわり

今回は、外部DB(例:SQL Server・MySQL・PostgreSQLなど)を用いてPower Appsアプリを作成する際の、 連携方法について調査した結果を紹介しました。
調査してみると、色々な連携方法があり、それぞれに特徴があることがわかりました。

外部DBと連携することを考える際に、ご一読いただけますと幸いです。

最後まで読んでいただき、ありがとうございました!

Power Platform(SharePoint・Power Apps・Power Automate)に関する営業活動や設計、開発などを担当:小刀稱知哉

小刀稱知哉

大分県出身(温泉大好き)、現在は東京都在住

1990年生まれ

30才でメーカーの技術営業からIT業界にジョブチェンジ!!!

趣味は読書

主にMicrosoftのローコード(SharePoint・Power Platform)に関するに関する営業活動や設計、開発などを担当しております!

(最近はCopilot Studioについても勉強中)

持ってる資格はPL-200/PL-300/PL-400/PL-600/MS-700/AZ-104/AZ-305/SC-200/SC-100

シェアする
記事カテゴリ
最新記事
2025.02.19

Power Apps:外部DBと接続する方法まとめ

2025.02.12

はじめてのMicrosoft Copilot Studio(2) Copilot Studioのライセンスについて紹介

2025.02.05

【Power Apps】添付ファイルコントロールにアップしたファイルのサイズを取得する方法

2025.01.29

はじめてのMicrosoft Copilot Studio(1) Copilotサービスの整理、使用するサービスの最適解とは?

2025.01.22

【小ネタ】Power Automate×SharePoint:登録者・更新者・登録日・更新日列を変更する方法

モデル駆動型アプリPower AppsPower PlatformSharePointExcelPower AutomateC#attributevalidationローコードAngularAccessInfoPathMatTableAngular Materialデータ構造SortByColumns関数TypeScriptHTMLEF CoreマイグレーションFramework CoreAttribute directivesO/Rマッパーazure sql databaseCase式HTTP RequestCSSxUnit.Net Core 3.1VSCode.Net Core Test ExplorerDataverse for Teamsitem関数Google MapsMarker ClustererRANK()関数Dynamics 365 SalesMicrosoft TranslatorマーカークラスタリングライブラリtailwindcssマルチテナントドロップダウンメニューBreakpointObserverメディアクエリスマホPCレスポンシブ入門初心者中級者キャンバスアプリDatePickerDropdownviewビューアクセス制限承認リマインドSetForAllUpdateContextロードマップ技術It情報技術メッセージIDメールfirst()関数nest入れ子動的リストcollectionコレクション複数の添付ファイル承認フローformエクスポートインポートカスタマイズcomponentダイアログコンポーネントdialogTips新機能変数検索Microsoft 365グループセキュリティグループ送信元メールの送信差出人インスタントクラウドフロー自動化したクラウドフロー委任VBAエラーエクセルerror復元restorePower BI個人列ユーザー列SharePoint Onlineリスト非表示アプリ[市民開発者構築自動化したクラウド フローフローの種類インスタント クラウド フロースケジュール済みクラウド フローレスポンシブ レイアウトresponsive layoutデータ行の制限引き継ぎ退職所有者を変更異動LoopMicrosoftdesignJSONデザイン運用選択肢列参照列ChatGPTOpenAIオープンAIチャットGPTgalleryギャラリースクロールコンテナショートカットキーshortcut keyconcat関数文字制限フロー実行開発環境環境本番環境ライセンス環境構築手順pipelineCI/CDパイプラインDevOpsMicrosoft 365簡易在庫管理時間外通知ファイルフィルター クエリドキュメント ライブラリfilter querysortソートmultiple item複数項目シェアポイント便利機能カレンダーCalendarTeamsローコード開発非エンジニア体験談勉強内製化市民開発管理ガバナンスerror notificationエラー通知削除フォルダゴミ箱完全削除モデル駆動型セキュリティロールビジネスルールDataverseJavaScript表示切替登録者システム列登録日更新者更新日変更外部DB連携接続データフローSharePoint FrameworkSPFxサンプルsampleX-SPStyleStudioAI生成系AICopilotlicense添付ファイルコントロールファイルサイズ
PageTop
ページトップに戻る