Fonctions Filter, Search et LookUp

S’applique à : Applications canevas Flux de bureau Applications pilotées par modèle CLI Power Platform

Permet de rechercher un ou plusieurs enregistrements dans une table.

Regardez cette vidéo pour apprendre à utiliser les fonctions Filter, Search et LookUp :

Note

Les commandes pac power-fx de PAC CLI ne prennent pas en charge la fonction Search.

Description

La fonction Filter recherche les enregistrements d’une table qui répondent à une formule. Utilisez Filter pour rechercher un jeu d’enregistrements qui correspondent à un ou plusieurs critères et ignorer ceux qui n’y correspondent pas.

La fonction LookUp recherche le premier enregistrement d’une table qui répond à une formule. Utilisez LookUp pour rechercher un enregistrement unique qui correspond à un ou plusieurs critères.

Pour ces deux fonctions, la formule est analysée pour chaque enregistrement de la table. Les enregistrements dont le résultat est true font partie du résultat. En plus des opérateurs de formule habituels, vous pouvez utiliser les opérateurs in et exactin pour les correspondances de sous-chaînes.

Les champs de l’enregistrement en cours de traitement sont disponibles dans la formule. Utilisez l’opérateur ThisRecord ou référencez simplement les champs par leur nom comme vous le feriez pour toute autre valeur. L’opérateur As peut également être utilisé pour nommer l’enregistrement en cours de traitement, ce qui peut faciliter la compréhension de votre formule et rendre les enregistrements imbriqués accessibles. Pour plus d’informations, consultez les exemples ci-dessous et la section Utilisation de l’étendue de l’enregistrement.

La fonction Search recherche les enregistrements d’une table qui contienne une chaîne dans l’une de leurs colonnes. Cette chaîne peut apparaître n’importe où dans la colonne. Par exemple, rechercher « rob » ou « bert » revient à trouver une correspondance dans une colonne qui contient « Robert ». La recherche n’est pas sensible à la casse. Contrairement aux fonctions Filter et LookUp, la fonction Search utilise une chaîne unique et non une formule pour établir la correspondance.

Filter et Search renvoient une table qui contient les mêmes colonnes que la table d’origine et les enregistrements qui correspondent aux critères. LookUp renvoie uniquement le premier enregistrement trouvé, après avoir appliqué une formule pour limiter l’enregistrement à une valeur unique. Si aucun enregistrement n’est trouvé, Filter et Search renvoient une table vide et LookUp, une valeur vide.

Les tables correspondent à une valeur dans Power Apps, comme une chaîne ou un chiffre. Elles peuvent être transmises et renvoyées par les fonctions. Les fonctions Filter, Search et LookUp ne modifient pas les tables. Au lieu de cela, elles prennent une table en tant qu’argument et renvoient une table, un enregistrement ou une valeur unique. Pour plus d’informations, voir Utilisation des tables.

Délégation

Lorsque cela est possible, Power Apps délèguera, sur demande, les opérations de filtrage et de tri à la source de données et à la page par le biais des résultats. Par exemple, lorsque vous démarrez une application qui affiche un contrôle Galerie contenant des données, seul le premier ensemble d’enregistrements sera initialement importé dans l’appareil. Lorsque l’utilisateur fait défiler la page, des informations supplémentaires provenant de la source de données s’affichent. Il en résulte un temps de démarrage plus rapide pour l’application et un accès à de très grands ensembles de données.

Toutefois, il se peut que la délégation ne soit pas toujours possible. Les sources de données varient selon les fonctions et les opérateurs qu’elles prennent en charge avec la délégation. Si la délégation complète d’une formule n’est pas possible, l’environnement de création marquera la partie qui ne peut pas être déléguée avec un avertissement. Si possible, envisagez de modifier la formule pour éviter les fonctions et les opérateurs qui ne peuvent pas être délégués. La liste de délégation détaille les sources de données et les opérations qui peuvent être déléguées.

Si la délégation n’est pas possible, Power Apps extraira uniquement un petit ensemble d’enregistrements à utiliser localement. Les fonctions de filtrage et de tri s’exécuteront sur un ensemble réduit d’enregistrements. Il se peut que le contenu de la Galerie ne soit pas exhaustif, ce qui peut désorienter les utilisateurs.

Pour plus d’informations, consultez la Vue d’ensemble de la délégation.

Syntaxe

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

  • Table : obligatoire. Table dans laquelle effectuer une recherche.
  • Formula(s) : obligatoire. Formule selon laquelle chaque enregistrement de la table est évalué. La fonction retourne tous les enregistrements évalués à true. Vous pouvez référencer des colonnes dans la table. Si vous fournissez plusieurs formules, les résultats de toutes les formules sont combinés avec la fonction And.

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

  • Table : obligatoire. Table dans laquelle effectuer une recherche.
  • SearchString : obligatoire. Chaîne à rechercher. Si vide ou si une chaîne vide est utilisée, tous les enregistrements sont renvoyés.
  • Column(s) : obligatoire. Noms de colonnes dans Table à rechercher. Les colonnes sur lesquelles porte la recherche doivent contenir du texte. Les noms de colonnes doivent être des chaînes et figurer entre guillemets doubles. Toutefois, les noms de colonnes doivent être statiques et ne peuvent pas être calculés avec une formule. Si SearchString se trouve dans les données de l’une de ces colonnes sous forme de correspondance partielle, l’enregistrement complet est renvoyé.

Note

Pour des sources de données Excel ou SharePoint contenant des noms de colonne avec des espaces, spécifiez ceux-ci sous la forme « _x0020_ ». Par exemple, spécifiez « Nom de colonne » sous la forme « Nom_x0020_de colonne ».

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

  • Table : obligatoire. Table dans laquelle effectuer une recherche. Dans l’interface utilisateur, la syntaxe est affichée en tant que source au-dessus de la zone de fonction.
  • Formula : obligatoire. Formule selon laquelle chaque enregistrement de la table est évalué. La fonction retourne le premier enregistrement évalué à true. Vous pouvez référencer des colonnes dans la table. Dans l’interface utilisateur, la syntaxe est affichée en tant que condition au-dessus de la zone de fonction.
  • ReductionFormula : facultatif. Cette formule est évaluée sur l’enregistrement qui a été trouvé, puis réduit l’enregistrement à une valeur unique. Vous pouvez référencer des colonnes dans la table. Si vous n’utilisez pas ce paramètre, la fonction retourne l’enregistrement complet de la table. Dans l’interface utilisateur, la syntaxe est affichée en tant que résultat au-dessus de la zone de fonction.

Exemples

Les exemples suivants utilisent IceCream comme source de données :

Source de données Glaces.

Formula Description Result
Filter( IceCream, OnOrder > 0 ) Renvoie les enregistrements dans lesquels OnOrder est supérieur à zéro. Filtrer selon la commande.
Filter( IceCream, Quantity + OnOrder > 225 ) Renvoie les enregistrements dans lesquels la somme des colonnes Quantity et OnOrder est supérieure à 225. Filtrez la quantité et la commande.
Filter( IceCream, "chocolate" in Lower( Flavor ) ) Renvoie les enregistrements dans lequel le mot « chocolate » apparaît dans le nom Flavor, indépendamment de la casse. Filtrer en bas.
Filter(IceCream, Quantity < 10 && OnOrder < 20) Renvoie les enregistrements dans lesquels la valeur de Quantity est inférieure à 10 et celle de OnOrder à 20. Aucun enregistrement ne correspondant à ces critères, une table vide est renvoyée. Filtrer sur la quantité.
Search( IceCream, "choc", "Flavor" ) Renvoie les enregistrements dans lesquels le mot « chocolate » apparaît dans le nom Flavor, indépendamment de la casse. Rechercher des éléments.
Search( IceCream, "", "Flavor" ) Étant donné que le terme de recherche est vide, tous les enregistrements sont renvoyés. Rechercher tous les éléments.
LookUp( IceCream, Flavor = "Chocolate", Quantity ) Recherche un enregistrement dont la valeur de Flavor est égale à « Chocolate » (un seul). Pour le premier enregistrement trouvé, renvoie la valeur de Quantity de cet enregistrement. 100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) Recherche un enregistrement dont la valeur Quantity supérieure à 150 (plusieurs). Pour le premier enregistrement trouvé, c’est-à-dire Flavor « Vanilla », renvoie la somme des colonnes Quantity et OnOrder. 250
LookUp( IceCream, Flavor = "Pistachio", OnOrder ) Recherche un enregistrement dont la valeur de Flavor est égale à « Pistachio » (aucun). Aucun n’ayant été trouvé, Lookup renvoie vide. blank
LookUp( IceCream, Flavor = "Vanilla" ) Recherche un enregistrement dont la valeur de Flavor est égale à « Vanilla » (un seul). Dans la mesure où aucune formule de réduction n’est appliquée, tout l’enregistrement est renvoyé. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Filtrage avec des colonnes de choix

L’exemple suivant utilise la table Compte dans Microsoft Dataverse comme source de données. Cet exemple montre comment Filtrer la liste de comptes basée sur les valeurs de contrôle Combo box sélectionnées :

Pas à pas

  1. Ouvrez une application vide.

  2. Ajoutez un nouvel écran en sélectionnant l’option Nouvel écran.

  3. Sous l’onglet Insertion, sélectionnez Gallery et Verticale.

  4. Sur l’onglet Propriétés du volet de droite, ouvrez Source de données, puis sélectionnez Comptes.

  5. (Facultatif) Dans la liste Disposition, sélectionnez différentes options.

  6. Dans l’onglet Insérer, sélectionnez Entrée, puis Combo box. Répétez l’étape pour ajouter deux autres contrôles Combo box.

  7. Pour chaque contrôle Combo box, sur l’onglet Propriétés du volet de droite, ouvrez Source de données, puis sélectionnez Comptes. Sélectionner Modifier à côté de l’option Champs, puis sélectionnez les valeurs Texte principal et SearchField. Le Texte principal doit être la colonne de choix que vous souhaitez ajouter à la zone de liste déroulante. Répétez l’étape pour les deux autres contrôles Combo box.

    Définition des valeurs de la zone de liste déroulante.

  8. Maintenant, sélectionnez le contrôle Gallery et définissez la propriété Items sur la formule suivante :

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

    Source de données des comptes.

Expérience de recherche de l’utilisateur

Les exemples suivants utilisent IceCream comme source de données :

Dans de nombreuses applications, vous pouvez entrer un ou plusieurs caractères dans une zone de recherche pour filtrer une liste d’enregistrements dans un jeu de données volumineux. Pendant que vous tapez, la liste présente uniquement les enregistrements qui correspondent aux critères de recherche.

Les autres exemples de cette rubrique présentent les résultats de la recherche d’une liste Customers, qui contient les données suivantes :

Recherche sur les clients.

Pour créer cette source de données en tant que collection, créez un contrôle Button et définissez sa propriété OnSelect en utilisant la formule suivante :

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

Comme dans cet exemple, vous pouvez afficher une liste d’enregistrements dans un contrôle Gallery au bas d’un écran. En haut de l’écran, vous pouvez ajouter un contrôle Text input appelé SearchInput, pour permettre aux utilisateurs d’indiquer les enregistrements qui les intéressent.

Rechercher avec la saisie de recherche.

Quand l’utilisateur entre des caractères dans SearchInput, les résultats de la galerie sont automatiquement filtrés. Dans cet exemple, la galerie est configurée de manière à afficher les enregistrements pour lesquels le nom du client (et non celui de l’entreprise) commence par la séquence de caractères dans SearchInput. Si l’utilisateur tape co dans la zone de recherche, la galerie affiche les résultats suivants :

Rechercher avec commence par.

Pour filtrer en fonction de la colonne Name, définissez la propriété Items du contrôle Gallery sur l’une de ces formules :

Formule Description Résultat
Filter( Customers, StartsWith( Name, SearchInput.Text ) ) Permet de filtrer la source de données Customers pour afficher les enregistrements dans lesquels la chaîne de recherche apparaît au début de la colonne Name. Le test n’est pas sensible à la casse. Si l’utilisateur tape co dans la zone de recherche, la galerie affiche Colleen Jones et Cole Miller. La galerie n’affiche pas Mike Collins, car la colonne Name de cet enregistrement ne commence pas par la chaîne de recherche. Filtrer avec commencer par.
Filter( Customers, SearchInput.Text in Name ) Permet de filtrer la source de données Customers pour afficher les enregistrements dans lesquels la chaîne de recherche apparaît n’importe où dans la colonne Name. Le test n’est pas sensible à la casse. Si l’utilisateur tape co dans la zone de recherche, la galerie affiche Colleen Jones,Cole Miller et Mike Collins, car la chaîne de recherche apparaît quelque part dans la colonne Name de tous ces enregistrements. Filtrer avec entrée de recherche.
Search( Customers, SearchInput.Text, "Name" ) À l’image de l’opérateur in, la fonction Search permet de rechercher une correspondance n’importe où dans la colonne Name de chaque enregistrement. Vous devez placer le nom de colonne entre guillemets doubles. Rechercher des clients.

Vous pouvez étendre votre recherche de manière à inclure la colonne Company et la colonne Name :

Formule Description Résultat
Filter(Customers, StartsWith(Name, SearchInput.Text) || StartsWith(Company, SearchInput.Text) ) Permet de filtrer la source de données Customers pour afficher les enregistrements dans lesquels la colonne Name ou la colonne Company commence par la chaîne de recherche (par exemple, co). L’opérateur || a pour valeur true si l’une des fonctions StartsWith a pour valeur true. Filtrer les clients avec commencer par.
Filter(Customers, SearchInput.Text in Name || SearchInput. Text in Company) Permet de filtrer la source de données Customers pour afficher les enregistrements dans lesquels la colonne Name ou la colonne Company contient la chaîne de recherche (par exemple, co). Filtrer les clients avec entrée de recherche.
Search( Customers, SearchInput.Text, "Name", "Company" ) À l’image de l’opérateur in, la fonction Search permet de rechercher dans la source de données Customers les enregistrements dans lesquels la colonne Name ou la colonne Company contient la chaîne de recherche (par exemple, co). La fonction Search est plus facile à lire et à écrire que la fonction Filter si vous voulez spécifier plusieurs colonnes et plusieurs opérateurs in. Vous devez placer les noms des colonnes entre guillemets doubles. Rechercher des clients avec une entrée de recherche.