Dataverseがデータソースの場合、Power Automateでデータ集計(合計、最大、平均など)を求めようとする場合、いったんデータをPower Automateに読み込んでから、XPathで集計する方法があります。 XPath を活用した集計 | Japan Dynamics CRM & Power Platform Support Blog
上記の手法以外にもFetchXMLを用いた集計の方法がPower Automateで利用可能なので、ご紹介します。
FetchXMLを用いたDataverseデータ集計方法
FetchXML は、Microsoft Dataverse 独自の XML ベースのクエリ言語で、Web API または .NET 用 SDK を使用してデータをクエリするために使用されます。 例として、
<fetch mapping='logical'> <entity name='account'> <attribute name='accountid'/> <attribute name='name'/> </entity> </fetch>
上記の例ではaccountテーブルからaccountid列およびname列のデータを全て取得します。
FetchXMLの作成にはXrmToolBoxのFetchXML Builderが非常に有用です!
Power AutomateでDataveseテーブルの特定の列の集計結果を取得したい場合、下記のようなFetchXMLで取得可能です。
<fetch aggregate="true"> <entity name='order'> <attribute name='price' alias="pricesum" aggregate="sum" /> <attribute name='item' alias="itemcount" aggregate="count" /> <filter type="and"> <condition attribute="orderid" operator="eq" value="0010" /> <condition attribute="order_datetime" operator="between"> <value>2023-01-01T00:00:00Z</value> <value>2023-12-31T00:00:00Z</value> </condition> </filter> </entity> </fetch>
ポイントとしては、
- aggregate(集計)以外の列を取得しようとしない。
- 使用可能なaggregate属性を把握しておく。 といったあたりです。
aggregate(集計)以外の列を取得しようとすると、Power AutomateでFetchXMLを実行する際にエラーが発生します。
FetchXMLを用いて集計結果を取得するには、Power Automate の Dataverseの「行を一覧にする」アクションに FetchXML クエリという項目があるので、そこにFetchXMLを入力します。また集計結果を得るには「JSONの解析」アクションを用います。 参考:【Power Automate】Dataverse の高度なフィルターを簡単に作成する話 - ふらりのメモ書き
参考にしたWEBサイト d365demystified.com