[基本] Dataverseで「リレーション(関連付け)」を実装する
Dataverseを使い、より複雑なデータ関係を構築し、委任問題にも対応できる堅牢なシステムにします。
Dataverseとは
Dataverse(データバース)は、Microsoftが開発した、Power Platformのためのクラウドベースのデータストレージです。
リレーショナルデータベース(RDB)としての機能を持ち、複雑なデータモデルを構築できます。
Dataverseを選ぶメリット
最大のメリットは、数百万件のデータでも高速に処理でき、SharePointリストにみられた委任の問題が大幅に軽減される点です。
- セキュリティが強力: アクセス許可されたユーザーのみデータ表示、ロールベースでも権限付与が可能
- 「計算列」と「ロールアップ列」: 関連するテーブルの数値を自動で合計する
- 多対多(N:N)のリレーション: テーブルとテーブルが多対多の関係において、中間テーブルの作成が不要
- ビジネスルール: Power Appsでロジックを作らず、Dataverse側で設定可能(例えば、金額100万円以上の場合に必須項目するなど)
リレーションの構築によるデータ統合
SharePointリストでは参照列を使っていましたが、Dataverseでは別々のテーブルを用意し、それぞれを関連付け(リレーションシップ) します。
リレーションは3種類あり、このシリーズを例にとって説明します。
| 種類 | 一般的な呼び方 | 例 |
|---|---|---|
| 1:N (一対多) | 親子関係 | 「1つの資産」 に対して 「複数の修理履歴(状態が修理中の場合)」 が紐付く状態。 |
| N:1 (多対一) | 参照関係 | 「複数の資産」 が 「1つの部署」 を参照している状態。 |
| N:N (多対多) | 相互関係 | 「複数の資産」 と 「複数の利用先(状態が利用中の場合)」 の紐付け。 |
上記より、Dataverseでは「状態」「管理者」「カテゴリ」といったマスターテーブルを用意することが可能です。
Dataverseの使い方
既存データをインポートして作成
- Power Appsの「作成」>「Start from data」にある「新しいデータを作成する」を選択します。
- データ作成画面へ遷移後、上メニューの「新しいテーブル」>「外部データから始まる」>「SharePoint リストをインポート」を選択します。
- 該当のSharePointサイトとリストを選択し、インポートを実行します。
- 「資産管理サンプル」のテーブルが作成されたことを確認します。

Tips: インポートする時、SharePointリストの列はデータ型が決まっているので、Excelからよりも有利です。
1対多(1:N)のリレーションの作成
- 上図の左上にある「テーブル1」を使用し、「状態」のマスターテーブルを作成します。
- 「テーブル1」をダブルクリックし、「使用状態」に名前を変更します。
※名前を「状態」にすると、Dataverseがすでに持っているデフォルトのテーブル名と重複し、扱いにくくなります - テーブルデザイナーから既存の「新しい列」を押下し、「列の編集」>「表示名」は「ID」にします。
- テーブルデザイナーの右にある「新しい列」を選択し、下記を設定します。
表示名: 「状態名」
データの種類: 「1行テキスト」
「高度なオプション」>「スキーマ名」: 「status」 - 同じく「新しい列」を選択し、下記を設定します。
表示名: 「棚卸対象」
データの種類: 「はい/いいえ」
スキーマ名: 「inventory」 - 上メニューの「リレーションシップを作成する」を押下し、下記を設定します。
リレーションシップの種類: 一対多
ひとつ: 状態
多い: 資産管理アプリ
表示名: 状態 - ビューにリレーションが作成されたことを確認します。

Tips: リレーションシップのスキーマ名とリレーションシップ名も名前を付けておくと管理しやすいです。
Caution: リレーションシップのスキーマ名のエラーが発生する場合がありますが、数字の前にアルファベット(例えば、
aなど)を入れれば解決します。
名前は英字またはアンダースコアで始める必要があり、その後に、数字、英字、アンダースコアを使用します。空白または特殊文字は使用できません。
- 使用状態テーブルを選択してテーブルデザイナーを開き、「新しい行」から任意のステータスを作成します。

- 上メニューの「保存して終了」を実行します。
Dataveseのうまくいかないところ
テーブル作成が保存できない場合
上記の方法で保存ができない場合、2つのテーブルとリレーションシップを個別に作成します。
テーブルの作成は、Power Appsの左メニューの「テーブル」>「新しいテーブル」から可能です。
作成されたテーブルは、同じメニューの 「カスタム」でフィルタリングすると表示されます。
リレーションシップは、該当のテーブルを選択し、「スキーマ」>「リレーションシップ」>「新しいリレーションシップ」>「多対一」を選びます。
リレーションシップを結ぶテーブルを選び、「完了」を実行します。
Caution: テーブルもしくはリレーションに明示的なエラーがなくても、内部処理の問題で保存に失敗することがあります。
データのインポートに失敗する場合
データのインポートに失敗する場合、手動でデータを移します。
SharePointのグリッドビュー機能を使い、複数行と複数列をまとめてコピーします。
※1行目の「No.」の値を選択後、Shiftキーを押しながら10行目の「__PowerAppsID__」の値を選択すると範囲選択が可能、範囲選択は点線で囲まれていればアクティブになっている
Power Appsで該当のテーブルを選び、「編集」>「編集」>「新しい行」で必要分だけ行を作成します。
作成後、列の並びをSharePointリストと揃え、コピーの時と同じく、複数行と複数列を選択して貼り付けます。
※範囲選択の方法はグリッドビューを同じ、青線で囲まれていればアクティブになっている
Caution: データ型の不整合があると、Dataverseはスキーマだけを作成し、データのインポートを無視します。
日付の不整合問題
データの手動コピーを行った場合、Power Appsの環境設定によっては日付が正しくなりません。
例えば、下記のようになります。
SharePointリスト → 2024/04/15 0:00
Dataverse → 2083-08-03 0:00
Dataverseが自動的に日付を解釈してしまい、データの齟齬が生じます。
この場合、Dataverse側でテーブルのセルをダブルクリックしてアクティブにした後、貼り付けをするとテキスト貼り付けになるため、正しくデータが入力されます。
Tips: テキスト貼り付けによるデータ移行は苦肉の策です。
Caution: 大量にデータのある実務では、一つずつのテキスト貼り付けは現実的ではないため、エディターによる編集をはさんだり、Power Automateを使うなどしてデータ移行の代替策を検討してください。
Tips: この発生要因は、別のステップで掘り下げます。
広告