Power AutomateからDataverseのリレーションをつなぐ方法と解除する方法を聞かれたので、メモ。
今回使用するテーブル
今回は「ねこ」テーブル(親)と「食事履歴」テーブル(子)を使って説明。
行IDとOdataID
Dataverseの各レコードをPower Automateで扱う際、「行ID」と「OData ID」という2つのIDが出てくる。
行ID
行IDはテーブルを作成すると自動で作成される「一意識別子」列に入る値のことで、
レコードが作成された際にGUIDが自動で採番される。
主にレコードの取得や編集を行う際に使用する。
OData ID
OData IDはDataverseから該当のレコードの情報を取得するURIのことで、
※「OData」はMicrosoftが作ったHTTPを使ってサーバとブラウザでデータをやり取りするためのプロトコル。
※「OData」はMicrosoftが作ったHTTPを使ってサーバとブラウザでデータをやり取りするためのプロトコル。
この値をブラウザで開くと、画像のようにレコードの情報を返してくれることがわかる。
Power Automateからリレーションを張るときはこの「OData ID」も使用する。
アクション「行を関連付ける」を使用してリレーションをつなぐ
まずはこの「食事履歴」レコードと「ねこ」レコードをつないでみる。
アクション「行を関連付ける」では、[テーブル名]と[行ID]に「親テーブル」とその「行ID」を、[関連付け]には「子テーブルのOData ID」を設定する。
フローを実行すると無事動作し、
リレーションが張られる。
アクション「行の関連付けを解除する」を使用してリレーションを解除する
「行の関連付けを解除する」アクションも設定は同様で、「親テーブルの行ID」と「子テーブルのOData ID」を指定すると、
アクションが成功して、
リレーションが解除される。
アクション「行を更新する」を使用してリレーションをつなぐ
アクション「行を更新する」でもリレーションをつなぐことは可能で、子テーブルの値を更新しつつリレーションも張りたい、というときはこちらの方が便利。
「行を更新する」アクションを子テーブルに対して使用し、親テーブルの参照列にリレーションを張りたい親レコードの「OData ID」を設定する。
アクションが成功し、リレーションが張られる。
※アクション「新しい行を追加する」も同様にリレーションの設定が可能なので、レコードを作成しつつリレーションを張ることも可能。
アクション「行を更新する」を使用してリレーションを解除する
「行を更新する」アクションを使用してリレーションを解除することも一応可能。
「行を更新する」アクションを子テーブルに対して使用し、親テーブルの参照列に「null」を指定してあげると、
アクションが成功し、リレーションが解除される。
ただ、この「nullを設定する」構築を新しいデザイナーでやると、
なぜかアクションが失敗する。。
ということでリレーションの解除は、アクション「行の関連付けを解除する」を使用した方が安定しててよいかも。