本文介紹:
Power Apps 中的委派函數(shù)和非可委派函數(shù)。
現(xiàn)象:
在Power Apps中顯示某些數(shù)據(jù)源時(shí),如果數(shù)據(jù)量超過(guò) 500,則可能遇到現(xiàn)實(shí)不全的情況,實(shí)際上大部分是由于 委派函數(shù) 和 非可委派函數(shù) 使用不合適導(dǎo)致的。
所謂委派函數(shù),是指實(shí)際的數(shù)據(jù)查詢(xún)是由數(shù)據(jù)源完成的,比如 power apps 調(diào)用 filter 函數(shù) 查詢(xún)了 SQL數(shù)據(jù)庫(kù)或者 Share Point,實(shí)際的查詢(xún)是在數(shù)據(jù)源側(cè)也就是SQL或Share Point 執(zhí)行的。這時(shí)候的返回值可以是超過(guò)500條數(shù)據(jù)的。
為什么提到500這個(gè)數(shù)字,是因?yàn)镻ower Apps畫(huà)布應(yīng)用的一個(gè)默認(rèn)配置:
打開(kāi)某個(gè)Power Apps的編輯模式,文件菜單-設(shè)置-數(shù)據(jù)行限制,該值默認(rèn)是500,最大可以調(diào)整到2000。
注意,該值的配置是針對(duì)非可委派函數(shù)的,比如下方的函數(shù),均為非可委派函數(shù):
非可委派函數(shù)
所有其他函數(shù)都不支持委派,包括以下重要函數(shù):
- First、FirstN、Last、LastN
- Choices
- Concat
- Collect、ClearCollect
- CountIf、RemoveIf、UpdateIf
- GroupBy、Ungroup
使用這些函數(shù)從SQL或Share Point List查詢(xún)數(shù)據(jù),則會(huì)受 500 這個(gè)值的限制。
官網(wǎng)中對(duì)此限制的描述如下:
顯然,使用此工具時(shí)必須小心,因?yàn)檫@可能會(huì)讓用戶(hù)感到困惑。例如,假設(shè)有一個(gè)?Filter?函數(shù),其選擇公式不能委派,需要對(duì)有一百萬(wàn)條記錄的數(shù)據(jù)源應(yīng)用該函數(shù)。由于本地進(jìn)行篩選,因此僅掃描了前 500 條記錄。如果所需記錄是第 501 或第 500,001 個(gè)記錄,則?Filter?不會(huì)考慮或返回該記錄。
即數(shù)據(jù)庫(kù)中明明有幾千條數(shù)據(jù),但使用了上述非可委派函數(shù),導(dǎo)致數(shù)據(jù)只查出了 500條,導(dǎo)致業(yè)務(wù)邏輯混亂。
這個(gè)值可以改成最大2000,但官網(wǎng)也給出了說(shuō)明:
在某些情況下,您會(huì)發(fā)現(xiàn) 2,000(或者 1,000 或 1,500)即可滿(mǎn)足方案的需求??梢灾?jǐn)慎增大此數(shù)字以適應(yīng)您的方案。增大此數(shù)字,應(yīng)用的性能可能會(huì)降低,特別是對(duì)于具有大量列的寬表。盡管如此,仍是委派越多越好。
即雖然可以改成2000,但也要悠著點(diǎn),改太大可能造成性能問(wèn)題。
可委派函數(shù)則不受上述影響:
可委派函數(shù)
Filter、Search?和?LookUp?可以委派,不受500的限制。
針對(duì)以上描述,我們做了測(cè)試,在Share Point中導(dǎo)入了一個(gè)excel,內(nèi)容如下:
RT20170001-RT20172210,共計(jì)2210行數(shù)據(jù)。
??
在Power Apps中使用Share point 連接創(chuàng)建畫(huà)布應(yīng)用:
設(shè)置 Gallery1 控件的:
Items =Filter([@'test-excel'], StartsWith(Title, TextSearchBox1.Text))
由于Filter是 可委派函數(shù),所以如下圖是可以顯示超過(guò) 2000條數(shù)據(jù)的。
??
緊接著設(shè)置一個(gè)按鈕,然后設(shè)置一個(gè) gallery 2,按鈕的onselect 設(shè)置為:
OnSelect=ClearCollect(Collect01,Filter([@'test-excel'], StartsWith(Title, TextSearchBox1.Text)));
使用ClearCollect 非可委派函數(shù),故而Collect01中的數(shù)據(jù)實(shí)際上是受到 默認(rèn)值 500的限制的,本例子中我們已經(jīng)講該值改為2000。
??
Gallery2 的 ITems 設(shè)置為
Items=Collect01
??
運(yùn)行程序,點(diǎn)擊按鈕,查看 Gallery2的數(shù)據(jù):
由于ClearCollect是 非可委派函數(shù),則最多顯示了 2000條數(shù)據(jù)。
??
針對(duì)這一現(xiàn)象,官網(wǎng)給出:
官網(wǎng)中明確規(guī)定:處理大型數(shù)據(jù)集需要使用數(shù)據(jù)源和能夠委派的公式,?若要讓?xiě)?yīng)用始終運(yùn)行良好,同時(shí)要確保用戶(hù)能夠訪(fǎng)問(wèn)所需的全部信息,這是唯一的方式。?請(qǐng)注意,標(biāo)識(shí)不可能委派的位置的委派警告。?如果處理的是小型數(shù)據(jù)集(不到?500?條記錄),則可使用任何數(shù)據(jù)源和公式,因?yàn)楫?dāng)不能委派公式時(shí),應(yīng)用可以在本地處理數(shù)據(jù)???。
另外當(dāng) Share Point List中數(shù)據(jù)超過(guò) 5000,則Power Apps還會(huì)報(bào)錯(cuò):
請(qǐng)求的操作無(wú)效,服務(wù)器響應(yīng)? 失敗,已禁止嘗試的操作,因?yàn)樗^(guò)了列表視圖閾值。
需修改Share Point List 列表體驗(yàn) 為 新體驗(yàn) 以支持超過(guò)5000行的share point list ,步驟如下:
本文摘自 :https://blog.51cto.com/u