Power Automate クラウドフローで Microsoft Dataverse(以降 Dataverse) の複数テーブルを関連付けしてまとめてデータ取得したり、特定の条件を指定して絞り込んだりする際に利用する FetchXml という言語があります。今回は、作るのがちょっと(だいぶ?)手間な FetchXml を、個人的に楽して作る「やまさん式 FetchXml 生成方法」です。
FetchXml とは
「FetchXml は、Dataverse からデータを取得するために使用される独自の XML ベースのクエリー言語です。」と Microsoft Learn に書かれています。
XML形式で、Dataverse テーブルに対して SQL の Select みたいな効果が得られます。
モデル駆動型アプリ や XmlToolBox を利用して取得する方法
モデル駆動型の高度な検索から FetchXml の作成が可能です。
しおりん こと @skuramoto さんの記事がわかりやすいと思います。
上記の記事でも登場する XrmToolBox は、Dataverse に特化した開発者ツールです。慣れるまでタイヘンかも?ですが、かなり便利な道具なので Dataverse の奥地に向かいたい方は覚えておいて損は無いと思います。
やまさん式 FetchXml 生成術
自分も XrmToolBox を利用しています。
んが。個人的に、それよりも早く確実に FetchXml を作成する手段がコチラです。
やまさん式 FetchXml 生成方法
下記の手順になります。
1. Dataverse へ SQL Server Management Studio(SSMS)で接続する
2. SSMS で目的のデータを取得する SQL(Select)文を作成する
3. Copilot に「この SQL を FetchXml にして」と依頼する
4. Power Automate クラウドフローで実行結果を確認する
ヒトコトで言うと「AI に SQL文を FetchXml 変換してもらう」ですね。
SQL文が書けない方や苦手な方は、それも Copilot にお願いしてみると良いと思います。プロンプト次第ですが、比較的良い感じの回答が経験上得られています。なお、必ず実行結果から期待した結果が得られるか?をチェックしましょうね。加えて、その SQL文 がどういう構造で、どんな内容か?は改めて学んでおくと良いと私は考えています。
「ワケわかんないけど、動いているんです」って、チョット怖くないですか?
やまさん式の例
画面ショットを交えた実例です。
1) 例で利用するテーブル
「イベント」と「それに参加したヒト」の親子になっています。
データの中身はこんな感じです。
2) SSMS で Dataverse へ接続する
SSMS で Dataverse へ接続する方法は下記を参考に実施ください。
なお、[TDS エンドポイント] について、現在ではデフォルトで ON になっているようです。
3) Select文 を作る
SQL を作成して実行結果を確かめます。例では、2つの条件に合致するデータを、2つのテーブルを結合して結果を取得しています。
4) Copilot で SQL → FetchXml 変換
期待する結果が取得できる SQL文 が作成できたら、Copilot に FetchXml へ変換してもらいましょう。
5) Power Automate クラウドフローへ組み込む
仕上げに、クラウドフローの Dataverse アクションで実行結果を確認すれば完成です。問題なければ、そのままフローの後続処理を作成していけますね。
結び
データベースを利用するシステム開発経験者であれば「SQL?書けるよ。」という方は多いんじゃないかな、と思います。おそらく、FetchXml を直接記述できる人よりは多いハズ。そんな方が近くに居たら、助けてもらえませんかね?また、複数テーブルへのアプローチが非常に苦痛なコトも、FetchXml を利用すると解決できる場面も多々あります。
なお、AI が必ず正解を提供してくれるワケではありません。たまに、記述が間違っていることもありますし、あまりに複雑な SQL文 だと期待した効果が得られない場合もあります。AI は、そういう道具なので受け入れるしかないですね😇
自分も FetchXml が必要になるタイミングが少ないので、いざ必要になったタイミングで構文などを忘れてるんですよね……。ただ、SQL は開発者だった頃にイヤと言うほど書いた経験があるので、細かい方言みたいな内容は思い出せないにせよ基本は覚えています。なので、紹介した流れで FetchXml を生成できると個人的には早く仕上げられるんですよね。やはり、何度も繰り返し手を動かしたモノは記憶に残っているんだなぁ、と感じます。
FetchXml の利用を検討する、という状況は、つまり Dataverse に対してアプローチをかけている、ってコトですよね。個人的に中級~上級者向けの話題になるかな、と思います。ただ、今回紹介したテクニックの原理や考え方(発想?)が何かの参考になれば幸いです。
FetchXml、是非お試しあれ。
それでは、皆さま。素晴らしい Power Platform Life を!