radical-pluto’s golf diary

主にGolfの事について。まれにソフト開発/設計のメモ代わりとして。

Power AutomateでDataverseのデータを集計する方法

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 または .NETSDK を使用してデータをクエリするために使用されます。  例として、

<fetch mapping='logical'>   
   <entity name='account'>  
      <attribute name='accountid'/>   
      <attribute name='name'/>   
   </entity>  
</fetch>  

上記の例ではaccountテーブルからaccountid列およびname列のデータを全て取得します。

FetchXMLの作成にはXrmToolBoxのFetchXML Builderが非常に有用です!

FetchXMLをノーコードで編集する方法 - Qiita

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