PowerApps 参照型,ID連携どちらを採用すべき?

表結合を行う場合、参照型とID連携の2択があるが、Multi-Layerと内部結合と外部結合を省き、参照型を採用すべきであることがわかった。本結論にいたるまでの調査結果について述べる

【結合タイプ別コード量の比較や参照型の制限】

結合タイプ別コード量の比較した結果は、参照型はどのような条件においてもコードがより少なくなる、もしくはID連携と同等になり、且つData Driven Appを利用する場合リレーション情報をそのまま利用できるため参照型が良いことがわかった。ただし、Multi-Layerと内部結合と外部結合は参照型を採用できないことがわかった
1.Many-to-one /Many-to-many コード量比較

Many-to-oneの場合、参照型の方がややローコードになるが大差はないことがわかった。根拠は以下の例を参照
  ・Many-to-oneでID連携した場合のコード例
  ・PowerApps Dataverse 多対1の参照列で表結合するには

 

Many-to-Manyの場合、参照型の方が圧倒的にローコードになるがわかった。根拠は以下の例を参照
  ・[Office365ユーザ]で複数ユーザを選択しUPNで連携するには(ID連携 による多対多の表結合)
  ・PowerApps Dataverse 多対多の参照列で表結合するには

2. Multi-Layerの場合はID連携のみ

Multi-Layerの場合は、参照型は利用できない事がわかった。根拠は以下参照

  ・PowerApps 参照列で多対1のMulti-Layer展開はサポートされていない

 

 

3.outer-join / inter-joinはID連携のみ 

Outer-join、Inner-joinは参照型にできないので、ID連携を利用せざるをえない
  ・Outer-joinのID連携の例
  ・Inner-jointのID連携の例

4.EntraIDのようなAPIが用意されているテーブルに対してリレーションした場合
 

AzureADのようなAPIが用意されているテーブルに対してMany-to-manyのリレーションする場合は参照型の方がローコードになる事がわかった。根拠は以下の例を参照
  ・Many-to-manyでAzureADをID連携させた場合のコード例 
  ・Many-to-manyでAzureADを参照型で連携した場合のコード例

5.参照型は Dataverse / SharePointでも利用可能
 

SharePointなのか、Dataverseなのかは、どちらの参照型の利用が可能である、その扱いはCollectionに入れてしまえば同じ扱いができるためである

6.参照型は、Data Driven Appを利用する場合リレーション情報をそのまま利用できる
 

Power Appsユーザ選択において、どのI/Fを採用すべきか

PowerAppsでユーザ選択を行う場合、Entra ID(Azure AD),Entra ID Users(AAD Users),Office365 Usersどれを採用すべきかの3択があるが、複数ユーザ選択、単数ユーザ選択に関わらず、「AAD User(EntraID User」を採用が最適であるすべきであることがわかった。本結論にいたるまでの調査結果について述べる

まず、前述の3択が以下の条件でどれが最もローコードになるかで判断することにした。

  • リーレーション方式:lookup column/ID join

  • 単ユーザ選択/複数ユーザ選択

実際に以下のパターンでそれぞれ、コード量がどの程度になるか調査した。

【調査結果】

結論として、どのようなケースにおいてもAAD User(Entra ID Users)を利用すると思って間違いはないだろう
その理由は以下の通りである

・lookup columnにできるのはAAD Userのみであることがわかった。
・複数ユーザを選択する場合lookup column(AAD User)を採用したほうがローコードになることがわかった。
・単数ユーザ選択においてはID Join(UPN join)もlookup column(AAD User)も同じであった。
・lookup column(AAD User)を採用した場合、UPN,Diplay Name以外の属性を取得するには「Office 365 Users」を追加する必要があることがわかった