Fonctions Filter, Search et LookUp dans Power Apps

Permet de rechercher un ou plusieurs enregistrements dans une table.

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.
  • Formule(s)  : obligatoire(s). 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é.

Notes

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 :

Formule Description Résultat
Filter( IceCream, OnOrder > 0 ) Renvoie les enregistrements dans lesquels OnOrder est supérieur à zéro.
Filter( IceCream, Quantity + OnOrder > 225 ) Renvoie les enregistrements dans lesquels la somme des colonnes Quantity et OnOrder est supérieure à 225.
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.
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.
Search( IceCream, "choc", "Flavor" ) Renvoie les enregistrements dans lesquels le mot « chocolate » apparaît dans le nom Flavor, indépendamment de la casse.
Search( IceCream, "", "Flavor" ) Étant donné que le terme de recherche est vide, tous les enregistrements sont renvoyés.
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. vide
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 }

Expérience de recherche de l’utilisateur

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 :

Pour créer cette source de données en tant que collection, créez un contrôle Bouton 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.

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 :

Pour filtrer en fonction de la colonne Name, définissez la propriété Items du contrôle de galerie 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.
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.
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. Notez que le nom de colonne doit être placé entre guillemets doubles.

Vous pouvez étendre votre recherche de manière à inclure la colonne Company ainsi que 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.
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).
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. Notez que le nom des colonnes doit être placé entre guillemets doubles.

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).