De functies Filter, Search en LookUp

Van toepassing op: Canvas-apps Bureaubladstromen Modelgestuurde apps Power Platform CLI

Zoekt een of meer records in een tabel.

Bekijk deze video om te zien hoe u de functies Filter, **Search en LookUp kunt gebruiken:

Notitie

PAC CLI pac power-fx-opdrachten ondersteunen de functie Zoeken niet.

Omschrijving

De functie Filter zoekt records in een tabel die aan een formule voldoen. Gebruik Filter om een reeks records te vinden die aan een of meer criteria voldoen en de records te verwijderen die dat niet doen.

De functie LookUp vindt de eerste record in een tabel die aan een formule voldoet. Gebruik LookUp om één record te vinden die met een of meer criteria overeenkomt.

De formule wordt in beide gevallen geëvalueerd voor elke record in de tabel. Records die resulteren in true worden in het resultaat opgenomen. Naast de normale operators van de formule kunt u de operators in en exactin gebruiken voor overeenkomsten in subtekenreeksen.

Velden van de momenteel verwerkte record zijn beschikbaar in de formule. Gebruik de operator ThisRecord of verwijs gewoon met de naam naar velden, zoals u dat ook bij andere waarden zou doen. De operator As kan ook worden gebruikt om een naam te geven aan de record die wordt verwerkt, wat kan helpen uw formule begrijpelijker te maken en geneste records toegankelijk te maken. Meer informatie vindt u in de voorbeelden hieronder en in werken met recordbereik.

De functie Search zoekt records in een tabel met een tekenreeks in een van de kolommen. De tekenreeks kan op een willekeurige plaats in de kolom voorkomen. Zoeken naar 'rob' of 'bert' levert bijvoorbeeld een overeenkomst op in een kolom die 'Robert' bevat. Zoeken is niet hoofdlettergevoelig. De functie Search gebruikt, in tegenstelling tot Filter en LookUp, een tekenreeks voor een overeenkomst in plaats van een formule.

Filter en Search retourneren een tabel die dezelfde kolommen bevat als de oorspronkelijke tabel, evenals de records die met de criteria overeenkomen. LookUp retourneert alleen de eerste record die wordt gevonden nadat een formule is toegepast om de record tot één waarde te beperken. Als er geen records worden gevonden, retourneren Filter en Search een lege tabel en retourneert LookUpleeg.

Tabellen vormen een waarde in Power Apps, net als een tekenreeks of getal. Ze kunnen worden doorgegeven aan en geretourneerd uit functies. Filter, Search en LookUp wijzigen een tabel niet. In plaats daarvan nemen ze een tabel als een argument en retourneren ze een tabel of een record of enkele waarde eruit. Zie werken met tabellen voor meer informatie.

Delegering

Indien mogelijk, draagt Power Apps de filter- en sorteerbewerkingen over aan de gegevensbron en worden de resultaten op aanvraag weergegeven. Als u bijvoorbeeld een app start die een Galerie-besturingselement weergeeft dat is gevuld met gegevens, wordt in eerste instantie alleen de eerste reeks records naar het apparaat overgebracht. Als de gebruiker verder scrolt, worden extra gegevens naar de gegevensbron overgebracht. Het resultaat is een snellere start voor de app en toegang tot zeer grote gegevenssets.

Het overdragen is echter niet altijd mogelijk. Gegevensbronnen ondersteunen verschillende functies en operators als het om overdragen gaat. Als een volledige overdracht van een formule niet mogelijk is, wordt in de auteursomgeving het aandeel dat niet kan worden overgebracht, gemarkeerd met een waarschuwing. U kunt eventueel de formule aanpassen om functies en operators te vermijden die niet kunnen worden overgedragen. De overdrachtlijst bevat details over de gegevensbronnen en bewerkingen die kunnen worden overgedragen.

Als overdracht niet mogelijk is, haalt Power Apps slechts een kleine set records op om lokaal te bewerken. De filter- en sorteerfuncties werken dan op een beperkte set records. In de Galerie zijn dan niet alle gegevens beschikbaar, wat verwarrend kan zijn voor de gebruikers.

Zie het overdrachtoverzicht voor meer informatie.

Syntaxis

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

  • Table: vereist. Te doorzoeken tabel.
  • Formula(s): vereist. De formule waarmee elke record van de tabel wordt geëvalueerd. De functie retourneert alle records die resulteren in true. U kunt verwijzen naar kolommen in de tabel. Als u meer dan één formule opgeeft, worden de resultaten van alle formules gecombineerd met de functie And.

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

  • Table: vereist. Te doorzoeken tabel.
  • SearchString: vereist. De tekenreeks waarnaar moet worden gezocht. Bij leeg of een lege tekenreeks worden alle records geretourneerd.
  • Column(s): vereist. De namen van de kolommen in de tabel waarbinnen moet worden gezocht. Als SearchString als gedeeltelijke overeenkomst binnen de gegevens van een van deze kolommen wordt gevonden, zal de volledige record worden geretourneerd.

Notitie

In Power Apps vóór versie 3.24042 werden kolomnamen voor de zoekfunctie Search gespecificeerd met een tekenreeks met dubbele aanhalingstekens, en indien verbonden met een gegevensbron het moesten ook logische namen zijn. Zo werd bijvoorbeeld de logische naam "cr43e_name" met dubbele aanhalingstekens gebruikt in plaats van de weergavenaam Naam zonder aanhalingstekens. Voor SharePoint- en Excel-gegevensbronnen die kolomnamen met spaties bevatten, werd elke spatie gespecificeerd met "_x0020_", bijvoorbeeld "Column Name" als "Column_x0020_Name". Na deze versie werden alle apps automatisch bijgewerkt naar de nieuwe syntaxis die in dit artikel wordt beschreven.

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

  • Table: vereist. Te doorzoeken tabel. De syntaxis wordt in de gebruikersinterface weergegeven als bron boven het functievak.
  • Formula: vereist. De formule waarmee elke record van de tabel wordt geëvalueerd. De functie retourneert de eerste record die resulteert in true. U kunt verwijzen naar kolommen in de tabel. De syntaxis wordt in de gebruikersinterface als voorwaarde boven het functievak weergegeven.
  • ReductionFormula: optioneel. Deze formule wordt geëvalueerd voor de record die is gevonden en reduceert de record vervolgens tot één waarde. U kunt verwijzen naar kolommen in de tabel. Als u deze parameter niet gebruikt, retourneert de functie de volledige record uit de tabel. De syntaxis wordt in de gebruikersinterface als resultaat boven het functievak weergegeven.

Voorbeelden

De volgende voorbeelden gebruiken de IceCream-gegevensbron:

Gegevensbron Ice Cream.

Formule Omschrijving Result
Filter( IceCream, OnOrder > 0 ) Retourneert records waarin OnOrder groter is dan nul. Filteren op volgorde.
Filter( IceCream, Quantity + OnOrder > 225 ) Retourneert records waarin de som van de kolommen Quantity en OnOrder groter is dan 225. Filteren op hoeveelheid en volgorde.
Filter( IceCream, "chocolate" in Lower( Flavor ) ) Retourneert records waarin het woord "chocolate" in de naam Flavor voorkomt, onafhankelijk van hoofdletters of kleine letters. Filteren in kleine letters.
Filter(IceCream, Quantity < 10 && OnOrder < 20) Retourneert records waarin Quantity minder is dan 10 en OnOrder is minder is dan 20. Er zijn geen records die met deze criteria overeenkomen. Daarom wordt een lege tabel geretourneerd. Filteren op hoeveelheid.
Search(IceCream, "choc", Flavor) Retourneert records waarin de tekenreeks "choc" in de naam Flavor voorkomt, onafhankelijk van hoofdletters of kleine letters. Items zoeken.
Search(IceCream, "", Flavor) Omdat de zoekterm leeg is, worden alle records geretourneerd. Alle items zoeken.
LookUp( IceCream, Flavor = "Chocolate", Quantity ) Zoekt naar een record waarvan Flavor gelijk is aan 'Chocolade'. Daarvan bestaat er één. Retourneert de Quantity voor de eerste record die wordt gevonden. 100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) Zoekt naar een record waarvan Quantity groter is dan 150; daarvan zijn er meerdere. Retourneert voor de eerste record die wordt gevonden, dat is de Flavor "Vanilla", de som van de kolommen Quantity en OnOrder. 250
LookUp( IceCream, Flavor = "Pistachio", OnOrder ) Zoekt naar een record waarvan Flavor gelijk is aan "Pistachio"; daarvan zijn er geen. Omdat er geen is gevonden, retourneert Lookupleeg. leeg
LookUp( IceCream, Flavor = "Vanilla" ) Zoekt naar een record waarvan Flavor gelijk is aan 'Vanille'. Daarvan is er één. Omdat er geen verminderingsformule werd opgegeven, wordt de volledige record geretourneerd. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Filteren met keuzekolommen

In het volgende voorbeeld wordt de tabel Account in Microsoft Dataverse gebruikt als gegevensbron. Dit voorbeeld laat zien hoe u een lijst met accounts kunt filteren op basis van geselecteerde waarden voor het besturingselement Combo box:

Stapsgewijs

  1. Open een lege app.

  2. Voeg een nieuw scherm toe met de optie Nieuw scherm.

  3. Selecteer op het tabblad Invoegen de optie Gallery en selecteer vervolgens Verticaal.

  4. Open op het tabblad Eigenschappen van het rechterdeelvenster Gegevensbron en selecteer vervolgens Accounts.

  5. (Optioneel) Selecteer in de lijst Indeling verschillende opties.

  6. Selecteer op het tabblad Invoegen de optie Invoer en selecteer vervolgens Keuzelijst met invoervak. Herhaal de stap om nog twee keuzelijsten met invoervak toe te voegen.

  7. Open voor elk besturingselement met keuzelijst met invoervak op het tabblad Eigenschappen van het rechterdeelvenster de optie Gegevensbron en selecteer vervolgens Accounts. Selecteer Bewerken naast de optie Velden en selecteer vervolgens de waarden Primaire tekst en SearchField. Primaire tekst zou de keuzekolom moeten zijn die u aan de keuzelijst wilt toevoegen. Herhaal de stap voor de andere twee keuzelijsten met invoervak.

    Waarden voor keuzelijst met invoervak instellen.

  8. Selecteer het besturingselement Gallery en stel de eigenschap Items in op de volgende formule:

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

    Gegevensbron accounts.

Gebruikerservaring met betrekking tot zoeken

De volgende voorbeelden gebruiken de IceCream-gegevensbron:

In veel apps kunt u een of meer tekens in een zoekvak typen om een lijst met records in een grote gegevensset te filteren. Terwijl u typt, geeft de lijst alleen die records weer die overeenkomen met de zoekcriteria.

De voorbeelden in de rest van dit artikel tonen de resultaten van het doorzoeken van een lijst met de naam Klanten die deze gegevens bevat:

Klanten zoeken.

Maak een besturingselement Button en stel de eigenschap OnSelect ervan in op de volgende formule om deze gegevensbron als een verzameling te maken:

ClearCollect(Customers, Table({ Naam: "Fred Garcia", Bedrijf: "Northwind Traders" }, { Naam: "Cole Miller", Bedrijf: "Contoso" }, { Naam: "Glenda Johnson", Bedrijf: "Contoso" }, { Naam: "Mike Collins", Bedrijf: "Adventure Works" }, { Naam: "Colleen Jones", Bedrijf: "Adventure Works" }) )

Net als in dit voorbeeld kunt u een lijst met records in een galeriebesturingselement onder aan het scherm maken. U kunt aan de bovenkant van het scherm een besturingselement Text input met de naam SearchInput toevoegen, zodat gebruikers kunnen opgeven in welke records ze geïnteresseerd zijn.

Zoeken met zoekinvoer.

Wanneer de gebruiker tekens in SearchInput typt, worden de resultaten in de galerie automatisch gefilterd. In dit geval is de galerie geconfigureerd om records weer te geven waarin de naam van de klant (niet de naam van het bedrijf) begint met de reeks tekens in SearchInput. Als de gebruiker co in het zoekvak typt, toont de galerie deze resultaten:

Zoeken met begint met.

U kunt filteren op basis van de kolom Naam door de eigenschap Items in het galeriebesturingselement op een van deze formules in te stellen:

Formule Beschrijving Resultaat
Filter( Klanten, StartsWith( Naam, SearchInput.Text ) ) Filtert de gegevensbron Klanten voor records waarin de zoektekenreeks aan het begin van de kolom Naam wordt weergegeven. De test is niet hoofdlettergevoelig. Als de gebruiker co in het zoekvak typt, toont de galerie Colleen Jones en Cole Miller. De galerie toont Mike Collins niet omdat de kolom Naam voor die record niet met de tekenreeks begint. Filteren met begin met.
Filter( Klanten, SearchInput.Text in Naam ) Filtert de gegevensbron Klanten voor records waarin de zoektekenreeks op een willekeurige plaats in de kolom Naam wordt weergegeven. De test is niet hoofdlettergevoelig. Als de gebruiker co in het zoekvak typt, toont de galerie Colleen Jones, Cole Miller en Mike Collins omdat de zoektekenreeks op een willekeurige plaats in de kolom Naam van al deze records verschijnt. Filteren met zoekinvoer.
Search(Customers, SearchInput.Text, Name) De functie Search zoekt, net als de operator in, naar een overeenkomst op een willekeurige plaats in de kolom Naam voor elke record. Houd er rekening mee dat u de naam van de kolom tussen dubbele aanhalingstekens moet plaatsen. Klanten zoeken.

U kunt uw zoekopdracht uitbreiden om de kolom Bedrijf en de kolom Naam op te nemen:

Formule Beschrijving Resultaat
Filter(Customers, StartsWith(Naam, SearchInput.Text) || StartsWith(Bedrijf, SearchInput.Text) ) Filtert de gegevensbron Klanten op records waarin ofwel de kolom Naam ofwel de kolom Bedrijf met de zoektekenreeks (bijvoorbeeld co) begint. De || operator is true als een van de StartsWith-functies true is. Klanten filteren met begint met.
Filter(Klanten, SearchInput.Text in Naam || SearchInput. Text in Bedrijf) Filtert de gegevensbron Klanten op records waarin ofwel de kolom Naam ofwel de kolom Bedrijf de zoektekenreeks (bijvoorbeeld co) op een willekeurige positie bevat. Klanten filteren met zoekinvoer.
Search(Customers, SearchInput.Text, Name, Company) Net als de operator in zoekt de functie Search in de gegevensbron Klanten naar records waarin ofwel de kolom Naam ofwel de kolom Bedrijf de zoektekenreeks (bijvoorbeeld co) op een willekeurige plaats bevat. De functie Search is eenvoudiger te lezen en te schrijven dan Filter als u meerdere kolommen en meerdere in-operators wilt opgeven.  Klanten zoeken met zoekinvoer.