Funkce Filter, Search a LookUp

Platí pro: aplikace plátna desktopové toky modelem řízené aplikace Power Platform CLI

Slouží k vyhledání jednoho nebo více záznamů v tabulce.

Podívejte se na toto video a zjistěte, jak používat funkce Filter, **Search a LookUp:

Poznámka:

Příkazy PAC CLI pac power-fx nepodporují funkci Search.

Description

Funkce Filter vyhledá záznamy v tabulce, které vyhovují vzorci. Funkce Filter slouží k vyhledání sady záznamů, které odpovídají jednomu nebo více kritériím, a k zahození těch, které kritéria nesplňují.

Funkce LookUp vyhledá první záznam v tabulce, který vyhovuje vzorci. Funkci LookUp použijte k vyhledání jednoho záznamu, který splňuje jedno nebo více kritérií.

U obou funkcí se vzorec vyhodnocuje pro každý záznam tabulky. Do výsledku se zahrnou záznamy, jejichž výsledkem je hodnota true. Kromě běžných operátorů vzorce můžete použít operátory in a exactin a vyhledat shody podřetězců.

Aktuálně zpracovávaná pole záznamu jsou dostupná v rámci vzorce. Použijte operátor ThisRecord nebo jednoduše odkazujte na pole podle jména, jako byste měli jakoukoli jinou hodnotu. Operátor As lze také použít k pojmenování zpracovávaného záznamu, což může usnadnit pochopení vzorce a zpřístupnit vnořené záznamy. Další informace uvádějí následující příklady a práce s rozsahem záznamu.

Funkce Search vyhledá záznamy v tabulce, která obsahuje řetězec v jednom ze svých sloupců. Řetězec se může nacházet kdekoli ve sloupci – například hledání řetězce „rob“ nebo „bert“ najde shodu ve sloupci, který obsahuje řetězec „Robert“. Při hledání se nerozlišují malá a velká písmena. Na rozdíl od funkcí Filter a LookUp funkce Search používá k vyhledání shody jeden řetězec místo vzorce.

Funkce Filter a Search vrátí tabulku, která obsahuje stejné sloupce jako původní tabulka, a záznamy odpovídající zadaným kritériím. LookUp použije vzorec k omezení záznamu na jednu hodnotu a vrátí jenom první nalezený záznam. Pokud se nenajdou žádné záznamy, funkce Filter a Search vrátí prázdnou tabulku a funkce LookUp vrátí prázdnou hodnotu.

Tabulky jsou v Power Apps hodnotou, stejně jako třeba řetězec nebo číslo. Můžou se předávat funkcím a funkce je můžou vracet. Funkce Filter, Search a LookUp tabulku nezmění. Místo toho vezmou tabulku jako argument a vrátí tabulku, záznam nebo jednu hodnotu z ní. Další podrobnosti najdete v části týkající se práce s tabulkami.

Delegování

Pokud to je možné, budou Power Apps delegovat operace filtrování a řazení do zdroje dat a na stránku prostřednictvím výsledků na vyžádání. Když například spustíte aplikaci, která obsahuje ovládací prvek Galerie s daty, bude do zařízení na počátku přenesena pouze první sada záznamů. Při procházení zdroj dat poskytuje další data. Výsledkem je rychlejší doba spouštění aplikace a přístup k velmi velkým sadám dat.

Delegování však nemusí být vždy možné. Zdroje dat se liší podle funkcí a operátorů, které při delegování podporují. Pokud není úplné delegování vzorce možné, označí autorské prostředí část, kterou nelze delegovat, varováním. Pokud to je možné, zvažte změnu vzorce tak, aby neobsahoval funkce a operátory, které nelze delegovat. Seznam delegování podrobně uvádí, které zdroje dat a operace lze delegovat.

Pokud delegování není možné Power Apps stáhne pouze malou sadu záznamů pro místní práci. Funkce filtrování a řazení budou fungovat pouze u redukované sady záznamů. Co je dostupné v Galerii nemusí být kompletní, což by mohlo být pro uživatele matoucí.

Další informace viz přehled delegování.

Syntaxe

Filter(Table*, Formula1 [, *Formula2*, ... ] )

  • Tabulka – povinné. Tabulka, ve které se má vyhledávat
  • Vzorec – povinné. Vzorec, podle kterého se vyhodnocuje každý záznam tabulky. Funkce vrátí všechny záznamy, jejichž výsledkem je hodnota true. Na sloupce v tabulce můžete odkazovat. Pokud zadáte více vzorců, zkombinují se výsledky všech vzorců pomocí funkce And.

Search(Table*, SearchString, Column1 [, *Column2*, ... ] )

  • Tabulka – povinné. Tabulka, ve které se má vyhledávat
  • SearchString – povinné. Řetězec, který se má vyhledat. Pokud řetězec nezadáte nebo zadáte prázdný řetězec, vrátí se všechny záznamy.
  • Column(s) – povinné. Názvy sloupců v Tabulce, ve kterých se má hledat. Pokud se v datech kteréhokoli sloupce najde Hledaný_řetězec jako částečná shoda, vrátí se celý záznam.

Poznámka:

V Power Apps před verzí 3.24042 byly názvy sloupců pro funkci Hledat zadány pomocí textového řetězce pomocí dvojitých uvozovek, a pokud byly připojeny ke zdroji dat, také musely mít logické názvy. Například místo zobrazovaného názvu Název bez uvozovek byl použit logický název "cr43e_name" s dvojitými uvozovkami. U zdrojů dat SharePoint a Excel, které obsahují názvy sloupců s mezerami, byla každá mezera specifikována pomocí "_x0020_", například "Název sloupce" jako "Název_x0020_sloupce". Po této verzi byly všechny aplikace automaticky aktualizovány na novou syntaxi popsanou v tomto článku.

LookUp(Table*, Formula [, *ReductionFormula* ] )

  • Tabulka – povinné. Tabulka, ve které se má vyhledávat V uživatelském rozhraní se syntaxe zobrazí jako zdroj nad polem funkce.
  • Vzorec – povinné. Vzorec, podle kterého se vyhodnocuje každý záznam tabulky. Funkce vrátí první záznam, jehož výsledkem je true. Na sloupce v tabulce můžete odkazovat. V uživatelském rozhraní se syntaxe zobrazí jako podmínka nad polem funkce.
  • ReductionFormula – volitelné. Tento vzorec se vyhodnotí nad nalezeným záznamem a potom redukuje záznam na jedinou hodnotu. Na sloupce v tabulce můžete odkazovat. Pokud tento parametr nepoužijete, funkce vrátí celý záznam z tabulky. V uživatelském rozhraní se syntaxe zobrazí jako výsledek nad polem funkce.

Příklady

Následující příklady používají zdroj datIceCream:

Zdroj dat Ice Cream.

Vzorec Description Result
Filter( IceCream; OnOrder > 0 ) Vrátí záznamy, které mají ve sloupci OnOrder hodnotu větší než nula. Filtrování podle pořadí.
Filter( IceCream; Quantity + OnOrder > 225 ) Vrátí záznamy, jejichž součet sloupců Quantity a OnOrder je větší než 225. Filtrování podle množství a pořadí.
Filter( IceCream; "chocolate" in Lower( Flavor ) ) Vrátí záznamy, které ve sloupci Flavor obsahují „chocolate“ bez ohledu na to, jestli je tento řetězec uveden velkými nebo malými písmeny. Filtrování bez ohledu na velikost písmen.
Filter(IceCream, Quantity < 10 && OnOrder < 20) Vrátí záznamy, jejichž hodnota ve sloupci Quantity je menší než 10 a hodnota ve sloupci OnOrder je menší než 20. Těmto kritériím nevyhovují žádné záznamy, a proto se vrátí prázdná tabulka. Filtrování podle množství.
Search(IceCream, "choc", Flavor) Vrátí záznamy, které mají ve sloupci Flavor „choc“ bez ohledu na to, jestli je tento řetězec uveden velkými nebo malými písmeny. Hledání položek.
Search(IceCream, "", Flavor) Protože hledaný termín je prázdný, vrátí se všechny záznamy. Hledání všech položek.
LookUp( IceCream; Flavor = "Chocolate"; Quantity ) Vyhledá záznam, který má ve sloupci Flavor řetězec Chocolate – v našem případě vyhledá jeden záznam. Pro první nalezený záznam vrátí hodnotu ve sloupci Quantity daného záznamu. 100
LookUp( IceCream; Quantity > 150; Quantity + OnOrder ) Vyhledá záznam, který má ve sloupci Quantity hodnotu větší než 150 – v našem případě se jedná o více záznamů. Pro první nalezený záznam, což je řetězec Vanilla ve sloupci Flavor, vrátí součet hodnot ve sloupcích Quantity a OnOrder. 250
LookUp( IceCream; Flavor = "Pistachio"; OnOrder ) Vyhledá záznam, který ve sloupci Flavor obsahuje řetězec Pistachio – v tomto případě žádný takový záznam neexistuje. Protože se nenašly žádné záznamy, funkce Lookup vrátí prázdnou hodnotu. prázdný
LookUp( IceCream; Flavor = "Vanilla" ) Vyhledá záznam, který má ve sloupci Flavor uvedeno Vanilla – v tomto případě se vyhledá jeden záznam. Protože nebyl zadán žádný redukční vzorec, vrátí se celý záznam. { Flavor: "Vanilla"; Quantity: 200; OnOrder: 75 }

Filtrování se sloupci s volbami

Následující příklad používá tabulku Obchodní vztah v Microsoft Dataverse jako zdroj dat. Tento příklad ukazuje, jak filtrovat seznam obchodních vztahů na základě vybraných hodnot ovládacího prvku Combo box:

Podrobný postup

  1. Otevřete prázdnou aplikaci.

  2. Přidejte novou obrazovku výběrem možnosti Nová obrazovka.

  3. Na kartě Vložit vyberte Galerii a poté vyberte Vertikální.

  4. Na kartě Vlastnosti otevřete pravé podokno, otevřete Zdroj dat a poté vyberte Obchodní vztahy.

  5. (Volitelně) V seznamu Rozložení vyberte různé možnosti.

  6. Na kartě Vložit vyberte Vstup a poté vyberte Combo box. Opakujte krok a přidejte další dva ovládací prvky Combo box.

  7. Pro každý ovládací prvek Combo box na kartě Vlastnosti otevřete pravé podokno, otevřete Zdroj dat a poté vyberte Obchodní vztahy. Vyberte Upravit vedle možnosti Pole a poté vyberte hodnoty Primární text a SearchField. Primární text by měl být sloupec s volbami, který chcete přidat do pole se seznamem. Opakujte krok pro ostatní dva ovládací prvky Combo box.

    Nastavení hodnot pole se seznamem.

  8. Nyní vyberte ovládací prvek Gallery a nastavte vlastnost Items na následující vzorec:

    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'))
    

    Zdroj dat obchodních vztahů.

Vyhledávání v uživatelském prostředí

Následující příklady používají zdroj datIceCream:

V mnoha aplikacích můžete do vyhledávacího pole zadat jeden nebo více znaků a vyfiltrovat si tak z velké sady dat seznam záznamů. Při psaní seznam průběžně zobrazuje jenom záznamy, které odpovídají kritériím hledání.

Příklady ve zbývající části tohoto článku zobrazují výsledky hledání v seznamu s názvem Zákazníci, který obsahuje tato data:

Hledání podle zákazníků.

Pokud chcete vytvořit tento zdroj dat jako kolekci, vytvořte ovládací prvek Button a jeho vlastnost OnSelect nastavte na tento vzorec:

ClearCollect(Customers, Table({ Name: "Fred Garcia", Company: "Northwind Traders" }, { Name: "Cole Miller", Company: "Contoso" }, { Name: "Glenda Johnson", Company: "Contoso" }, { Name: "Mike Collins", Company: "Adventure Works" }, { Name: "Colleen Jones", Company: "Adventure Works" }) )

Stejně jako v tomto příkladu můžete seznam záznamů zobrazit v ovládacím prvku Gallery dole na obrazovce. Do horní části obrazovky můžete přidat ovládací prvek Text input s názvem SearchInput, aby si uživatelé mohli zobrazit jenom záznamy, které je zajímají.

Hledání pomocí vstupu pro hledání.

Při psaní znaků do pole SearchInput se výsledky v galerii automaticky filtrují. V tomto případě je galerie nakonfigurovaná tak, aby se zobrazovaly záznamy, u nichž jméno zákazníka (nikoli název společnosti) začíná sekvencí znaků zadanou do pole SearchInput. Pokud uživatel do pole hledání zadá co, galerie zobrazí tyto výsledky:

Hledání podle části zadaného textu.

Pokud chcete filtrovat podle sloupce Name, nastavte vlastnost Items ovládacího prvku galerie na jeden z těchto vzorců:

Vzorec Popis Výsledek
Filter( Customers; StartsWith( Name; SearchInput.Text ) ) Ze zdroje dat Customers vyfiltruje záznamy, ve kterých se hledaný řetězec ve sloupci Name vyskytuje na začátku. V testu se nerozlišují malá a velká písmena. Pokud uživatel do pole hledání zadá co, galerie zobrazí Colleen Jones a Cole Miller. Galerie nezobrazí řetězec Mike Collins, protože sloupec Name pro daný záznam nezačíná hledaným řetězcem. Filtrování podle části zadaného textu.
Filter( Customers; SearchInput.Text in Name ) Ze zdroje dat Customers vyfiltruje záznamy, v nichž se hledaný řetězec zobrazuje kdekoli ve sloupci Name. V testu se nerozlišují malá a velká písmena. Pokud uživatel do vyhledávacího pole zadá co, galerie zobrazí Colleen Jones,Cole Miller a Mike Collins, protože u všech těchto záznamů se hledaný řetězec nachází někde ve sloupci Name. Filtrování podle vstupu pro vyhledávání.
Search(Customers, SearchInput.Text, Name) Podobně jako operátor in i funkce Search hledá pro každý záznam shodu kdekoli ve sloupci Name. Název sloupce musíte uzavřít do dvojitých uvozovek. Hledat zákazníky.

Hledání můžete rozšířit tak, aby se zahrnul sloupec Company a sloupec Name:

Vzorec Popis Výsledek
Filter(Customers, StartsWith(Name, SearchInput.Text) || StartsWith(Company, SearchInput.Text) ) Ze zdroje dat Customers vyfiltruje záznamy, u kterých sloupec Name nebo sloupec Company začíná hledaným řetězcem (například co). Operátor || je true, pokud je true i některá z funkcí StartsWith. Filtrování zákazníků podle části zadaného textu.
Filter(Customers, SearchInput.Text in Name || SearchInput. Text in Company) Ze zdroje dat Customers vyfiltruje záznamy, u kterých se někde ve sloupci Name nebo Company vyskytuje hledaný řetězec (například co). Filtrování zákazníků podle vstupu pro vyhledávání.
Search(Customers, SearchInput.Text, Name, Company) Podobně jako u operátoru in i funkce Search vyhledá ve zdroji dat Customers záznamy, u kterých se někde se ve sloupci Name nebo Company vyskytuje hledaný řetězec (například co). V případě, že chcete zadat více sloupců a více operátorů in, funkce Search se oproti funkci Filter snadněji čte i píše. Hledání zákazníků pomocí vstupů pro vyhledávání.