Funktionerne Filter, Search og LookUp

Gælder for: Lærredsapps Skrivebordsflows Modeldrevne apps Power Platform CLI

Finder en eller flere poster i en tabel.

Se denne video for at få mere at vide om, hvordan du bruger funktionerne Filter, Søg og Slå op:

Bemærk

PAC CLI pac power-fx-kommandoer understøtter ikke funktionen Søg.

Beskrivelse

Funktionen Filter finder de poster i en tabel, som opfylder en formel. Brug Filter til at finde et sæt poster, der matcher et eller flere kriterier og til at se bort fra dem, der ikke gør.

Funktionen LookUp finder den første post i en tabel, som opfylder en formel. Brug LookUp til at finde en enkelt post, der opfylder et eller flere kriterier.

For begge funktioner bliver formlen evalueret for hver post i tabellen. De poster, der resulterer i sand, medtages i resultatet. Ud over de almindelige operatorer kan du bruge operatorerne in og exactin til at matche delstrenge.

Felter i den post, der behandles i øjeblikket, er tilgængelige i formlen. Brug ThisRecord-operatoren, eller referer blot til feltet med navn, som du ville gøre med en vilkårlig anden værdi. As-operatoren kan også bruges til at navngive den post, der behandles, hvilket kan hjælpe med at gøre din formel mere forståelig og gøre indlejrede poster tilgængelige. Du kan få flere oplysninger i eksemplerne nedenfor og arbejdet med posternes omfang.

Funktionen Search finder de poster i en tabel, der indeholder en streng i en af kolonnerne. Strengen kan findes hvor som helst i kolonnen. En søgning efter "rob" eller "bert" vil f.eks. finde et match i en kolonne, der indeholder "Robert". Der skelnes ikke mellem store og små bogstaver i søgninger. Til forskel fra Filter og LookUp bruger funktionen Search en enkelt streng til matchningen i stedet for en formel.

Filter og Search returnerer en tabel, der indeholder de samme kolonner som den oprindelige tabel, samt de poster, der opfylder kriterierne. LookUp returnerer kun den første post, der blev fundet med formlen for at reducere posten til en enkelt værdi. Hvis der ikke findes nogen poster, vil Filter og Search returnere en empty tabel, og LookUp vil returnere tom.

Tables er en værdi i Power Apps, ligesom en streng eller et tal. De kan overføres til og returneres fra funktioner. Filter, Search og LookUp kan ikke bruges til at ændre en tabel. De bruger i stedet en tabel som argument og returnerer en tabel, en post eller en enkelt værdi fra tabellen. Se Arbejde med tabeller for at få flere oplysninger.

Delegering

Hvis det er muligt, uddelegerer Power Apps filtrerings- og sorteringshandlinger til datakilden og -siden via resultaterne efter behov. Når du f.eks. starter en app, som viser et Galleri-kontrolelement fyldt med data, hentes indledningsvist kun første sæt af poster til enheden. Når brugeren ruller, hentes yderligere data fra datakilden. Resultatet er en hurtigere opstartstid for appen og adgang til meget store datasæt.

Det er dog ikke altid muligt at foretage uddelegering. Datakilder varierer med hensyn til de funktioner og operatorer, de understøtter med uddelegering. Hvis en komplet uddelegering af en formel ikke er mulig, vil oprettelsesmiljøet markere den del, som ikke kan uddelegeres, med en advarsel. Hvis det er muligt, kan du overveje at ændre formlen for at undgå funktioner og operatorer, som ikke kan uddelegeres. Uddelegeringslisten viser, hvilke datakilder og handlinger som ikke kan uddelegeres.

Hvis uddelegering ikke er mulig, henter Power Apps kun et lille sæt af poster for at arbejde med dem lokalt. Filtrerings- og sorteringsfunktioner fungerer på et reduceret antal poster. Det, der er tilgængeligt i galleriet, er muligvis ikke hele historien, hvilket kan være forvirrende for brugerne.

Se uddelegeringsoversigten for at få flere oplysninger.

Syntaks

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

  • Table – påkrævet. Den tabel, der skal søges i.
  • Formler – påkrævet. Den formel, som hver post i tabellen evalueres for. Funktionen returnerer alle de poster, der giver resultatet sand. Du kan referere til kolonner i tabellen. Hvis du angiver mere end én formel, vil resultaterne for alle formlerne blive kombineret med funktionen And.

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

  • Table – påkrævet. Den tabel, der skal søges i.
  • SearchStreng – påkrævet. Den streng, der skal søges efter. Hvis tom eller en tom streng, returneres alle poster.
  • Column(s) – påkrævet. Navnene på de kolonner i Table, der skal søges efter. De kolonner, der søges i, skal indeholde tekst. Kolonnenavne skal være strenge og angivet i dobbelte anførselstegn. Kolonnenavnene skal dog være statiske og må ikke beregnes med en formel. Hvis SearchStreng bliver fundet i dataene i disse kolonner som et delvist match, bliver hele posten returneret.

Bemærk

For de SharePoint- og Excel-datakilder, der indeholder kolonnenavne med mellemrum, skal du angive hvert mellemrum som "_x0020_". Du skal f.eks. angive "Kolonnens navn" som "Kolonnens_x0020_navn".

Opslag(Tabel*, Formel [, *ReductionFormula* ] )

  • Table – påkrævet. Den tabel, der skal søges i. I brugergrænsefladen vises syntaksen som source over funktionsfeltet.
  • Formel – påkrævet. Den formel, som hver post i tabellen evalueres for. Funktionen returnerer den første post, der giver resultatet sand. Du kan referere til kolonner i tabellen. I brugergrænsefladen vises syntaksen som condition over funktionsfeltet.
  • ReductionFormula - valgfri. Denne formel evalueres for den post, der blev fundet, og den reducerer derefter posten til en enkelt værdi. Du kan referere til kolonner i tabellen. Hvis du ikke bruger denne parameter, returnerer funktionen hele posten fra tabellen. I brugergrænsefladen vises syntaksen som result over funktionsfeltet.

Eksempler

Følgende eksempler bruger IceCream-datakilden:

IceCream-datakilde.

Formel Beskrivelse Resultat
Filter( IceCream, OnOrder > 0 ) Returnerer de poster, hvor OnOrder er større end nul. Filtrer efter rækkefølge.
Filter( IceCream, Quantity + OnOrder > 225 ) Returnerer de poster, hvor summen af kolonnerne Quantity og OnOrder er større end 225. Filtrer efter antal og rækkefølge.
Filter( IceCream, "chocolate" in Lower( Flavor ) ) Returnerer de poster, hvor ordet "chocolate" findes i kolonnen Flavor, og der skelnes ikke mellem store og små bogstaver. Filter nederst.
Filter(IceCream, Quantity < 10 && OnOrder < 20) Returnerer de poster, hvor Quantity er mindre end 10 og OnOrder er mindre end 20. Der er ingen poster, der opfylder disse kriterier, så der returneres en tom tabel. Filtrer efter antal.
Search( IceCream, "choc", "Flavor" ) Returnerer de poster, hvor strengen "choc" findes i kolonnen Flavor, og der skelnes ikke mellem store og små bogstaver. Søgeelementer.
Search( IceCream, "", "Flavor" ) Da søgeudtrykket er tomt, returneres alle poster. Søg i alle elementer.
LookUp( IceCream, Flavor = "Chocolate", Quantity ) Søger efter en post, hvor Flavor er lig med "Chocolate", og det gælder for én post. For den første post, der findes, returneres Quantity for den post. 100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) Søger efter en post, hvor Quantity er større end 150, og dem er der flere af. Den første post, der bliver fundet, er "Vanilla", og summen af kolonnerne Quantity og OnOrder returneres. 250
LookUp( IceCream, Flavor = "Pistachio", OnOrder ) Søger efter en post, hvor Flavor er lig med "Pistachio". Dem er der ingen af. Da der ikke blev fundet nogen poster, vil funktionen Lookup returnere blank. blank
LookUp( IceCream, Flavor = "Vanilla" ) Søger efter en post, hvor Flavor er lig med "Vanilla", og det gælder for én post. Da der ikke var angivet en formel til yderligere reduktion, bliver hele posten returneret. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Filtrering med valgkolonner

I følgende eksempel bruges tabellen Konto i Microsoft Dataverse som datakilde. I dette eksempel vises, hvordan du kan filtrere listen over konti baseret på de valgte værdier for et kombinationsfelt:

Trin for trin

  1. Åbn en tom app.

  2. Tilføj et nyt skærmbillede ved at vælge indstillingen Ny skærm.

  3. Vælg Galleri på fanen Indsæt, og vælg derefter Lodret.

  4. Åbn fanen Egenskaber i ruden til højre, åbn Datakilde, og vælg derefter Konti.

  5. (Valgfrit) Vælg forskellige indstillinger på listen Layout.

  6. Vælg Input på fanen Indsæt, og vælg derefter Kombinationsfelt. Gentag trinnet for at tilføje yderligere to kontrolelementer af typen kombinationsfelt.

  7. For hvert kontrolelement af typen kombinationsfelt skal du åbne fanen Egenskaber i ruden til højre, åbne Datakilde og derefter vælge Konti. Vælg Rediger ud for indstillingen Felter, og vælg derefter værdierne Primær tekst og SearchField. Primær tekst skal være den kolonne med valgmuligheder, du vil føje til kombinationsfeltet. Gentag trinnet for yderligere to kontrolelementer af typen kombinationsfelt.

    Angivelse af værdier i kombinationsfelt.

  8. Nu skal du vælge kontrolelementet Gallery og angive egenskaben Items til følgende formel:

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

    Datakilde for konti.

Søg efter brugeroplevelse

Følgende eksempler bruger IceCream-datakilden:

I mange apps kan du skrive et eller flere tegn i søgefeltet for at filtrere en liste over poster i et stort datasæt. Når du skriver, vises kun de poster, der opfylder søgekriterierne.

Eksemplerne i resten af dette emne viser søgeresultaterne for en kundeliste med navnet Kunder, der indeholder følgende data:

Søg efter kunder.

Hvis du vil oprette denne datakilde som en samling, skal du oprette et Button-kontrolelement og angive dets OnSelect-egenskab til denne 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" }) )

Ligesom i dette eksempel kan du få vist en liste over poster i et Gallery-kontrolelement nederst i skærmbilledet. Næsten øverst i skærmbilledet kan du tilføje et Text input-kontrolelement, som hedder SearchInput, så brugerne kan angive, hvilke poster de er interesserede i.

Søg ved hjælp af søgeinput.

Når brugeren skriver tegn i SearchInput, filtreres resultaterne i galleriet automatisk. I dette tilfælde er galleriet konfigureret til at vise de poster, hvor kundenavnet (ikke navnet på virksomheden) starter med rækkefølgen af de tegn, der angives i SearchInput. Hvis brugeren skriver co i søgefeltet, vises følgende resultater i galleriet:

Søg ved hjælp af begynder med.

Hvis du vil filtrere på kolonnen Name, skal du indstille egenskaben Items for gallerikontrolelementet til en af disse formler:

Formel Beskrivelse Resultat
Filter( Customers, StartsWith( Name, SearchInput.Text ) ) Filtrerer Customers-datakilden, så de poster, hvor søgestrengen vises i starten af kolonnen Name, vises. Der skelnes ikke mellem store og små bogstaver i testen. Hvis brugeren skriver co i søgefeltet, vises Colleen Jones og Cole Miller i galleriet. Mike Collins vises ikke i galleriet, da kolonnen Name for den post ikke starter med søgestrengen. Filtrer ved hjælp af begynder med.
Filter( Customers, SearchInput.Text in Name ) Filtrerer datakilden Customers, så det er de poster, hvor søgestrengen vises hvor som helst i kolonnen Name, der vises. Der skelnes ikke mellem store og små bogstaver i testen. Hvis brugeren skriver co i søgefeltet, vises Colleen Jones,Cole Miller, og Mike Collins, fordi søgestrengen findes et sted i kolonnen Navn i alle de pågældende poster. Filtrer med søgeinput.
Search( Customers, SearchInput.Text, "Name" ) Funktionen Search søger efter et match hvor som helst i kolonnen Name for hver enkelt post. Det svarer til at bruge operatoren in. Du skal bruge dobbelte anførselstegn rundt om kolonnenavnet. Søg efter kunder.

Du kan udvide søgningen til at omfatte kolonnen Company og kolonnen Name:

Formel Beskrivelse Resultat
Filter(Customers, StartsWith(Name, SearchInput.Text) || StartsWith(Company, SearchInput.Text) ) Filtrerer datakilden Customers, så de poster, hvor kolonnen Name eller kolonnen Company starter med søgestrengen (f.eks. co), vises. ||-operatoren er sand, hvis en af funktionerne StartsWith er sand. Filtrer kunder, der begynder med.
Filter(Customers, SearchInput.Text in Name || SearchInput. Text in Company) Filtrerer datakilden Customers, så de poster, hvor kolonnen Name eller kolonnen Company indeholder søgestrengen (f.eks. co), vises. Filtrer kunder med søgeinput.
Search( Customers, SearchInput.Text, "Name", "Company" ) Funktionen Search søger i datakilden Customer efter de poster, hvor kolonnen Name eller Company indeholder søgestrengen (f.eks. co), vises. Det svarer til at bruge operatoren in. Funktionen Search er nemmere at læse og skrive end Filter, hvis du vil angive flere kolonner og flere operatorer af typen in. Du skal bruge dobbelte anførselstegn rundt om kolonnenavnene.  Søg efter kunder med søgeinput.