了解畫布應用程式中的委派

Power Apps包含一組強大的函數,可用來在畫布應用程式中篩選、排序與形塑資料表:FilterSortAddColumns 函數等。 透過這些函數,您可以讓使用者專注存取他們所需的資訊。 對於具有資料庫背景的使用者而言,使用這些函數就等同於撰寫資料庫查詢。

要建置有效率應用程式的關鍵在於盡可能減少必須帶入裝置的資料量。 或許您只需要數百萬筆記錄中的少許記錄,或是一個彙總值就可以代表成千上萬筆記錄。 又或者系統只會擷取第一組記錄,並在使用者以手勢表示需要更多記錄時帶入其餘的記錄。 專注於所需的資訊可大幅減少您應用程式所需的處理電力、記憶體及網路頻寬,讓您的使用者更快速得到回應,即使是使用透過行動數據網路連接的電話。

Delegation 會透過以 Power Apps 公式表示的方式,來滿足減少在網路上移動資料的需求。 簡單地說,Power Apps 會將資料的處理委派給資料來源,而非將資料移至應用程式以在本機處理。

但複雜的是,並非每一件可用 Power Apps 公式表示的項目都能委派給每個資料來源,這也是本文之所以存在的原因。 Power Apps 語言會模擬 Excel 的公式語言,其設計能夠完整且立即存取記憶體中的完整活頁簿,以及各種數字和文字操作函數。 因此,Power Apps 語言遠比大部分資料來源可以支援的語言豐富,包括如 SQL Server 等強大的資料庫引擎。

處理大型數據集需使用可委派的資料來源和公式。 它是讓您的應用程式正常執行,並確保使用者可以存取所有所需資訊的唯一方法。 請注意可識別無法委派之位置的委派警告。 如果您正在處理小型資料集 (少於 500 筆記錄),則可以使用任何資料來源和公式,原因是如果無法委派公式,則應用程式可以在本機處理資料。

備註

委派警告先前在 Power Apps 中標示為「藍點」建議,但委派建議已重新分類為警告。 如果您資料來源中的資料超過 500 筆記錄,而且無法委派函數,則 Power Apps 可能無法擷取所有資料,而且您的應用程式可能會有錯誤結果。 委派警告可協助您管理應用程式,以具有正確的結果。

可委派的資料來源

僅有部分表格式資料來源可支援委派。 如果資料來源支援委派,則其 連接器文件 會概述支援。 例如,這些表格資料來源是最常用的,而且它們支援委派:

儲存在內容變數中的已匯入 Excel 活頁簿 (使用 Add static data to your app 資料來源)、集合及表格不需要委派。 此資料已全部在記憶體中,且可套用完整的 Power Apps 語言。

可委派的函數

下一個步驟是僅使用可委派的公式。 以下提供可委派的公式元素。 不過,每個資料來源都不同,而且並非所有的資料來源都支援以下所有的公式元素。 檢查特定公式中的委派警告。

這些清單會隨著時間改變。 我們會持續努力以支援更多具有委派功能的函數和運算子。

篩選函式

FilterSearch,及 LookUp 可以委派。

FilterLookUp 函數內,您可以搭配使用下列項目與資料表的資料行,以選取適當的記錄:

  • And(including &&)、Or(including ||)、Not(including !)
  • In

    備註

    In 僅委派給基本資料來源中的資料行。 例如,如果資料來源是 客戶 資料表,則 Filter(Accounts, Name in ["name1", "name2"]) 會委派給資料來源進行評估。 但是,Filter(Accounts, PrimaryContact.Fullname in ["name1", "name2"]) 不會委派,因為 全名 資料行與 客戶 位於不同的資料表 (PrimaryContact) 上。 運算式是在本機進行計算。

  • =<>>=<=><
  • +-
  • TrimEnds
  • IsBlank
  • StartsWithEndsWith
  • 在所有記錄都相同的常數值,例如控制屬性和全域和內容變數

您也可以使用公式中為所有記錄評估常數值的部分。 例如,Left( Language(), 2 )Date( 2019, 3, 31 ),和 Today() 不依賴記錄的任何資料行,因此會為所有記錄傳回相同的值。 這些值可以當作常量傳送至資料來源,而不會封鎖委派。

前一份清單未包括這些值得注意的項目:

排序函數

SortSortByColumns 可以委派。

Sort 中,公式只能是單一資料行的名稱,不能包含其他運算子或函數。

彙總函數

可以委派 SumAverageMinMax。 目前只有少數資料來源支援此委派,如需詳細資訊,請參閱 委派清單

備註

如果運算式未委派,則只會處理從資料來源擷取前 500 筆記錄 (最多可設定 2000 筆,請參閱變更限制),而不是委派處理資料來源中的所有資料。

無法委派計算函數,例如 CountRowsCountACount

無法委派其他彙總函數,例如 StdevPVarP

表格成形函數

AddColumnsDropColumnsRenameColumns,和 ShowColumns 部分支援委派。 其參數中的公式可以委派。 但是,這些函數的輸出受限於非委派記錄限制。

在此範例中,常見的模式是使用 AddColumnsLookUp 將某個資料表的資訊合併到另一個資料表,在資料庫用語中,這通常稱為「聯結」。

AddColumns( Products, 
    "Supplier Name", 
    LookUp( Suppliers, Suppliers.ID = Product.SupplierID ).Name 
)

即使 ProductsSuppliers 是可委派的資料來源,且 LookUp 是可委派的函數,但 AddColumns 函數的輸出為不可委派。 整個公式的結果受限為 Products 資料來源的第一個部分。 因為 LookUp 函數和其資料來源是可委派的,所以即使資料來源很大,仍可在資料來源中隨處發現 Suppliers 的符合項目。

若以這種方式使用 AddColumns,則 LookUp 必須針對產品中的每個第一條記錄,分別調用資料來源 Products,從而造成大量的網路顫動。 如果 Suppliers 足夠小且不會經常變更,您可以在 OnStart 中調用收集功能,OnStart 以在應用程式開始時,將資料來源緩存在您的應用程式中。 或者,您也可以重新構建應用程式,這樣就可以只在使用者要求它們時才納入相關記錄。

無法委派的函數

所有其他函數都不支援委派,包括以下值得注意的函數︰

非可委派限制

將會在本機處理無法委派的公式。 如此便能使用到 Power Apps 公式語言的完整範圍。 但會花費高代價:所有的資料必須先帶入裝置,這會涉及在網路上擷取大量的資料。 這需要一些時間,因此會讓人留下您的應用程式速度慢或可能當機的印象。

為避免此狀況發生,Power Apps 對可在本機處理的資料量設下限制:預設為 500 筆記錄。 我們選擇的這個數字讓您仍能完整存取小型資料集,並能夠看到部分的結果以精簡使用大型資料集。

使用此工具時務必格外小心,因為它會讓使用者混淆。 例如,針對包含一百萬筆記錄的資料來源,請考慮無法委派含選擇公式的 Filter 函數。 因為篩選是在本機執行,所以只會掃描前 500 筆記錄。 如果所需的記錄為記錄 501 或 500,001,則 Filter 不會考慮或傳回該記錄。

彙總函數也可能會造成混淆。 對同一個百萬筆記錄資料來源採用 Average。 在這種情況下,由於運算式未委派,因此無法委派 平均值 (請參閱先前的附註),所以只會平均前 500 筆記錄。 如果您不小心,則會將部分回答誤解為您應用程式使用者的完整回答。

變更限制

500 是預設記錄數目,但您可以針對整個應用程式變更此數目:

  1. 選取 設定
  2. 一般 下,將 資料列限制 設定從 1 變更為 2000。

在某些情況下,您可得知 2,000 (或 1,000、1,500) 能夠滿足您案例的需求。 若使用得當,您可增加此數目以符合您的案例。 因為您增加此數目,所以應用程式的效能可能會降低,尤其是具有許多資料行的寬資料表。 最佳的回答仍然還是盡可能地委派。

若要確保您的應用程式能調整至大型資料集,請將此設定減少至 1。 所有無法委派的項目都會傳回單一記錄,這在您測試應用程式時很容易偵測到。 當您嘗試進行應用程式到生產階段的概念證明時,這能夠協助避免意外狀況。

委派警告

為了讓您更輕鬆地知道可委派和不可委派的項目,當您建立的公式包含無法委派的項目時,Power Apps 會提供警告 (黃色三角形)。

委派警告只會顯示在對可委派資料來源操作的公式上。 如果您看不到警告,且認為您的公式未被正確委派,請對照本主題稍早的 可委派資料來源 清單來檢查資料來源類型。

範例

在此範例中,您將會根據名為 [dbo].[Fruit] 的 SQL Server 資料表自動產生三畫面應用程式。 如需如何產生應用程式的資訊,您可以將 Dataverse的相關主題 中的類似原則套用至 SQL Server。

三個畫面的應用程式。

資源庫的 Items 屬性設定為包含 SortByColumnsSearch 函數的公式,而這兩個函數都是可以委派的。

在搜尋方塊中,鍵入 "Apple"

流動點會暫時出現在螢幕頂端附近,因為應用程式會與 SQL Server 通訊以處理搜尋要求。 即會顯示所有符合搜尋準則的記錄,即使資料來源包含數百萬筆記錄也是一樣。

搜尋文字輸入控制項。

搜尋結果包括 "Apples""Crab apples""Pineapple",因為 Search 函數會查看文字資料行中的每個位置。 如果您要找的是只有在水果名稱開頭包含搜尋字詞的記錄,則可以搭配使用另一個可委派函式 Filter 與更複雜的搜尋字詞。 (為求簡單,請移除 SortByColumns 呼叫。)

移除 SortByColumns 呼叫。

新的結果會包括 "Apples",但未包括 "Crab apples""Pineapple"。 不過,黃色三角形會出現在資源庫旁邊 (如果左側導覽列中顯示縮圖,則在畫面縮圖中),而且藍色波浪線會顯示在公式的某個部分下方。 所有這些項目都指出發生警告。 如果您將滑鼠指標停留在資源庫旁的黃色三角形上方,則會出現此訊息:

將滑鼠指標停留在委派警告上方。

SQL Server 是可委派資料來源,而 Filter 是可委派函數。不過,MidLen 無法委派給任何資料來源。

但是它能運作,不是嗎? 沒錯! 這就是為什麼這是警告而不是紅色波浪線的原因。

  • 如果資料表包含少於 500 筆記錄,則公式會完美地運作。 所有記錄都已帶入裝置,並已在本機套用 Filter
  • 如果資料表包含超過 500 筆記錄,則公式不會傳回第 501 筆以上的記錄,即使它符合準則也是一樣。

請參閱

使用不可委派函數和不適當的資料列限制對效能的影響
使用委派的效能秘訣與最佳作法

備註

是否能請您告知您偏好的慣用文件語言? 請填寫問卷。 (請注意,本問卷為英文版)

完成問卷大約需要七分鐘。 本問卷將不會收集個人資料 (隱私權聲明)。