當(dāng)前位置:首頁 > IT技術(shù) > 移動平臺 > 正文

Power Apps 畫布應(yīng)用中非可委派函數(shù)查詢數(shù)量限制
2021-12-13 17:41:41

本文介紹:

Power Apps 中的委派函數(shù)和非可委派函數(shù)。

現(xiàn)象:

在Power Apps中顯示某些數(shù)據(jù)源時,如果數(shù)據(jù)量超過 500,則可能遇到現(xiàn)實不全的情況,實際上大部分是由于 委派函數(shù) 和 非可委派函數(shù) 使用不合適導(dǎo)致的。

所謂委派函數(shù),是指實際的數(shù)據(jù)查詢是由數(shù)據(jù)源完成的,比如 power apps 調(diào)用 filter 函數(shù) 查詢了 SQL數(shù)據(jù)庫或者 Share Point,實際的查詢是在數(shù)據(jù)源側(cè)也就是SQL或Share Point 執(zhí)行的。這時候的返回值可以是超過500條數(shù)據(jù)的。

為什么提到500這個數(shù)字,是因為Power Apps畫布應(yīng)用的一個默認(rèn)配置:

打開某個Power Apps的編輯模式,文件菜單-設(shè)置-數(shù)據(jù)行限制,該值默認(rèn)是500,最大可以調(diào)整到2000。

Power Apps 畫布應(yīng)用中非可委派函數(shù)查詢數(shù)量限制_數(shù)據(jù)


注意,該值的配置是針對非可委派函數(shù)的,比如下方的函數(shù),均為非可委派函數(shù):


非可委派函數(shù)

所有其他函數(shù)都不支持委派,包括以下重要函數(shù):


  • First、FirstN、Last、LastN
  • Choices
  • Concat
  • Collect、ClearCollect
  • CountIf、RemoveIf、UpdateIf
  • GroupBy、Ungroup

使用這些函數(shù)從SQL或Share Point List查詢數(shù)據(jù),則會受 500 這個值的限制。

官網(wǎng)中對此限制的描述如下:

顯然,使用此工具時必須小心,因為這可能會讓用戶感到困惑。例如,假設(shè)有一個?Filter?函數(shù),其選擇公式不能委派,需要對有一百萬條記錄的數(shù)據(jù)源應(yīng)用該函數(shù)。由于本地進(jìn)行篩選,因此僅掃描了前 500 條記錄。如果所需記錄是第 501 或第 500,001 個記錄,則?Filter?不會考慮或返回該記錄。

即數(shù)據(jù)庫中明明有幾千條數(shù)據(jù),但使用了上述非可委派函數(shù),導(dǎo)致數(shù)據(jù)只查出了 500條,導(dǎo)致業(yè)務(wù)邏輯混亂。

這個值可以改成最大2000,但官網(wǎng)也給出了說明:

在某些情況下,您會發(fā)現(xiàn) 2,000(或者 1,000 或 1,500)即可滿足方案的需求??梢灾?jǐn)慎增大此數(shù)字以適應(yīng)您的方案。增大此數(shù)字,應(yīng)用的性能可能會降低,特別是對于具有大量列的寬表。盡管如此,仍是委派越多越好。

即雖然可以改成2000,但也要悠著點,改太大可能造成性能問題。



可委派函數(shù)則不受上述影響:

可委派函數(shù)

Filter、Search?和?LookUp?可以委派,不受500的限制。



針對以上描述,我們做了測試,在Share Point中導(dǎo)入了一個excel,內(nèi)容如下:

RT20170001-RT20172210,共計2210行數(shù)據(jù)。

?Power Apps 畫布應(yīng)用中非可委派函數(shù)查詢數(shù)量限制_數(shù)據(jù)源_02?


在Power Apps中使用Share point 連接創(chuàng)建畫布應(yīng)用:

設(shè)置 Gallery1 控件的:

Items =Filter([@'test-excel'], StartsWith(Title, TextSearchBox1.Text))

由于Filter是 可委派函數(shù),所以如下圖是可以顯示超過 2000條數(shù)據(jù)的。

?Power Apps 畫布應(yīng)用中非可委派函數(shù)查詢數(shù)量限制_官網(wǎng)_03?


緊接著設(shè)置一個按鈕,然后設(shè)置一個 gallery 2,按鈕的onselect 設(shè)置為:

OnSelect=ClearCollect(Collect01,Filter([@'test-excel'], StartsWith(Title, TextSearchBox1.Text)));

使用ClearCollect 非可委派函數(shù),故而Collect01中的數(shù)據(jù)實際上是受到 默認(rèn)值 500的限制的,本例子中我們已經(jīng)講該值改為2000。

?Power Apps 畫布應(yīng)用中非可委派函數(shù)查詢數(shù)量限制_數(shù)據(jù)_04?


Gallery2 的 ITems 設(shè)置為

Items=Collect01

?Power Apps 畫布應(yīng)用中非可委派函數(shù)查詢數(shù)量限制_數(shù)據(jù)源_05?


運(yùn)行程序,點擊按鈕,查看 Gallery2的數(shù)據(jù):

由于ClearCollect是 非可委派函數(shù),則最多顯示了 2000條數(shù)據(jù)。

?Power Apps 畫布應(yīng)用中非可委派函數(shù)查詢數(shù)量限制_數(shù)據(jù)源_06?


針對這一現(xiàn)象,官網(wǎng)給出:

官網(wǎng)中明確規(guī)定:處理大型數(shù)據(jù)集需要使用數(shù)據(jù)源和能夠委派的公式,?若要讓應(yīng)用始終運(yùn)行良好,同時要確保用戶能夠訪問所需的全部信息,這是唯一的方式。?請注意,標(biāo)識不可能委派的位置的委派警告。?如果處理的是小型數(shù)據(jù)集(不到?500?條記錄),則可使用任何數(shù)據(jù)源和公式,因為當(dāng)不能委派公式時,應(yīng)用可以在本地處理數(shù)據(jù)???。





另外當(dāng) Share Point List中數(shù)據(jù)超過 5000,則Power Apps還會報錯:

請求的操作無效,服務(wù)器響應(yīng)? 失敗,已禁止嘗試的操作,因為它超過了列表視圖閾值。

Power Apps 畫布應(yīng)用中非可委派函數(shù)查詢數(shù)量限制_數(shù)據(jù)源_07


需修改Share Point List 列表體驗 為 新體驗 以支持超過5000行的share point list ,步驟如下:


Power Apps 畫布應(yīng)用中非可委派函數(shù)查詢數(shù)量限制_官網(wǎng)_08

Power Apps 畫布應(yīng)用中非可委派函數(shù)查詢數(shù)量限制_官網(wǎng)_09



本文摘自 :https://blog.51cto.com/u

開通會員,享受整站包年服務(wù)立即開通 >