Funkce Filter, Search a LookUp
Platí pro: Aplikace plátna Desktopové toky Modelem řízené aplikace Power Pages Rozhraní příkazového řádku Power Platform
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:
Vzorec | Description | Result |
---|---|---|
Filter( IceCream; OnOrder > 0 ) | Vrátí záznamy, které mají ve sloupci OnOrder hodnotu větší než nula. | |
Filter( IceCream; Quantity + OnOrder > 225 ) | Vrátí záznamy, jejichž součet sloupců Quantity a OnOrder je větší než 225. | |
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. | |
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. | |
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. | |
Search(IceCream, "", Flavor) | Protože hledaný termín je prázdný, vrátí se všechny záznamy. | |
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
Otevřete prázdnou aplikaci.
Přidejte novou obrazovku výběrem možnosti Nová obrazovka.
Na kartě Vložit vyberte Galerii a poté vyberte Vertikální.
Na kartě Vlastnosti otevřete pravé podokno, otevřete Zdroj dat a poté vyberte Obchodní vztahy.
(Volitelně) V seznamu Rozložení vyberte různé možnosti.
Na kartě Vložit vyberte Vstup a poté vyberte Combo box. Opakujte krok a přidejte další dva ovládací prvky Combo box.
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.
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'))
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:
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í.
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:
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. | |
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. | |
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. |
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. | |
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). | |
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. |
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro