Power AutomateでのDataverseのリレーションシップの使い方【前編】

今回は、Power AutomateでDataverseテーブルのリレーションを使用したアクションをご紹介します。

# 目次
[IDで行を取得する](https://qiita.com/skuramoto/items/a4f0c4441f76972a0e98#id%E3%81%A7%E8%A1%8C%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B)
[行を関連付ける](https://qiita.com/skuramoto/items/a4f0c4441f76972a0e98#%E8%A1%8C%E3%82%92%E9%96%A2%E9%80%A3%E4%BB%98%E3%81%91%E3%82%8B)
[行の関連付けを解除する](https://qiita.com/skuramoto/items/a4f0c4441f76972a0e98#%E8%A1%8C%E3%81%AE%E9%96%A2%E9%80%A3%E4%BB%98%E3%81%91%E3%82%92%E8%A7%A3%E9%99%A4%E3%81%99%E3%82%8B)
# IDで行を取得する
DataverseではID(主キー)は自動作成されます。このIDが行を特定できる一意識別子となり、この「IDで行を取得する」アクションでその行の情報をすべて取得することができます。
ちなみに、テーブル名と同一名の列に格納されています。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/64c240f6-35c3-4748-51e2-f201f0964c3c.png" width=80%>

## よく使う使い方
このアクションを使用することで、**子レコードとの関連付けを参照しながら親レコードを取ってくる**ことができます。
子テーブルでは親テーブルの行のIDのみ保持しているため、子テーブルの他の情報を持ってきたい場合はこのようにIDで行を取得します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/2bbf1cb0-8158-0f6b-8376-124507676328.png)

### 使用例
子テーブルである「販売注文テーブル」に行の追加、変更があったときにその行の情報をTeamsで通知したいとします。
その販売注文テーブルの検索列「製品情報」に関連付いている、製品テーブルのレコードの値を取ってくるときに「IDで行を取得する」を使います。


「IDで行を取得する」の設定
テーブル名：親テーブル（IDから情報を取りたいテーブル）
行ID：動的なコンテンツの「行が追加、変更、または削除された場合」の「販売注文」テーブルの「製品情報」列で指定された値を指定することで、親テーブルのIDを取得することができます。ここがコツです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/aecffd8f-7eeb-6748-594d-81dddd63f6e5.png)

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/ced0ad02-81f3-ed0b-9efc-0b3ff64b2b4a.png" width=80%>

すると、そのあと動的なコンテンツで、「IDで行を取得する」で取得した、製品テーブルの列を設定することができるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/8489e321-ac78-abe8-e3a7-78c8c9cf6494.png)


# 行を関連付ける
このアクションは、すでに1対多または多対多のリレーションシップがあるテーブルに対してのみ使用ができるアクションです。
関連テーブルで新しい行を追加した際にこのアクションを使って、レコードの関連付けを行います。
以下の記事で書いた「検索列への値の挿入」と同じ挙動をします。

https://qiita.com/skuramoto/items/11f1111a8eba7673714c#%E6%A4%9C%E7%B4%A2%E5%88%97%E3%81%B8%E3%81%AE%E5%80%A4%E3%81%AE%E6%8C%BF%E5%85%A5

## 使用例

まず、このアクションを使う前に、親テーブルのレコードのOdataIDを取得する必要があるため、「IDで行を取得する」アクションで親テーブルのレコードの指定を行います。
今回は製品テーブルを指定します。
[行ID]にはGUIDを入れます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/9151c0a5-9ddf-1a38-5bff-4700dd6b08dc.png" width=70%>

GUIDはテーブル名と同じ列に保存されてます。

:::note  warn
編集不可の列でわかりづらいですが、この列の各レコードをダブルクリックし、Ctrl＋Cで値をコピーすることができます。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/e7e5bc3c-c685-8212-34c4-91d191edc521.png)

その下に「行を関連付ける」アクションを追加し、子テーブルを指定します。
関連付けを行いたいレコードのGUIDを[行ID]に設定します。
[リレーションシップ]項目には親テーブルとのリレーションを選択して下さい。
[関連付け]は動的なコンテンツの「IDで行を取得する」>[Odata ID]を選択します。
（事前にその値を調べておき、URL形式のOdata IDを入力しておくことも可能です。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/0c476c6b-9c42-f1a1-3bbe-0a7784074bc6.png)

このフローを実行すると、指定したレコードで関連付けが行われます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/05627eda-1862-0fba-ac82-74466fe3bd26.png)


# 行の関連付けを解除する
行を関連付けるアクションの反対のアクションです。
このアクションで、同様に項目を設定することで指定したレコードで関連付けを解除することできます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/b5f52cc1-cf32-d100-37d1-07616e2b30a2.png" width=80%>