サンプルで使用するテーブル
このページでは以下2つのテーブル使用します。
- Parent
- Child
2つのテーブル間には以下のリレーションを設定しています。
Parent(1)→(N)Child
行IDとOData IDについて
Power AutomateからDataverseのレコードを操作する際、「行ID」または「OData ID」を使用します。
行ID
「行ID」はテーブル作成時に作成される「一意識別子」の列で、レコードを作成すると自動でGUID形式のデータが設定されます。
主にレコードの取得や参照型の列(親テーブル)を操作する際に使用します。
OData ID
OData IDは、Dataverseから該当のレコードの情報を取得するAPIのURIが自動で設定されるプロパティです。
主にレコード間でリレーションを設定する際に使用します。
※ODataについてはこちら
アクション「IDで行を取得する」
「IDで行を取得する」アクションを使用すると、引数「行ID」で指定したレコードを取得できます。
行IDは文字列を直接指定することも、事前のアクションで取得したレコードの情報を使用して指定することも可能です。
事前に取得した子レコードから親レコードを取得する
事前に取得した子レコードから、関連する親レコードの情報を取得する際は、引数「行ID」に「親テーブル名(値)」を指定します。
アクション「行を一覧にする」
アクション「行を一覧にする」を使用すると、指定したテーブルのレコードをリストで取得することができます。
オプションとして引数を指定することも可能です。
- 列の選択:取得する列を指定できます。全ての列の情報を取得する必要がない場合は、このオプションを使用することでやり取りするデータのサイズを減らすことができます。
- 行のフィルター:OData形式のフィルター式を記載し、取得する行をフィルターできます。
- 並べ替え順、行数:取得する行の並べ替えや、取得する最大行数を指定できます。
列に特定の値が入るレコードを列挙するフィルター式
ODataフィルター式を使用することで、特定の列に特定の値が含まれるレコードのみを列挙することができます。
例えばParentテーブルに以下の情報が含まれるとき、
列「Num(物理名「cr861_num」)」が「3」のレコードを取得する式は以下のようなフィルター式になります。
cr861_num eq 3
「eq(イコール)」以外のODataフィルタークエリについてはこちら
親レコードに紐づく子レコードを取得するフィルター式
任意の親レコードに紐づく子レコードを一覧で取得する場合、子テーブルに対し「行を一覧にするアクション」の[行のフィルター]オプションを使用します。
「行を一覧にする」アクションで子レコードを取得した際、以下の列に親レコードのGUIDが格納されています。
_親レコードの論理名_value
そこで任意の親レコードに紐づく子レコードを取得する際は、子テーブルに対し「行を一覧にする」アクションを使用し、フィルタークエリに以下の式を指定します。
_「親テーブルの論理名」_value eq '「列挙したい親レコードのGUID」'
事前のアクションで取得した親レコードに関連する子レコードを取得する際、のフィルター式は以下の式になります。
アクション「行を更新/削除する」
アクション「行を更新/削除する」では対象レコードの「行ID」を指定してレコード操作を行います。
更新アクションを使用してリレーションを設定する
子レコードに対する「更新」アクションで、任意の親レコードにリレーションを設定することができます。
子レコードの「更新」アクションで、親レコードの参照列に対し、対象の親レコードの「Odata ID」を指定します。
更新アクションを使用したリレーションの解除
同様に、子レコードに対して「更新」アクションを使用し、親レコードとのリレーションを解除することも可能です。
子レコードの「更新」アクションで、親レコードの参照列に対しnullを代入することでリレーションは解除されます。
※2024/3/30時点でMicrosoftの仕様(バグ?)により、クラシックデザイナーで生成したフローのみ、更新アクションを使用したリレーションの解除が可能です。(原因不明)
新しいデザイナーで作成したフローでリレーションを解除したい場合は、後の章で紹介する「行の関連付けを解除する」アクションを使用します。
アクション「行を関連付ける」
アクション「行を関連付ける」は、指定した2つのレコード間にリレーションを張るアクションです。
このアクションを使用する際は「行ID」と「Odata ID」の両方を使用します。
- テーブル名:親テーブルを指定
- 行ID:親レコードの「行ID」を指定
- リレーションシップ:子テーブルとのリレーションを選択
- 関連付け:子テーブルの「Odata ID」を指定
※アクション「行を更新する」、アクション「行を関連付ける」いずれの方法でリレーションを張っても結果に差異はありません。
アクション「行の関連付けを解除する」
アクション「行の関連付けを解除する」は、親子間のリレーションを解除するアクションです。
※パラメータの指定方法はアクション「行を関連付ける」と同様です。
環境をまたぐ操作
「選択した環境から」が先頭につくDataverseのアクションは現在Power Automateを実行している環境以外の環境からデータの取得/更新を行うアクションです。
パラメータとして環境を指定する以外、通常のアクションと使用方法は同じです。
※Power Platformのアプリやフロー、データは環境単位で管理することが多いため、これらのアクションは使用されないことが多いです。