共用方式為


Filter、 和SearchLookUp函數

適用於: 畫布應用程式 Copilot Studio 桌面流程 模型導向應用程式 Power Platform CLI Dataverse 函數 Power Pages

尋找 資料表 中的一或多筆 記錄

觀看此影片以瞭解如何使用 FilterSearchLookUp 函數:

注意

PAC CLI pac power-fx命令 不支援該 Search 功能。

Description

Filter 函數會在表格中尋找符合公式的記錄。 用於 Filter 尋找一組符合一或多個條件的記錄,並捨棄那些不符合條件的記錄。

函數 LookUp 會在表格中尋找符合公式的第一筆記錄。 用於 LookUp 尋找符合一或多個條件的單一記錄。

在這兩個函式中,系統會針對資料表的每筆記錄評估公式。 產生 true 的記錄會納入結果中。 除了一般公式的運算子外,您還可以使用 inexactin 運算子找到相符的子字串。

目前處理中的記錄其各個欄位可供您在公式內使用。 使用 ThisRecord 運算子,,或只需依名稱參照欄位,就像任何其他的值一樣。 As 運算子也可以用來命名所處理的記錄,這有助於讓您的公式更易於了解並讓嵌套記錄可以存取。 如需更多資訊,請參閱下列範例以及 處理記錄範圍

Search 函數會在資料表中尋找其中一個資料行中包含字串的記錄。 此字串可能出現在欄位內的任何位置,例如,如果搜尋 "rob" 或 "bert",就會在包含 "Robert" 的欄位中找到相符項目。 搜尋不區分大小寫。 與 和 LookUp不同,FilterSearch函數使用單個字符串來匹配而不是公式。

FilterSearch 傳回包含與原始資料表相同資料行的資料行,以及符合條件的記錄的資料表。 LookUp 套用公式將記錄縮減為單一值之後,只會傳回找到的第一筆記錄。 如果找不到任何記錄, FilterSearch回空表 ,並 LookUp 傳回 空白

表格 是一個值, Power Apps就像字串或數字一樣。 資料表可以傳遞至函式,也可以從函式傳回。 FilterSearch和 ,並且 LookUp 不要修改表格。 相反地,它們會採用資料表來作為引數,並從中傳回資料表、記錄或單一值。 請參閱 使用資料表 以取得詳細資料。

委派

如果可行,Power Apps 將委派篩選、對資料來源作業進行排序並視需要逐頁瀏覽結果。 例如,當您啟動應用程式以顯示填有資料的組件庫控制項時,最初將只會向裝置提供第一組記錄。 隨著使用者進行捲動,將陸續從資料來源提供額外的資料。 如此可縮短應用程式的啟動時間並能夠存取龐大的資料集。

不過,委派不一定始終可行。 各種資料來源支援委派的函數與運算子皆不盡相同。 如果未能完整委派某個公式,製作環境會以警告標示無法委派的部分。 可行的情況下,請考慮更改公式以避開無法委派的函數和運算子。 委派清單詳列了可供委派的資料來源及作業。

如果無法進行委派,Power Apps 將僅提取少量的記錄以供本機使用。 Filter 排序函數將對一組減少的記錄進行操作。 組件庫提供的內容不一定是完整的全貌,可能會造成使用者困惑。

詳細資訊請參閱委派概觀

語法

Filter(表格*, 公式1 [,*公式2*,... ] )

  • Table - 必需。 要搜尋的資料表。
  • 公式 - 必需。 用來評估資料表之每筆記錄的公式。 此函式會傳回所有導致 true 的記錄。 您可以參考資料表內的欄位。 如果您提供多個公式,所有公式的結果會使用 And 函式來合併。

Search(資料表*、 搜尋字串資料行 1 [、*資料行 2*、... ] )

  • Table - 必需。 要搜尋的資料表。
  • SearchString - 必需。 要搜尋的字串。 如果 空白 或空字串,會傳回所有記錄。
  • Columns - 必需。 要在 資料表 內搜尋的欄位名稱。 如果在這些欄位任何一個的資料內找到部分相符的 SearchString,則會傳回完整記錄。

注意

在 3.24042 版之前的 Power Apps 中,函數的資料 Search 行名稱是使用雙引號使用文字字串指定,如果連線到資料來源,它們也需要是邏輯名稱。 例如,使用雙引號的邏輯名稱 "cr43e_name",而不是不含引號的顯示名稱 Name。 對於包含帶有空格的欄名稱的 SharePoint 和 Excel 資料來源,每個空格均以「_x0020_」指定,例如「欄名稱」「Column_x0020_Name」。 在此版本之後,所有應用程式都會自動更新為本文中所述的新語法。

LookUp(表格*, 公式 [, *縮減公式* ] )

  • Table - 必需。 要搜尋的資料表。 在 UI 中,語法會在函式方塊上方顯示為 來源
  • 公式 - 必需。 用來評估資料表之每筆記錄的公式。 此函式會傳回導致 true 的第一筆記錄。 您可以參考資料表內的欄位。 在 UI 中,語法會在函式方塊上方顯示為 條件
  • ReductionFormula - 可選。 系統會針對所找到的記錄評估這個公式,然後將記錄縮減為單一值。 您可以參考資料表內的欄位。 如果您未使用此參數,則函式會傳回資料表中的完整記錄。 在 UI 中,語法會在函式方塊上方顯示為 結果

範例

下列範例會使用 IceCream資料來源

IceCream 資料來源。

公式 Description Result
Filter(冰淇淋,訂單量 0)> 傳回 OnOrder 大於零的記錄。 Filter 訂購。
Filter(冰淇淋,數量 + 訂購量 > 225) 傳回 QuantityOnOrder 欄位總和大於 225 的記錄。 Filter 數量和訂單。
Filter(IceCream,下層(風味)中的“巧克力”) 傳回 Flavor 名稱中出現 "巧克力" 文字的記錄,不區分大寫或小寫字母。 Filter 在較低。
Filter(冰淇淋,數量 < 10 和 < 訂購 20) 傳回 Quantity 小於 10 且 OnOrder 小於 20 的記錄。 沒有記錄符合這些準則,所以會傳回空白資料表。 Filter 關於數量。
Search(冰淇淋,“巧克力”,風味) 傳回 Flavor 名稱中出現 "choc" 字串的記錄,不區分大寫或小寫字母。 Search 項目。
Search(冰淇淋,“”,口味) 因為搜尋字詞是空的,所以會傳回所有記錄。 Search 所有項目。
LookUp(冰淇淋,口味=“巧克力”,數量) 搜尋 Flavor 等於 "Chocolate" 的記錄,結果有一個。 對於所找到的第一筆記錄,系統會傳回該記錄的 數量 100
LookUp(冰淇淋,數量 > 150,數量 + 訂購) 搜尋 Quantity 大於 150 的記錄,其中有多個。 對於所找到的第一筆記錄 (即 "Vanilla" Flavor),系統會傳回 QuantityOnOrder 欄位的總和。 250
LookUp(冰淇淋,口味=“開心果”,OnOrder) 搜尋 Flavor 等於 "Pistachio" 的記錄,其中沒有任何一個。 因為沒找到任何項目,查詢傳回空白 空白
LookUp(冰淇淋,口味=“香草”) 搜尋 Flavor 等於 "Vanilla" 的記錄,其中有一個。 因為未提供任何縮減公式,所以系統會傳回整筆記錄。 { flavor: “vanilla”, 數量: 200, OnOrder: 75 }

使用選項資料行篩選

下列範例使用 Microsoft Dataverse 中的客戶資料表格做為資料來源。 此範例顯示如何 Filter 根據選取的下拉式方塊控制項值列出帳戶:

按步就班

  1. 打開空白應用程式。

  2. 選取新畫面選項以新增新畫面。

  3. 插入索引標籤上,選取Gallery,然後選取垂直

  4. 在右窗格的屬性索引標籤上,開啟資料來源然後選取客戶

  5. (選擇性) 在版面配置清單中,選取不同的選項。

  6. 插入索引標籤上,選取輸入,然後選取下拉式方塊。 重複該步驟以新增兩個以上的 Combo box 控制項。

  7. 對於每個 combo box 控制項,在右窗格的屬性索引標籤上,開啟資料來源然後選取客戶。 選取欄位選項旁的編輯,然後選取主要文字SearchField 值。 主要文字應該是要新增至下拉式方塊的選項資料行。 對其他兩個 combo box 控制項重複該步驟。

    設定下拉式方塊值。

  8. 現在選取Gallery控制項,並將 Items 屬性設定為下列公式︰

    Filter(Accounts,
     'Industry' = ComboBox3.Selected.Industry Or IsBlank(ComboBox3.Selected.Industry),
     'Relationship Type' = ComboBox2.Selected.'Relationship Type' Or
       IsBlank(ComboBox2.Selected.'Relationship Type'),
     'Preferred Method of Contact' = ComboBox1.Selected.'Preferred Method of Contact' Or
       IsBlank(ComboBox1.Selected.'Preferred Method of Contact'))
    

    客戶資料來源。

Search 使用者體驗

下列範例會使用 IceCream資料來源

在許多應用程式中,您可以在搜尋方塊中輸入一或多個字元,以篩選大型資料集內的記錄清單。 當您輸入時,此清單只會顯示符合搜尋條件的記錄。

本文其餘章節的範例會顯示搜尋名為客戶之清單的結果,該清單中包含此資料︰

Search 對客戶。

若要將此資料來源建立為集合,請建立 Button 控制項,並將其 OnSelect 屬性設為以下公式︰

ClearCollect(客戶,表({ 名稱:“Fred Garcia”,公司:“Northwind Traders” }, { 名稱:“Cole Miller”,公司:“Contoso” }, { 名稱:“Glenda Johnson”,公司:“Contoso” }, { 名稱:“Mike Collins”,公司:“Adventure Works” }, { 名稱:“Colleen Jones”,公司:“Adventure Works”) }

和此範例一樣,您可以在畫面底部的 Gallery 控制項 中顯示記錄清單。 在靠近畫面頂端的地方,您可以新增名為 SearchInputText input 控制項,讓使用者可以指定其感興趣的記錄。

Search 使用搜尋輸入。

當使用者在 SearchInput 中輸入字元時,資源庫中的結果會自動經過篩選。 在此案例中,資源庫會設定為顯示客戶名稱 (而非公司名稱) 開頭為 SearchInput 中字元序列的記錄。 如果使用者在搜尋方塊中輸入 co,資源庫會顯示下列結果︰

Search 與開始。

若要根據 名稱 欄位進行篩選,請將資源庫控制項的 Items 屬性設定為下列其中一個公式︰

公式 Description Result
Filter(客戶, StartsWith(Name, SearchInput.Text) ) 篩選 客戶 資料來源中,Name 欄位開頭出現此搜尋字串的記錄。 此測試不區分大小寫。 如果使用者在搜尋方塊中輸入 co,資源庫會顯示 Colleen JonesCole Miller。 資源庫不會顯示 Mike Collins,因為該筆記錄的 Name 欄位開頭不是此搜尋字串。 Filter 與開始。
Filter(客戶,名稱中的 SearchInput.Text) 篩選 客戶 資料來源中,Name 欄位任意處出現此搜尋字串的記錄。 此測試不區分大小寫。 如果使用者在搜尋方塊中輸入 co,資源庫會顯示 Colleen JonesCole MillerMike Collins,因為這些記錄的 Name 欄位某處皆出現此搜尋字串。 Filter 與搜尋輸入。
Search(客戶、SearchInput.Text、名稱) 與使用 in 運算子類似,此 Search 函式會在每筆記錄的 [名稱 ] 欄內的任何位置搜尋相符專案。 您必須以雙引號括住資料行名稱。 Search 客戶。

您可以擴大搜尋,將公司資料行和名稱資料行納入其中︰

公式 Description Result
Filter(客戶, StartsWith(Name, SearchInput.Text) ||StartsWith(公司,SearchInput.Text) ) 篩選 客戶 資料來源中,Name 欄位或 Company 資料來源欄位開頭為此搜尋字串 (例如,co) 的記錄。 若任一 || 函式為 true,則 運算子true Filter 客戶從。
Filter(客戶,名稱中的 SearchInput.Text ||SearchInput。公司中的文字) 篩選 客戶 資料來源中,Name 欄位或 Company 欄位內的任意處包含此搜尋字串 (例如,co) 的記錄。 Filter 客戶搜索輸入。
Search(客戶、SearchInput.Text、名稱、公司) 與使用 in 運算子類似,此 Search 函數會在 [客戶] 資料來源中搜尋 [名稱 ] 資料行或 [公司 ] 資料行包含搜尋字串 (例如 co) 的記錄。 與您想要指定多個資料行和多個 in 運算子相比,FilterSearch函式更容易讀取和寫入。 Search 具有搜尋輸入的客戶。