Power AutomateでDataverseの複数テーブルから値を取得する方法
2021-12-21
azblob://2022/11/11/eyecatch/2021-12-20-power-automate-dataverse-expand-query-000.jpg

こんにちは、あおいです。

Power AutomateでDataverseの複数テーブルから値を取得する場合、以下のようなフローを組みます。




関連テーブルが少ない場合は問題ありませんが、3つ4つと増えると以下のようにフローステップが増えて可読性が低下してしまいます。



これでも分かりやすいという方もいらっしゃると思いますが、これより良い方法があります!
[行を一覧にする]アクションで[クエリの展開]を利用すると、余分なステップをなくすことが出来ます!

そこで、今回はPower AutomateでDataverseの複数テーブルから値を一度に取得する方法を紹介したいと思います。

まず、[Microsoft Dataverse]コネクタの[行を一覧にする]アクションを選択します。
フロー実行時に一覧にする行数を制限する為に、[行数]を1に設定します。

一旦、この状態で保存してフローを実行してみましょう。




[未加工出力の表示]を選択して、value値[ ]を範囲選択してコピーします。




Visual Studio Codeを開き、[navigationproperty]を検索します。
このプロパティを[クエリの展開]に利用すると、[行を一覧にする]アクションで関連テーブルの値を全て取得できます。




[クエリの展開]にプロパティを入力して、参照関連テーブルの値を取得します。
また、($select=列名) のクエリを使用して参照関連テーブルの取得したい列を指定することも可能です。




最後に[JSONの解析]アクションで値を抽出すれば完了です。
「そもそも、JSONって何だ?」と思われた方はこちらの記事を参考にしてみてください。
Power Automate「JSONの解析」アクションでJSONと仲良くなろう! | cloud.config Tech Blog

試しにフローを実行して確認してみましょう!



参照関連テーブルの値を全て取得出来ています!

ただ、上記の場合は1行のデータしか取得していないのに、Apply to each でループ処理が自動で反映されてしまっています。このような無駄なループ処理をなくすには First関数を利用しましょう。


First関数で不要なApply to each を回避する方法についてはこちらの記事を参考にしてみてください。
first関数で不要なApply to eachを回避する - Hatena Blog


今回はPower AutomateでDataverseの複数テーブルから値を一度に取得する方法を紹介させていただきました。
[クエリの展開]を利用することで余分なフローステップをなくし、可読性を高めることが出来ます!
非常に便利な機能なので是非試してみてください!