PowerAppsの委任について15分で語ってみる

-- Views

September 21, 25

スライド概要

Power Appsのキャンバスアプリ作成時によく語られる「委任」の問題について15分で解説します。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

Power Appsの 委任について 15分で語ってみる

2.

「委任」について聞いたことがありますか? こんなイメージを持っている人が多い? Power Appsを使っているとたまにでてくる マークのやつ! これがでていると、元のデータを2,000行しか取得できない > 大体あっているが、補足が必要となる点もある 今回は、それらに付いて改めて確認していきましょう!

3.

そもそもデフォルトは500行 よく、「委任」では2,000行という数値が出てきますが、これはPower Appsのデータ行数の制限のことを指 しています。2,000というのは、この制限の上限として設定できる数値で、デフォルトは500行です。 ここを2000に 変えると、非委 任データであっ ても2000行ま でを集計対象に できる

4.

そもそも「委任」の意味って? 委任 ・・・ 仕事などを他人に任せること、委託すること *デジタル大辞泉(https://kotobank.jp/word/委任 -762?utm_source=chatgpt.com) Power Appsにおいては… アプリが、データの取得・加工処理を データソースに任せること > よく話題に上がる2000行というのは、「委任」ができていなかったことを示している数値。 「委任」という機能のことを示しているわけではない。

5.

具体的な委任の流れ Filter関数で特定のデータソースを絞り込んだ場合の処理 1 2 アプリがデータソースにクエリ (Power Fx)を投げる これを処理して! Filter(ItemList, category = “文房 具”) 3 データソースがクエリの内容を 元に処理を実施 データソースが処理結果を アプリに返す 処 理 中 すべてのデータか ら一致するものを 検索します… 10件見つけたので、 その結果をお渡し します、 データの加工が得意なデータソースに処理を委任することにより、 アプリ全体のパフォーマンスが良くなるため、本処理が実施される

6.

「委任」できるデータソースは意外と少ない 「委任」に対応している代表的なデータソース SharePoint List Dataverse SQL Server > それ以外のデータソースを使った場合、「委任」はどうなる? アプリ内のメモリで処理が行われます SalesForce

7.

「委任」できない場合は? 委任ができないデータを処理する際の流れ 1 アプリがデータソースの 先頭500行を取り出す これは委任無理 だから元データ の500行まで取 ります 2 3 先頭500行分のデータが、 Power Appsのメモリに入る メモリ内でアプリが、 Power Fxの処理を実施する。 処 理 中 処理実行して、ア プリ内に結果を表 示! 処理可能なだけのデータをアプリが取得し、 メモリ内で処理を実行する

8.

「非委任」であることの何が問題か? 先頭 500行 までしか取れなくなることが原因 …最大2000行までにできますが 一部のデータしか取れないので、 アプリで表示されているデータに誤りが生じる可能性がある

9.

500行までしか取れないとは? 図示すると以下のとおりです。委任不可能な場合、データ行数の制限を超える行については切り捨てられます 委任可能 な場合 ID 1 2 委任不可能 な場合 3 計算式 すべての結果を検索 したうえで、一致す るものを返す 4 5 ︙ 502 1 2 3 計算式 計算対象は先頭500行ま で。500行以降のデータ は完全無視される。 500 501 ID 4 5 ︙ 500 これ以降は完全に計 算対象にならない 501 502

10.

具体的には? 以下のようなケースで、「データが正しく表示されない」場合があります。 ケース1 ケース2 データの集計値の不一致 結果の一部が表示されない 実際の行数 1000行 アプリで は500と しか表示 されない Excelをデータソースとし、500行以 上のデータをテーブルに追加した。そ れに対してCountRows関数でアイ テム数の合計値を表示しようとした が、500としか表示されず、実際の数 字とズレが生じた。 Filter(データ, Textlabel1.te xt in 列1) 結果1 結果2 (結果3) 表示されていな い 2,000行のデータがある、SPO List のデータを「in」演算子を使って全文 検索しようとした。しかし、一部の結 果は条件に合うはずなのに候補とし て表示されない。 + アプリの処理速度が 落ちるという問題も 「非委任」の場合、すべての処理はPower Appsのメモリ上で行われます。 そのため、複雑な処理を行った場合、データ 処理に時間がかかり、「アプリやページが全 然起動しない」「動きがカクカクする」などの 問題が発生する場合があります。

11.

アプリ側においても注意が必要 「委任」は、データソース側だけの問題ではない。 データの持ち方によっては、 アプリ側の「データ行の制限」についても意識をする必要がある。 特に、委任したデータを「コレクション」に保持する場合注意が必要

12.

こういうことをする場合に注意が必要 以下の場合、委任ができていたとしても、その処理結果が500行を超える場合注意が必要です。 ケース1 ケース2 ClearCollectで使う With関数で使う ClearCollect(col集計データ, Filter(対象データ, 列 = TextInput.text) With({scpFilteredData: Filter(対象データ, 列= TextInput.text)}) 一度データをコレクション 化したうえで、CountRows などの集計を行う場合。 対象データから、委任可能 なものについてデータを絞 り込んだうえで、一次関数 として保管し、さらにその データに対して、委任でき ない条件でFilter関数を使う ような場合。 コレクションとな るため注意が必要 これらの処理を行うと、アプリ上に一時的に データを保持することになります(コレクション)。 これらのデータ保持については、「非委任」の 処理と同じくデフォルトでは500行までという 制限があるため、結果が500行を超えたコレク ションを使う場合、データに欠落が生じる可能 性があり注意が必要です。

13.

実際に試してみる 「データ行数の制限」を10行にして、SPO Listにある100行のデータを処理してみます。 ①Galleryに表示する場合 Filter( '100castles', '入場料(大人)' = 0 ) Filter( '100castles', Int('入場料(大人)') = 0 ) 結果行数: 44行 結果行数: 10行 行数制限は10行にしているが、 その状態でもGalleryの場合 は100行まで表示可能。 Galleryは現在している表示 範囲を100行ずつ読み込んで いく仕様のため。 あえて検索対象列をIntで囲 み委任不可能とする。。この場 合、「データ行数の制限」の対 象となり、設定値である10行 までしか結果が帰ってこなくな る。

14.

実際に試してみる 「データ行数の制限」を10行にして、SPO Listにある100行のデータを処理してみます。 ②ClearCollect関数内で利用する場合 Filter( '100castles', '入場料(大人)' = 0 ) ClearCollect( col集計データ, Filter('100castles','入場 料(大人)' = 0) ) 結果行数: 44行 結果行数: 10行 行数制限は10行にしているが、 その状態でもGalleryの場合 は100行まで表示可能。 Galleryは現在している表示 範囲を100行ずつ読み込んで いく仕様のため。 コレクションを作成し、その結 果をGalleryに表示。Filterに ついては委任対象なので44 件の結果が帰るが、コレクショ ンにした時点でデータ行数制 限に引っかかり10行のみが返 る。 コレクション化することでデータが切り詰められる可能性がある

15.

実際に試してみる 「データ行数の制限」を10行にして、SPO Listにある100行のデータを処理してみます。 ③With関数内で利用する場合 CountRows(Filter('100castles', '入場料(大人)' = 0)) 表示結果: 10 そもそもSPO Listにおいて、CountRows関数は委任不可 能であるため、「データ行数の制限」に引っ掛かる。 そのため、本来の結果がそれ以上であったとしても10とい う数値が返る。 With( { scpFilteredData: Filter('100castles', '入場料(大人)' = 0) }, CountRows(scpFilteredData) ) 表示結果: 10 Filterの部分は委任できているため、結果としては44 行が返ってきている。しかし、これをWith関数を使いス コープ変数としてPower Appsのメモリに保管した。 そのため、「データ行数の制限」の対象となり、数値が 切り詰められて10という結果が返った。

16.

まとめ 委任=対象のデータが2000行以上存在するかしないか、だけではない 1 対象のデータソースはそもそも「委任」に対応しているか 2 利用する関数はすべて「委任」に対応しているのか 3 「委任」処理したデータが「データの制限」以上になる場合でも、問題 が発生しないアプリの構造としているか という 「データの取得方法」と「取得したデータの取り扱い」という 2つの側面で考える必要がある

17.

参考資料 委任の概要や、委任できる関数についてはすべてMicrosoftの公式ドキュメントで確認可能です。 英語版をChatGPTで翻訳して読むのがおすすめです。 Understand delegation in a canvas app Power Apps | Microsoft Learn 委任についての概要が説明されている。絶対読 むべき! Connect to Microsoft Dataverse - Power Apps | Microsoft Learn Dataverseの概要が説明されている。色々でき る!すごい! Connect to SharePoint from a canvas app - Power Apps | Microsoft Learn おそらくいちばん需要があるやつ。<>とか使えない のが辛い… Connect to SQL Server from Power Apps overview - Power Apps | Microsoft Learn SQL Serverの委任で使える関数が書いてあるやつ