Funksjonene Filter, Search og LookUp

Gjelder: Lerretsapper Skrivebordsflyt Modelldrevne apper Power Platform CLI

Finner én eller flere poster i en tabell.

Se på denne videoen for å lære hvordan du bruker funksjonene Filter, **Search, and LookUp:

Merk

PAC CLI pac power-fx-kommandoer støtter ikke Search-funksjonen.

Description

Filter-funksjonen finner poster i en tabell som tilfredsstiller en formel. BrukFilter til å finne et sett med poster som samsvarer med ett eller flere vilkår, og forkast de som ikke gjør det.

Funksjonen LookUp finner den første posten i en tabell som tilfredsstiller formelen. Bruk LookUp til å finne enkeltposter som samsvarer med ett eller flere vilkår.

Formelen evalueres for hver post i tabellen, dette gjelder begge. Poster som resulterer i sann-uttrykk, er inkludert i resultatet. I tillegg til de normale operatorene for formelen kan du nå bruke operatorene in og exactin for delstrengtreff.

Feltene for oppføringen som blir behandlet er tilgjengelige i formelen. Bruk ThisRecord-operatoren eller bare referer til felt etter navn, på samme måte som andre verdier. As-operatoren kan også brukes til å gi navn til oppføringen som blir behandlet, noe som kan gjøre det enklere å forstå og ta i bruk nestede oppføringer. Hvis du vil ha mer informasjon, kan du se eksemplene nedenfor og arbeide med oppføringsomfang.

Funksjonen Search finner poster i en tabell som inneholder en streng i én av kolonnene. Strengen kan befinne seg hvor som helst i kolonnen: hvis du for eksempel søker etter «tor» eller «mod», finner funksjonen et treff i en kolonne som inneholder «Robert». Søkene skiller ikke mellom små og store bokstaver. I motsetning til Filter og LookUp så bruker funksjonen Search én enkelt streng for samsvar i stedet for en formel.

Filter og Search returnerer en tabell som inneholder de samme kolonnene som den opprinnelige tabellen, og postene som samsvarer med vilkårene. LookUp returnerer bare den første posten som blir funnet, etter å ha tatt i bruk en formel for å redusere posten til en enkeltverdi. Hvis ingen poster returneres, returnerer Filter og Search en tom tabell, og LookUp returnerer en tom post.

Tabeller er en verdi i Power Apps, akkurat som en streng eller et tall. De kan sendes til og returneres fra funksjoner. Filter, Search og LookUp endrer ikke en tabell. De tar i stedet en tabell som et argument og returnerer en tabell, en post, eller en enkeltverdi fra den. Hvis du vil ha mer informasjon, kan du se arbeide med tabeller.

Delegering

Når det er mulig, vil Power Apps delegere filtrerings- og sorteringoperasjoner til datakilden og siden gjennom resultatene ved behov. Når du for eksempel starter en app som viser en Galleri-kontroll fylt med data, blir bare det første settet med oppføringer overført til enheten til å begynne med. Når brukeren ruller, hentes flere data fra datakilden. Resultatet er raskere oppstartstid for appen og tilgang til et svært store datasett.

Det er imidlertid ikke alltid mulig å delegere. Datakilder varierer avhengig av hvilke funksjoner og operatorer de støtter med delegering. Hvis fullstendig delegering av en formel ikke er mulig, vil redigeringsmiljøet vise en advarsel for delen som ikke kan delegeres. Vurder å endre formelen når det er mulig, for å unngå funksjoner og operatorer som ikke kan delegeres. Delegeringslisten inneholder informasjon om hvilke datakilder og som kan delegeres.

Hvis det ikke er mulig å delegere, vil Power Apps bare hente et lite sett med oppføringer for å arbeide lokalt. Filtrerings- og sorteringsfunksjoner fungerer på et mindre sett med oppføringer. Det som er tilgjengelig i Galleri er kanskje ikke den fullstendige historikken, og dette kan være forvirrende for brukere.

Hvis du vil ha mer informasjon, kan du se delegeringsoversikten.

Syntaks

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

  • Table - obligatorisk. Tabell det skal søkes i.
  • Formula(s) - obligatorisk. Formelen der hver post i tabellen evalueres. Funksjonen returnerer alle postene som resulterer i sann-uttrykk. Du kan referere til kolonner i tabellen. Hvis du oppgir mer enn én formel, kombineres resultatene av alle formlene med funksjonen And.

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

  • Table - obligatorisk. Tabell det skal søkes i.
  • SearchString - obligatorisk. Strengen som du vil finne. Hvis strengen er tom, returneres alle postene.
  • Column(s) - obligatorisk. Navene på kolonnene som du søker etter, i Table. Hvis SearchString finnes blant dataene i noen av disse kolonnene som delvise treff, returneres den fullstendige posten.

Merk

I Power Apps før versjon 3.24042 ble kolonnenavn for Search-funksjonen angitt med en tekststreng med doble anførselstegn, og hvis de var koblet til et datakilde, måtte de også være logiske navn. Det logiske navnet cr43e_name med doble anførselstegn ble brukt i stedet for visningsnavn Navn uten anførselstegn. For SharePoint- og Excel-datakilder som inneholder kolonnenavn med mellomrom, ble hvert mellomrom angitt med "_x0020_", for eksempel "Kolonnenavn" som "Column_x0020_Name". Etter denne versjonen ble alle apper automatisk oppdatert til den nye syntaksen beskrevet i denne artikkelen.

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

  • Table - obligatorisk. Tabell det skal søkes i. Syntaksen vises som kilde i brukergrensesnittet, ovenfor funksjonsboksen.
  • Formula – obligatorisk. Formelen der hver post i tabellen evalueres. Funksjonen returnerer den første posten som resulterer i et sann-uttrykk. Du kan referere til kolonner i tabellen. Syntaksen vises som vilkår i brukergrensesnittet, ovenfor funksjonsboksen.
  • ReductionFormula - valgfritt. Denne formelen evalueres over posten som ble funnet, og reduserer deretter posten til en enkeltverdi. Du kan referere til kolonner i tabellen. Hvis du ikke bruker denne parameteren, returnerer funksjonen den fullstendige posten fra tabellen. Syntaksen vises som resultat i brukergrensesnittet, ovenfor funksjonsboksen.

Eksempler

Følgende eksempler bruker IceCream-datakilden:

Datakilde for iskrem.

Formel Bekrivelse Result
Filter( IceCream, OnOrder > 0 ) Returnerer poster der OnOrder er større enn null. Filtrer på ordre.
Filter( IceCream, Quantity + OnOrder > 225 ) Returnerer poster der summen av kolonnene Quantity og OnOrder er større enn 225. Filtrer antall og ordre.
Filter( IceCream, "chocolate" in Lower( Flavor ) ) Returnerer poster der ordet «chocolate» vises i Flavor-navnet, uavhengig av store og små bokstaver. Filtrer i nedre.
Filter(IceCream, Quantity < 10 && OnOrder < 20) Returnerer poster der Quantity er mindre enn 10 og OnOrder er mindre enn 20. Ingen poster samsvarer med disse vilkårene, derfor returneres det en tom tabell. Filtrer etter antall.
Search(IceCream, "choc", Flavor) Returnerer poster der strengen «choc» vises i Flavor-navnet, uavhengig av store og små bokstaver. Søkeelementer.
Search(IceCream, "", Flavor) Siden søkeordet er tomt, returneres alle postene. Søk i alle elementer.
LookUp( IceCream, Flavor = "Chocolate", Quantity ) Søker etter en post der Flavor er lik «Chocolate», men det finnes én. Quantity blir returnert fra den første posten som blir funnet. 100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) Søker etter en post der Quantity er større enn 150, og det finnes flere. Den første posten som blir funnet, der «Vanilla» er angitt for Flavor, returnerer summen av kolonnene Quantity og OnOrder. 250
LookUp( IceCream, Flavor = "Pistachio", OnOrder ) Søker etter en post der Flavor er lik «Pistachio», men det finnes ingen. Siden ingen ble funnet, returnerer Lookup et tomt resultat. tom
LookUp( IceCream, Flavor = "Vanilla" ) Søker etter en post der Flavor er lik «Vanilla», og det finnes én. Siden det ikke ble angitt en reduksjonsformel, returneres hele formelen. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Filtrere med valgkolonner

Eksemplet nedenfor bruker tabellen Forretningsforbindelse i Microsoft Dataverse som datakilde. Dette eksemplet viser hvordan du filtrerer listen over forretningsforbindelser basert på valgte Combo box-kontrollverdier:

Trinnvis

  1. Åpne en tom app.

  2. Legg til en ny skjerm ved å velge alternativet Ny skjerm.

  3. Velg GallerySett inn-fanen, og velg deretter Vertikal:

  4. Egenskaper-fanen i den høyre ruten åpner du Datakilde og velger deretter Forretningsforbindelse.

  5. (Valgfritt) Velg ulike alternativer i Oppsett-listen.

  6. Velg InndataSett inn-fanen, og velg deretter Combo box: Gjenta trinnet for å legge til ytterligere to combo box-kontroller.

  7. For hver kombinasjonskontroll går du til Egenskaper-fanen i den høyre ruten, åpner Datakilde og velger deretter Forretningsforbindelse. Velg Rediger ved siden av Felter-alternativet, og velg deretter primærtekst og SearchField-verdier. Hovedteksten må være valgkolonnen du vil legge til i kombinasjonsboksen. Gjenta trinnet for de to andre combo box-kontrollerne

    Angi kombinasjonsboksverdier.

  8. Nå velger du Gallery-kontrollen og angir Items-egenskapen til følgende 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'))
    

    Kontoer-datakilde.

Brukeropplevelse for søk

Følgende eksempler bruker IceCream-datakilden:

I mange apper kan du skrive ett eller flere tegn i en søkeboks for å filtrere en liste over poster i et stort datasett. Mens du skriver viser listen bare de postene som samsvarer med søkevilkårene.

Eksemplene i resten av denne artikkelen viser resultatene av å søke i en liste, som heter Kunder, som inneholder disse dataene:

Søk i kunder.

Hvis du vil opprette denne datakilden som en samling, oppretter du en Button-kontroll og angir egenskapen OnSelect til denne formelen:

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

Som du ser av dette eksemplet, kan du vise en liste over poster i en Gallery-kontroll nederst på skjermen. Nær toppen av skjermen kan du legge til en Text input-kontroll, som heter SearchInput, slik at brukerne kan angi hvilke poster de har interesse av.

Søk ved hjelp av søkeinndata.

Mens brukeren skriver tegn i SearchInput, filtreres resultatene i galleriet automatisk. I dette tilfellet er galleriet konfigurert til å vise poster der navnet på kunden (ikke navnet på firmaet) begynner med tegnsekvensen i SearchInput. Hvis brukeren skriver bj i søkeboksen, viser galleriet disse resultatene:

Søk på ord som begynner på.

Hvis du vil filtrere basert på kolonnen Name, angir du egenskapen Items for Galleri-kontrollen til én av disse formlene:

Formel Beskrivelse Resultat
Filter( Customers, StartsWith( Name, SearchInput.Text ) ) Filtrerer Kunder-datakilden for poster der søkestrengen vises i begynnelsen av Navn-kolonnen. Testen skiller ikke mellom små og store bokstaver. Hvis brukeren skriver bj i søkeboksen, viser galleriet Bjarne Høgdal og Bjørn Rosendal. Galleriet viser ikke Finn Andresen, fordi kolonnen Name for den posten begynner ikke med den søkestrengen. Filtrer med start på.
Filter( Customers, SearchInput.Text in Name ) Filtrerer Kunder-datakilden for poster der søkestrengen vises hvor som helst i Navn-kolonnen. Testen skiller ikke mellom små og store bokstaver. Hvis brukeren skriver jb i søkeboksen, viser galleriet Bjarne Høgdal,Bjørn Rosendal, og Bjarte Andresen, fordi søkestrengen finnes et sted Navn-kolonnen i alle postene. Filtrer med søkeinndata.
Search(Customers, SearchInput.Text, Name) Funksjonen Search ligner på operatoren in, og den søker etter et treff hvor som helst i Navn-kolonnen for hver post. Du må omslutte kolonnenavnet i doble anførselstegn. Søk i kunder.

Du kan utvide søket til å inkludere kolonnen Bedrift og kolonnen Navn:

Formel Beskrivelse Resultat
Filter(Customers, StartsWith(Name, SearchInput.Text) || StartsWith(Company, SearchInput.Text) ) Filtrerer datakilden Customers for posten der enten kolonnen Name eller Company begynner med søkestrengen (for eksempel bj). ||-operatoren er sann hvis begge funksjonene StartsWith er sann. Filtrer kunder med start på.
Filter(Customers, SearchInput.Text in Name || SearchInput. Text in Company) Filtrerer Kunder-datakilden for posten der enten Navn-kolonnen eller Bedrift-kolonnen inneholder søkestrengen (for eksempel bj). Filtrer kunder etter søkeinndata.
Search(Customers, SearchInput.Text, Name, Company) Funksjonen Search ligner på operatoren in, og den søker i datakilden Kunder etter posten der enten Navn-kolonnen eller Bedrift-kolonnen inneholder søkestrengen (for eksempel bj). Funksjonen Search er enklere å lese og skrive enn Filter hvis du ønsker å angi flere kolonner og operatorer som in.  Søk etter kunder med søkeinndata.