Funktionerna Filter, Search och LookUp

Gäller: Arbetsyteappar Datorflöden Modellbaserade appar Power Platform CLI

Hittar en eller flera poster i en tabell.

Titta på det här videoklippet och lär dig hur du använder funktionerna Filter, **Search och LookUp:

Kommentar

PAC CLI pac power-fx kommandona stöder inte Search-funktionen.

Beskrivning

Funktionen Filter söker efter poster i en tabell som uppfyller en formel. Använd Filter för att hitta postuppsättningar som matchar ett eller flera kriterier och ignorera poster som inte gör det.

Funktionen LookUp hittar den första posten i en tabell som uppfyller en formel. Använd LookUp för att hitta en enda post som matchar ett eller flera kriterier.

För båda två så utvärderas formeln för varje post i tabellen. Poster som resulterar i true inkluderas i resultatet. Förutom de normala formel-operators, kan du använda operatorerna in och exactin för matchningar i understrängar.

Fälten för den post som bearbetas för närvarande är tillgängliga i formeln. Använd ThisRecord-operatorn eller referera bara till fälten med namn på samma sätt som med andra värden. As-operatorn kan också användas för att namnge posten som bearbetas, vilket kan göra att formeln blir lättare att förstå och göra kapslade poster tillgängliga. Mer information finns i exemplen nedan och i arbeta med postomfattning.

Funktionen Search hittar poster i en tabell som innehåller en sträng i en av sina kolumner. Strängen kan finnas vart som helst inom kolumnen. Om du till exempel söker efter ”rob” eller ”bert” så skulle du få matchningar i en kolumn som innehåller ”Robert”. Sökningen är skiftlägeskänslig. Till skillnad från Filter och LookUp så använder sig Search-funktionen av en enkel sträng för att matcha istället för en formel.

Filter och Search returnerar en tabell som innehåller samma kolumner som den ursprungliga tabellen och de poster som matchar kriteriet. LookUp returnerar bara den första posten som hittas, efter att ha tillämpat en formel för att minska posten till ett enda värde. Om inga poster hittas så returnerar Filter och Search en blank tabell och LookUp returnerar blank.

Tables är ett värde i Power Apps, precis som en sträng eller ett tal. De kan skickas till och returneras från funktioner. Filter, Search, och LookUp ändrar inte en tabell. De tar istället en tabell som ett argument och returnerar en tabell, en post eller ett enda värde från den. Mer information finns i Arbeta med tabeller.

Delegering

När det är möjligt delegerar Power Apps filtrerings- och sorteringsåtgärder till datakällan och bläddrar igenom resultatet på begäran. Om du till exempel startar ett program som visar en Galleri-kontroll fylld med data kommer bara den första uppsättningen med poster att flyttas till enheten till att börja med. När användaren bläddrar flyttas ytterligare data ned från datakällan. Resultatet blir en snabbare starttid för programmet och åtkomst till mycket stora datauppsättningar.

Delegering är dock inte alltid möjlig. Datakällor stöder olika funktioner och operatorer med delegering. Om en fullständig delegering av en formel inte är möjligt flaggar redigeringsmiljön den del som inte kan delegeras med en varning. När det är möjligt bör du överväga att ändra formeln för att undvika funktioner och operatorer som inte kan delegeras. I delegeringslistan anges vilka datakällor och åtgärder som kan delegeras.

Om delegering inte är möjligt hämtar Power Apps bara en liten uppsättning med poster att arbeta med lokalt. Filtrerings- och sorteringsfunktionerna används på en reducerad uppsättning med poster. Det som är tillgängligt i Galleri kanske inte är en fullständig överblick, vilket kan vara förvirrande för användarna.

Mer information finns i översikt över delegering.

Syntax

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

  • Table – krävs. Tabell som ska genomsökas.
  • Formula(s) – obligatoriskt. Formeln utvärderas för varje post i tabellen. Funktionen returnerar alla poster som ger värdet true. Du kan referera till kolumner i tabellen. Om du anger mer än en formel, kombineras resultaten från alla formlerna med And-funktionen.

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

  • Table – krävs. Tabell som ska genomsökas.
  • SearchString – obligatoriskt. Strängen att söka efter. Om blank eller en tom sträng så returneras alla poster.
  • Column(s) – obligatoriskt. Namnen på de kolumner i Table som ska genomsökas. Om SearchString hittas som partiell matchning i någon av kolumnernas data returneras den fullständiga posten.

Kommentar

I Power Apps före version 3.24042, angav kolumnnamn för sökfunktionen specificerades med en textsträng med dubbla citattecken och om de var anslutna till en datakälla behövde de också vara logiska namn. Det logiska namnet "cr43e_name" med dubbla citattecken användes till exempel i stället för visningsnamnet Namn utan citattecken. För SharePoint och Excel-datakällor som innehåller kolumnnamn med blanksteg angavs varje blanksteg med "_x0020_", till exempel "Kolumnnamn" som "Column_x0020_Name". Av den här versionen uppdaterades alla appar automatiskt till den nya syntax som beskrivs i den här artikeln.

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

  • Table – krävs. Tabell som ska genomsökas. I användargränssnittet visas syntaxen som källa ovanför funktionsrutan.
  • Formula – obligatoriskt. Formeln utvärderas för varje post i tabellen. Funktionen returnerar den första posten med värdet true. Du kan referera till kolumner i tabellen. I användargränssnittet visas syntaxen som villkor ovanför funktionsrutan.
  • ReductionFormula – valfritt. Den här formeln utvärderas för posten som hittades, vilket minskar posten till ett enda värde. Du kan referera till kolumner i tabellen. Om den här parametern inte anges returnerar funktionen den fullständiga posten från tabellen. I användargränssnittet visas syntaxen som resultat ovanför funktionsrutan.

Exempel

I följande exempel används IceCream datakällan:

Datakällan Ice Cream.

Formel Beskrivning Resultat
Filter( IceCream, OnOrder > 0 ) Returnerar poster där OnOrder är större än noll. Filtrera på order.
Filter( IceCream, Quantity + OnOrder > 225 ) Returnerar poster där summan av kolumnerna Quantity och OnOrder är större än 225. Filtrera på kvantitet och order.
Filter( IceCream, "chocolate" in Lower( Flavor ) ) Returnerar poster där ordet "chocolate" visas för namnet Flavor, oavsett skiftläge för bokstäverna. Filtrera i nedre.
Filter(IceCream, Quantity < 10 && OnOrder < 20) Returnerar poster där Quantity är mindre än 10 och OnOrder är mindre än 20. Inga poster matchar dessa villkor så en tom tabell returneras. Filtrera per kvantitet.
Search(IceCream, "choc", Flavor) Returnerar poster där strängen ”choc” finns i namnet Flavor, oavsett skiftläge för bokstäverna. Sök efter objekt.
Search(IceCream, "", Flavor) Eftersom söktermen är tom, returneras alla poster. Sök alla objekt.
LookUp( IceCream, Flavor = "Chocolate", Quantity ) Söker efter en post där Flavor är lika med "Chocolate", vilket det finns en av. Den första posten som hittas, returnerar Quantity för den posten. 100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) Söker efter en post där Quantity är större än 150, vilket det finns flera av. För den första posten som hittas, vilket är "Vanilla" Flavor, returneras summan av kolumnerna Quantity och OnOrder. 250
LookUp( IceCream, Flavor = "Pistachio", OnOrder ) Söker efter en post där Flavor är lika med "Pistachio", vilket det inte finns någon av. Eftersom ingen hittades, returnerar Uppslagtom. blank
LookUp( IceCream, Flavor = "Vanilla" ) Söker efter en post där Flavor är lika med "Vanilla", vilket det finns en av. Eftersom ingen reduktionsformel har angetts så returneras hela posten. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Filtrera med alternativkolumner

I följande exempel används tabellen Konto i Microsoft Dataverse som datakälla. Det här exemplet visar hur du Filter lista över konton utifrån de markerade kontrollvärdena i kombinationsrutan:

Steg-för-steg

  1. Öppna en tom app.

  2. Lägg till en ny skärm genom att välja alternativet För ny skärm.

  3. Välj Kontroller på fliken Galleri och välj sedan Vertikal.

  4. Öppna fliken Egenskaper i rutan till höger, öppna Datakälla och välj Konton.

  5. (Valfritt) Välj alternativ Layout välj olika alternativ.

  6. Välj Kontroller på fliken Indata och välj sedan Kombinationsruta. Upprepa steget om du vill lägga till ytterligare två kombinationsrutans kontroller.

  7. För kombinationsrutans kontroller fliken Egenskaper i rutan till höger, öppna Datakälla och välj Konton. Välj alternativet Redigera bredvid Fält och välj sedan värden för Primär text och SearchField. Den Primära text ska vara valkolumnen du vill lägga till i kombinationsrutan. Upprepa steget för andra två kombinationsrutans kontroller.

    Ange värden i kombinationsrutor.

  8. Välj kontrollen Gallery och ange egenskapen Items till följande formel:

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

    Datakällans konton.

Användarupplevelsen för sökning

I följande exempel används IceCream datakällan:

I många program kan du skriva ett eller flera tecken i en sökruta för att filtrera en lista med poster i en stor datauppsättning. När du skriver visar listan endast de poster som matchar sökvillkoren.

Exemplen i resten av den här artikeln visar resultaten från sökning av en lista som heter Kunder och innehåller dessa data:

Sök efter kunder.

Om du vill skapa den här datakällan som en samling skapar du först en Button-kontroll och ställer in dess egenskap OnSelect på följande formel:

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" }) )

Precis som i det här exemplet kan du visa en lista med poster i en gallerikontroll längst ned på skärmen. Nära toppen på skärmen kan du lägga till en Text Input-kontroll som heter SearchInput så att användarna kan ange vilka poster som intresserar dem.

Söka med sökindata.

När användaren skriver tecken i SearchInput, filtreras resultaten i galleriet automatiskt. I det här fallet har galleriet konfigurerats för att visa poster där kundens namn (inte namnet på företaget) börjar med teckenföljden i SearchInput. Om du skriver co i sökrutan visar galleriet följande resultat:

Sökningen med startar med.

Om du vill filtrera efter kolumnen Name ställer du in gallerikontrollens egenskap Items på någon av följande formler:

Formel Beskrivning Resultat
Filter(Customers, StartsWith(Name, SearchInput.Text)) Filtrerar datakällan Customers efter poster där söksträngen visas i början av Name-kolumnen. Testet är skiftlägesokänsligt. Om användaren skriver co i sökrutan, visar galleriet Colleen Jones och Cole Miller. Galleriet visar inte Mike Collins eftersom Name-kolumnen för den posten inte börjar med söksträngen. Filtrera med starta med.
Filter(Customers, SearchInput.Text in Name) Filtrerar datakällan Customers för poster där söksträngen visas någonstans i kolumnen Name. Testet är skiftlägesokänsligt. Om användaren skriver co i sökrutan, visar galleriet Colleen Jones,Cole Miller, och Mike Collins eftersom söksträngen finns någonstans i kolumnen Namn för alla dessa poster. Filtrera med sökinmatning.
Search(Customers, SearchInput.Text, Name) Ungefär som att använda operatorn in, så söker funktionen Search efter en matchning var som helst inom kolumnen Name för varje post. Du måste skriva kolumnnamnet med dubbla citattecken. Sök efter kunder.

Du kan utöka din sökning att inkludera Company-kolumnen utöver Name-kolumnen:

Formel Beskrivning Resultat
Filter(Customers, StartsWith(Name, SearchInput.Text) || StartsWith(Company, SearchInput.Text) ) Filtrerar datakällan Customers för poster där antingen Name-kolumnen eller Company-kolumnen börjar med söksträngen (t.ex. co). Operatorn || operatorn är true om någon av StartsWith-funktionerna är true. Filtrera kunder starta med.
Filter(Customers, SearchInput.Text in Name || SearchInput. Text in Company) Filtrerar datakällan Customers för poster där antingen Name-kolumnen eller Company-kolumnen innehåller söksträngen (t.ex. co) var som helst inom sig. Filtrera kunder sökinmatning.
Search(Customers, SearchInput.Text, Name, Company) Ungefär som att använda in-operatorn så söker Search-funktionen igenom datakällan Customers för poster där antingen Name-kolumnen eller Company-kolumnen innehåller söksträngen (t.ex. co) var som helst inom sig. Search-funktionen är lättare att läsa och skriva än Filter om du vill ange flera kolumner och flera in-operatorer.  Söka efter kunder med sökinmatning.