Fonctions Filter, Search et LookUp dans PowerAppsFilter, Search, and LookUp functions in PowerApps

Permet de rechercher un ou plusieurs enregistrements dans une table.Finds one or more records in a table.

DescriptionDescription

La fonction Filter recherche les enregistrements d’une table qui répondent à une formule.The Filter function finds records in a table that satisfy a formula. Utilisez Filter pour rechercher un jeu d’enregistrements qui correspondent à un ou plusieurs critères et ignorer ceux qui n’y correspondent pas.Use Filter to find a set of records that match one or more criteria and to discard those that don't.

La fonction LookUp recherche le premier enregistrement d’une table qui répond à une formule.The LookUp function finds the first record in a table that satisfies a formula. Utilisez LookUp pour rechercher un enregistrement unique qui correspond à un ou plusieurs critères.Use LookUp to find a single record that matches one or more criteria.

Pour ces deux fonctions, la formule est analysée pour chaque enregistrement de la table.For both, the formula is evaluated for each record of the table. Les enregistrements dont le résultat est true font partie du résultat.Records that result in true are included in the result. En plus des opérateurs de formule habituels, vous pouvez utiliser les opérateurs in et exactin pour les correspondances de sous-chaînes.Besides the normal formula operators, you can use the in and exactin operators for substring matches.

Les champs de l’enregistrement en cours de traitement sont disponibles dans la formule.Fields of the record currently being processed are available within the formula. Vous y faites simplement référence par nom comme vous le feriez pour toute autre valeur.You simply reference them by name as you would any other value. Vous pouvez également référencer les propriétés de contrôle et d’autres valeurs à partir de votre application.You can also reference control properties and other values from throughout your app. Pour plus d’informations, consultez les exemples ci-dessous et la section relative à l’utilisation des étendues d’enregistrement.For more details, see the examples below and working with record scope.

La fonction Search recherche les enregistrements d’une table qui contienne une chaîne dans l’une de leurs colonnes.The Search function finds records in a table that contain a string in one of their columns. 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 ».The string may occur anywhere within the column; for example, searching for "rob" or "bert" would find a match in a column that contains "Robert". La recherche n’est pas sensible à la casse.Searching is case-insensitive. Contrairement aux fonctions Filter et LookUp, la fonction Search utilise une chaîne unique et non une formule pour établir la correspondance.Unlike Filter and LookUp, the Search function uses a single string to match instead of a formula.

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.Filter and Search return a table that contains the same columns as the original table and the records that match the criteria. LookUp renvoie uniquement le premier enregistrement trouvé, après avoir appliqué une formule pour limiter l’enregistrement à une valeur unique.LookUp returns only the first record found, after applying a formula to reduce the record to a single value. Si aucun enregistrement n’est trouvé, Filter et Search renvoient une table vide et LookUp, une valeur vide.If no records are found, Filter and Search return an empty table, and LookUp returns blank.

Les tables sont une valeur dans PowerApps, comme une chaîne ou un chiffre.Tables are a value in PowerApps, just like a string or number. Elles peuvent être transmises et renvoyées par les fonctions.They can be passed to and returned from functions. Les fonctions Filter, Search et LookUp ne modifient pas les tables.Filter, Search, and LookUp don't modify a table. Au lieu de cela, elles prennent une table en tant qu’argument et renvoient une table, un enregistrement ou une valeur unique.Instead, they take a table as an argument and return a table, a record, or a single value from it. Pour plus d’informations, voir Utilisation des tables.See working with tables for more details.

DélégationDelegation

Lorsque cela est possible, PowerApps délègue les opérations de filtre et de tri à la source de données et parcourt les résultats à la demande.When possible, PowerApps will delegate filter and sort operations to the data source and page through the results on demand. Par exemple, lorsque vous démarrez une application qui affiche un contrôle Gallery contenant des données, seul le premier jeu d’enregistrements s’affiche initialement sur l’appareil.For example, when you start an app that shows a Gallery control filled with data, only the first set of records will be initially brought to the device. À mesure que l’utilisateur fait défiler la page, des données supplémentaires s’affichent à partir de la source de données.As the user scrolls, additional data is brought down from the data source. Cela se traduit par un temps de démarrage plus rapide pour l’application, tout en permettant d’accéder à des jeux de données très volumineux.The result is a faster start time for the app and access to very large data sets.

La délégation n’est cependant pas toujours possible.However, delegation may not always be possible. Les opérateurs et les fonctions pris en charge avec la délégation varient selon les sources de données.Data sources vary on what functions and operators they support with delegation. Si la délégation complète d’une formule n’est pas possible, l’environnement de programmation marquera la partie qui ne peut pas être déléguée en y ajoutant un avertissement.If complete delegation of a formula isn't possible, the authoring environment will flag the portion that can't be delegated with a warning. Lorsque cela est possible, pensez à modifier la formule pour éviter les fonctions et les opérateurs qui ne peuvent pas être délégués.When possible, consider changing the formula to avoid functions and operators that can't be delegated. La liste des délégations détaille les sources de données et les opérations pouvant être déléguées.The delegation list details which data sources and operations can be delegated.

Si la délégation n’est pas possible, PowerApps extrait seulement un petit jeu d’enregistrements sur lequel travailler en local.If delegation is not possible, PowerApps will pull down only a small set of records to work on locally. Les fonctions de filtre et de tri fonctionneront alors sur un ensemble réduit d’enregistrements.Filter and sort functions will operate on a reduced set of records. Les éléments disponibles dans la galerie ne sont peut-être pas exhaustifs, ce qui peut entraîner une confusion pour les utilisateurs.What is available in the Gallery may not be the complete story, which could be confusing to users.

Pour plus d’informations, consultez la vue d’ensemble de la délégation.See the delegation overview for more information.

SyntaxeSyntax

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

  • Table - Requis.Table - Required. Table dans laquelle effectuer une recherche.Table to search.
  • Formula(s) : requis.Formula(s) - Required. Formule selon laquelle chaque enregistrement de la table est évalué.The formula by which each record of the table is evaluated. La fonction retourne tous les enregistrements évalués à true.The function returns all records that result in true. Vous pouvez référencer des colonnes dans la table.You can reference columns within the table. Si vous fournissez plusieurs formules, les résultats de toutes les formules sont combinés avec la fonction And.If you supply more than one formula, the results of all formulas are combined with the And function.

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

  • Table - Requis.Table - Required. Table dans laquelle effectuer une recherche.Table to search.
  • SearchString : requis.SearchString - Required. Chaîne à rechercher.The string to search for. Si vide ou si une chaîne vide est utilisée, tous les enregistrements sont renvoyés.If blank or an empty string, all records are returned.
  • Column(s) : requis.Column(s) - Required. Noms de colonnes dans Table à rechercher.The names of columns within Table to search. Les colonnes sur lesquelles porte la recherche doivent contenir du texte.Columns to search must contain text. Les noms de colonnes doivent être des chaînes et figurer entre guillemets doubles.Column names must be strings and enclosed in double quotes. Toutefois, les noms de colonnes doivent être statiques et ne peuvent pas être calculés avec une formule.However, the column names must be static and cannot be calculated with a formula. Si SearchString se trouve dans les données de l’une de ces colonnes sous forme de correspondance partielle, l’enregistrement complet est renvoyé.If SearchString is found within the data of any of these columns as a partial match, the full record will be returned.

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_ ».For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Par exemple, spécifiez « Nom de colonne » sous la forme « Nom_x0020_de_x0020_colonne ».For example, specify "Column Name" as "Column_x0020_Name".

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

  • Table - Requis.Table - Required. Table dans laquelle effectuer une recherche.Table to search. Dans l’interface utilisateur, la syntaxe est affichée en tant que source au-dessus de la zone de fonction.In the UI, the syntax is shown as source above the function box.
  • Formula - Requis.Formula - Required. Formule selon laquelle chaque enregistrement de la table est évalué.The formula by which each record of the table is evaluated. La fonction retourne le premier enregistrement évalué à true.The function returns the first record that results in true. Vous pouvez référencer des colonnes dans la table.You can reference columns within the table. Dans l’interface utilisateur, la syntaxe est affichée en tant que condition au-dessus de la zone de fonction.In the UI, the syntax is shown as condition above the function box.
  • ReductionFormula : facultatif.ReductionFormula - Optional. Cette formule est évaluée sur l’enregistrement qui a été trouvé, puis réduit l’enregistrement à une valeur unique.This formula is evaluated over the record that was found, and then reduces the record to a single value. Vous pouvez référencer des colonnes dans la table.You can reference columns within the table. Si vous n’utilisez pas ce paramètre, la fonction retourne l’enregistrement complet de la table.If you don't use this parameter, the function returns the full record from the table. Dans l’interface utilisateur, la syntaxe est affichée en tant que résultat au-dessus de la zone de fonction.In the UI, the syntax is shown as result above the function box.

ExemplesExamples

Les exemples suivants utilisent IceCream comme source de données :The following examples use the IceCream data source:

FormuleFormula DescriptionDescription RésultatResult
Filter( IceCream, OnOrder > 0 )Filter( IceCream, OnOrder > 0 ) Renvoie les enregistrements dans lesquels OnOrder est supérieur à zéro.Returns records where OnOrder is greater than zero.
Filter( IceCream, Quantity + OnOrder > 225 )Filter( IceCream, Quantity + OnOrder > 225 ) Renvoie les enregistrements dans lesquels la somme des colonnes Quantity et OnOrder est supérieure à 225.Returns records where the sum of Quantity and OnOrder columns is greater than 225.
Filter( IceCream, "chocolate" in Lower( Flavor ) )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.Returns records where the word "chocolate" appears in the Flavor name, independent of uppercase or lowercase letters.
Filter( IceCream, Quantity < 10 && OnOrder < 20 )Filter( IceCream, Quantity < 10 && OnOrder < 20 ) Renvoie les enregistrements dans lesquels la valeur de Quantity est inférieure à 10 et celle de OnOrder à 20.Returns records where the Quantity is less than 10 and OnOrder is less than 20. Aucun enregistrement ne correspondant à ces critères, une table vide est renvoyée.No records match these criteria, so an empty table is returned.
Search( IceCream, "choc", "Flavor" )Search( IceCream, "choc", "Flavor" ) Renvoie les enregistrements dans lesquels le mot « chocolate » apparaît dans le nom Flavor, indépendamment de la casse.Returns records where the string "choc" appears in the Flavor name, independent of uppercase or lowercase letters.
Search( IceCream, "", "Flavor" )Search( IceCream, "", "Flavor" ) Étant donné que le terme de recherche est vide, tous les enregistrements sont renvoyés.Because the search term is empty, all records are returned.
LookUp( IceCream, Flavor = "Chocolate", Quantity )LookUp( IceCream, Flavor = "Chocolate", Quantity ) Recherche un enregistrement dont la valeur de Flavor est égale à « Chocolate » (un seul).Searches for a record with Flavor equal to "Chocolate", of which there is one. Pour le premier enregistrement trouvé, renvoie la valeur de Quantity de cet enregistrement.For the first record that's found, returns the Quantity of that record. 100100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder )LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) Recherche un enregistrement dont la valeur Quantity supérieure à 100 (plusieurs).Searches for a record with Quantity greater than 100, of which there are multiple. Pour le premier enregistrement trouvé, c’est-à-dire Flavor « Vanilla », renvoie la somme des colonnes Quantity et OnOrder.For the first record that's found, which is "Vanilla" Flavor, returns the sum of Quantity and OnOrder columns. 250250
LookUp( IceCream, Flavor = "Pistachio", OnOrder )LookUp( IceCream, Flavor = "Pistachio", OnOrder ) Recherche un enregistrement dont la valeur de Flavor est égale à « Pistachio » (aucun).Searches for a record with Flavor equal to "Pistachio", of which there are none. Aucun n’ayant été trouvé, Lookup renvoie vide.Because none were found, Lookup returns blank. blankblank
LookUp( IceCream, Flavor = "Vanilla" )LookUp( IceCream, Flavor = "Vanilla" ) Recherche un enregistrement dont la valeur de Flavor est égale à « Vanilla » (un seul).Searches for a record with Flavor equal to "Vanilla", of which there is one. Dans la mesure où aucune formule de réduction n’est appliquée, tout l’enregistrement est renvoyé.Since no reduction formula was supplied, the entire record is returned. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }{ Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Expérience de recherche de l’utilisateurSearch user experience

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.In many apps, you can type one or more characters into a search box to filter a list of records in a large data set. Pendant que vous tapez, la liste présente uniquement les enregistrements qui correspondent aux critères de recherche.As you type, the list shows only those records that match the search criteria.

Les autres exemples de cette rubrique présentent les résultats de la recherche d’une liste Customers qui contient les données suivantes :The examples in the rest of this topic show the results of searching a list, named Customers, that contains this data:

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 :To create this data source as a collection, create a Button control and set its OnSelect property to this formula:

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" } ) )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 Galerie au bas d’un écran.As in this example, you can show a list of records in a Gallery control at the bottom of a screen. En haut de l’écran, vous pouvez ajouter un contrôle Entrée de texte appelé SearchInput, pour permettre aux utilisateurs d’indiquer les enregistrements qui les intéressent.Near the top of the screen, you can add a Text input control, named SearchInput, so that users can specify which records interest them.

Quand l’utilisateur entre des caractères dans SearchInput, les résultats de la galerie sont automatiquement filtrés.As the user types characters in SearchInput, the results in the gallery are automatically filtered. 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.In this case, the gallery is configured to show records for which the name of the customer (not the name of the company) starts with the sequence of characters in SearchInput. Si l’utilisateur tape co dans la zone de recherche, la galerie affiche les résultats suivants :If the user types co in the search box, the gallery shows these results:

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 :To filter based on the Name column, set the Items property of the gallery control to one of these formulas:

FormuleFormula DescriptionDescription RésultatResult
Filter( Customers, StartsWith( Name, SearchInput.Text ) )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.Filters the Customers data source for records in which the search string appears at the start of the Name column. Le test n’est pas sensible à la casse.The test is case insensitive. Si l’utilisateur tape co dans la zone de recherche, la galerie affiche Colleen Jones et Cole Miller.If the user types co in the search box, the gallery shows Colleen Jones and 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.The gallery doesn't show Mike Collins because the Name column for that record doesn't start with the search string.
Filter( Customers, SearchInput.Text in Name )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.Filters the Customers data source for records in which the search string appears anywhere in the Name column. Le test n’est pas sensible à la casse.The test is case insensitive. 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.If the user types co in the search box, the gallery shows Colleen Jones, Cole Miller, and Mike Collins because the search string appears somewhere in the Name column of all of those records.
Search( Customers, SearchInput.Text, "Name" )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.Similar to using the in operator, the Search function searches for a match anywhere within the Name column of each record. Notez que le nom de colonne doit être placé entre guillemets doubles.Note that you must enclose the column name in double quotation marks.

Vous pouvez étendre votre recherche de manière à inclure la colonne Company ainsi que la colonne Name :You can expand your search to include the Company column as well as the Name column:

FormuleFormula DescriptionDescription RésultatResult
Filter( Customers, StartsWith( Name, SearchInput.Text ) || StartsWith( Company, SearchInput.Text ) )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).Filters the Customers data source for records in which either the Name column or the Company column starts with the search string (for example, co). L’opérateur || a pour valeur true si l’une des fonctions StartsWith a pour valeur true.The || operator is true if either StartsWith function is true.
Filter( Customers, SearchInput.Text in Name || SearchInput.Text in Company )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).Filters the Customers data source for records in which either the Name column or the Company column contains the search string (for example, co) anywhere within it.
Search( Customers, SearchInput.Text, "Name", "Company" )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).Similar to using the in operator, the Search function searches the Customers data source for records in which either the Name column or the Company column contains the search string (for example, co) anywhere within it. 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.The Search function is easier to read and write than Filter if you want to specify multiple columns and multiple in operators. Notez que le nom des colonnes doit être placé entre guillemets doubles.Note that you must enclose the names of the columns in double quotation marks.