Hittar en eller flera poster i en tabell.

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 alla andra.

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-operatorerna, kan du använda operatorerna in och exactin för matchningar i understrängar.

Fält i en aktuella posten är tillgängliga i formeln. Du bara referera till dem med deras namn, precis som ett annat värde. Du kan också referera till kontrollegenskaper och andra värden i hela din app. Mer information finns i exemplen nedan och arbeta med postomfång.

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 tom tabell och LookUp returnerar tom.

Tables är ett värde i PowerApps, precis som en sträng eller en siffra. 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 så är möjligt, delegerar PowerApps filter och sortering till datakällan och bläddrar igenom resultaten på begäran. När du till exempel startar en app som visar en gallerikontroll fylld med data, kommer bara den första uppsättningen poster inledningsvis att föras till enheten. När användaren rullar sidan hämtas ytterligare data ned från datakällan. Resultatet är snabbare starttid för appen och åtkomst till mycket stora datauppsättningar.

Dock är det kanske inte alltid möjligt att delegera. Datakällor varierar i förhållande till vilka funktioner och operatörer som de stödjer med delegering. Om fullständig delegering av en formel inte är möjligt, kommer utvecklingsmiljön att flagga den del som inte kan delegeras med en varning. Om möjligt bör du överväga att ändra formeln för att undvika funktioner och operatörer som inte kan delegeras. I delegeringslistan redovisas vilka datakällor och åtgärder som kan delegeras.

Om delegering inte är möjligt, drar PowerApps endast ned en liten uppsättning poster som den arbetar på lokalt. Filtrerings- och sorteringsfunktioner fungerar på en reducerad uppsättning poster. Det som är tillgängligt i galleriet kanske inte är hela uppsättningen, vilket kan vara förvirrande för användarna.

Mer information finns i Översikt över delegering.

Syntax

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

  • Table – obligatoriskt. 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 sant. 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 – obligatoriskt. Tabell som ska genomsökas.
  • SearchString – obligatoriskt. Strängen att söka efter. Om tom eller en tom sträng så returneras alla poster.
  • Column(s) – obligatoriskt. Namnen på de kolumner i Table som ska genomsökas. De kolumner som ska genomsökas måste innehålla text. Kolumnnamnen måste vara strängar och omges av dubbla citattecken. Men kolumnnamnen måste vara statiska och kan inte beräknas med en formel. Om SearchString hittas som partiell matchning i någon av kolumnernas data returneras den fullständiga posten.

Obs! För SharePoint- och Excel-datakällor som innehåller kolumnnamn med blanksteg, anges varje utrymme som ”_x0020_”. Ange till exempel "Kolumnens namn" som "Kolumnens_x0020_namn".

LookUp(Table, Formula [, ReductionFormula])

  • Table – obligatoriskt. 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 sant. 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 datakällan IceCream:

Formel Beskrivning Resultat
Filter(IceCream, OnOrder > 0) Returnerar poster där OnOrder är större än noll.
Filter(IceCream, Quantity + OnOrder > 225) Returnerar poster där summan av kolumnerna Quantity och OnOrder är större än 225.
Filter(IceCream, "chocolate" in Lower(Flavor)) Returnerar poster där ordet "chocolate" visas för namnet Flavor, oavsett skiftläge för bokstäverna.
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.
Search(IceCream, "choc", "Flavor") Returnerar poster där strängen ”choc” finns i namnet Flavor, oavsett skiftläge för bokstäverna.
Search(IceCream, "", "Flavor") Eftersom söktermen är tom, returneras alla poster.
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 100, 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 Lookup blank. 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}

Användarupplevelsen för sökning

I många appar 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 det här avsnittet visar resultaten från sökning av en lista som heter Customers och innehåller dessa data:

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 textinmatningskontroll som heter SearchInput så att användarna kan ange vilka poster som intresserar dem.

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:

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.
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 Name för alla dessa poster.
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. Observera att du måste skriva kolumnnamnet med dubbla citattecken.

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 || är true om någon av StartsWith-funktionerna är true.
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.
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. Observera att du måste skriva kolumnnamnen med dubbla citattecken.