標準データフローでのリレーションシップを持つフィールドのマッピング

標準のデータフローでは、データフロー クエリのフィールドを Dataverse テーブルに簡単にマップできます。 ただし、Dataverse テーブルにルックアップ フィールドまたはリレーションシップ フィールドがある場合、このプロセスが動作するようにするには追加の考慮が必要になります。

リレーションシップとは何か、必要となる理由

データベース開発の経験がある場合は、テーブル間のリレーションシップの概念を理解していることでしょう。 ただし、Microsoft Power Platform サービスの多くのユーザーには、そのような経験はありません。 リレーションシップとは何なのか、テーブル間のリレーションシップをなぜ作成する必要があるのかと思われているかもしれません。

テーブルとそのリレーションシップは、データベースの設計における基本的な概念です。 リレーションシップに関するすべての情報については、この記事では説明しません。 ただし、ここでは一般的な話として説明します。

たとえば、顧客とその詳細 (リージョンなど) に関する情報を Dataverse に格納するとします。 すべてを 1 つのテーブルに保持することができます。 テーブルに Customers という名前を付けて、CustomerID、Name、Birthdate、Region などのフィールドを含めることができます。 ここで、ストアの情報を含む別のテーブルがあるとします。 このテーブルには、Store ID、Name、Region などのフィールドがあります。 ご覧のように、両方のテーブルに Region があります。 すべてのリージョンを取得できる単一の場所はありません。リージョンのデータの一部は Customers テーブルにあり、別の一部は Stores テーブルにあります。 この情報からアプリケーションまたはレポートを作成する場合は、常に 2 つのリージョンの情報を 1 つに結合する必要があります。

リレーションシップのない 2 つのテーブル。

上記のようなシナリオの場合に、データベース設計の実践で行われるのは、Region のテーブルを作成することです。 この Region テーブルには、Region ID、Name、およびリージョンに関するその他の情報が含まれています。 他の 2 つのテーブル (Customers と Stores) には、フィールド (両方のテーブルに Region ID がある場合は Region ID、またはリージョンを特定するために十分なくらいに一意の場合は Name) を使用したこのテーブルへのリンクがあります。 これは、Stores および Customers テーブルから Region テーブルへのリレーションシップを持つことを意味します。

ルックアップ フィールドを使用したリレーションシップ。

Dataverse には、リレーションシップを作成するためのいくつかの方法があります。 1 つの方法は、次のセクションで説明するように、テーブルを作成し、別のテーブルへのリレーションシップ (またはルックアップ) であるフィールドを 1 つのテーブルに作成することです。

ルックアップ フィールドまたはリレーションシップ フィールドとは

Dataverse では、別のテーブルを指すルックアップ フィールドとして定義されたフィールドを持つことができます。

ルックアップ フィールド。

上の図で、Region フィールドは、Region Lookup という別のテーブルへのルックアップ フィールドです。 さまざまな種類のリレーションシップの詳細については、「テーブル間に関連付けを作成する」を参照してください。

フィールドのマッピングにリレーションシップ フィールドが表示されない場合

あるテーブルで別のテーブルを指すルックアップ フィールドを作成した場合、そのフィールドがデータフローのマッピングに表示されないことがあります。 これは、リレーションシップに関与するターゲット エンティティにはキー フィールドを定義する必要があるためです。 この場合のベスト プラクティスは、フィールドがデータフローのテーブル マッピングでマップ可能であることを確認することです。

テーブルのキー フィールドの設定

テーブルのキー フィールドを設定するには、[キー] タブに移動して、一意の値を持つフィールドにキーを追加します。

キー フィールドを設定します。

キー フィールドを設定すると、データフローのマッピングにフィールドが表示されます。

[フィールドのマッピング] に表示されたキー フィールド。

既知の制限事項

  • ポリモーフィックなルックアップ フィールドへのマッピングは、現在サポートされていません。
  • 複数レベルのルックアップ フィールド (別のテーブルのルックアップ フィールドを指すルックアップ) へのマッピングは、現在サポートされていません。
  • 標準テーブルのルックアップ フィールドは、このドキュメントで説明されているように代替キー フィールドを含んでいない限り、[マップ テーブル] ダイアログには表示されません。
  • 階層データ構造として構成されたテーブルにデータをロードする場合、データフローは正しいロード順序を保証しません。
  • クエリの実行順序、または Dataverse テーブルへの読み込み順序は保証されません。 子テーブルと親テーブルを 2 つのデータフローに分割し、最初に子アーティファクトを含むデータフローを更新することをお勧めします。