Power Apps iconPower AppsことはじめPower Apps icon
【比較検証】3ステップで進化させる資産管理アプリ
Step 4 / 7

[基本] 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の使い方

既存データをインポートして作成

  1. Power Appsの「作成」>「Start from data」にある「新しいデータを作成する」を選択します。
  2. データ作成画面へ遷移後、上メニューの「新しいテーブル」>「外部データから始まる」>「SharePoint リストをインポート」を選択します。
  3. 該当のSharePointサイトとリストを選択し、インポートを実行します。
  4. 「資産管理サンプル」のテーブルが作成されたことを確認します。

SharePointリストをインポートしてDataverse作成

Tips: インポートする時、SharePointリストの列はデータ型が決まっているので、Excelからよりも有利です。

1対多(1:N)のリレーションの作成

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

リレーションシップ作成

Tips: リレーションシップのスキーマ名とリレーションシップ名も名前を付けておくと管理しやすいです。

Caution: リレーションシップのスキーマ名のエラーが発生する場合がありますが、数字の前にアルファベット(例えば、aなど)を入れれば解決します。

名前は英字またはアンダースコアで始める必要があり、その後に、数字、英字、アンダースコアを使用します。空白または特殊文字は使用できません。
  1. 使用状態テーブルを選択してテーブルデザイナーを開き、「新しい行」から任意のステータスを作成します。

使用状態テーブル作成

  1. 上メニューの「保存して終了」を実行します。

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: この発生要因は、別のステップで掘り下げます。

広告