Funzioni Filter, Search e LookUp in PowerAppsFilter, Search, and LookUp functions in PowerApps

Trovano una o più record in un tabella.Finds one or more records in a table.

DescrizioneDescription

La funzione Filter trova i record in una tabella che soddisfano una formula.The Filter function finds records in a table that satisfy a formula. Usare la funzione Filter per trovare un set di record che soddisfano uno o più criteri e ignorare quelli che non li soddisfano.Use Filter to find a set of records that match one or more criteria and to discard those that don't.

La funzione LookUp trova il primo record in una tabella che soddisfa una formula.The LookUp function finds the first record in a table that satisfies a formula. Usare la funzione LookUp per trovare un singolo record che corrisponde a uno o più criteri.Use LookUp to find a single record that matches one or more criteria.

Per entrambe le funzioni, la formula viene valutata per ogni record della tabella.For both, the formula is evaluated for each record of the table. I record con valore true vengono inclusi nel risultato.Records that result in true are included in the result. Oltre agli operatori normali di formula, è possibile anche usare gli operatori in e exactin per le corrispondenze di sottostringhe.Besides the normal formula operators, you can use the in and exactin operators for substring matches.

Fields of the record currently being processed are available within the formula. You simply reference them by name as you would any other value. You can also reference control properties and other values from throughout your app. For more details, see the examples below and working with record scope.

La funzione Search trova i record in una tabella che contengono una stringa in una sola delle colonne.The Search function finds records in a table that contain a string in one of their columns. La stringa può trovarsi in qualsiasi punto all'interno della colonna. Ad esempio, la ricerca di "rob" o "bert" potrebbe trovare una corrispondenza in una colonna che contiene il nome "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 ricerca non fa distinzione tra lettere maiuscole e minuscole.Searching is case-insensitive. A differenza delle funzioni Filter e LookUp, la funzione Search usa una stringa singola per la corrispondenza, anziché una formula.Unlike Filter and LookUp, the Search function uses a single string to match instead of a formula.

Le funzioni Filter e Search restituiscono una tabella che contiene le stesse colonne della tabella originale e i record che soddisfano i criteri.Filter and Search return a table that contains the same columns as the original table and the records that match the criteria. La funzione LookUp restituisce solo il primo record trovato, dopo aver applicato una formula per ridurre il record a un singolo valore.LookUp returns only the first record found, after applying a formula to reduce the record to a single value. Se non vengono trovati record, le funzioni Filter e Search restituiscono una tabella vuota e la funzione LookUp restituisce blank.If no records are found, Filter and Search return an empty table, and LookUp returns blank.

In PowerApps le tabelle sono un valore, allo stesso modo delle stringhe e dei numeri.Tables are a value in PowerApps, just like a string or number. Le tabelle possono essere passate e restituite da funzioni.They can be passed to and returned from functions. Le funzioni Filter, Search e LookUp non modificano una tabella.Filter, Search, and LookUp don't modify a table. Al contrario, prendono una tabella come argomento e restituiscono una tabella, un record o un singolo valore.Instead, they take a table as an argument and return a table, a record, or a single value from it. Per altre informazioni, vedere Working with tables (Utilizzo delle tabelle).See working with tables for more details.

Delegation

When possible, PowerApps will delegate filter and sort operations to the data source and page through the results on demand. 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. As the user scrolls, additional data is brought down from the data source. The result is a faster start time for the app and access to very large data sets.

However, delegation may not always be possible. Data sources vary on what functions and operators they support with delegation. If complete delegation of a formula isn't possible, the authoring environment will flag the portion that can't be delegated with a warning. When possible, consider changing the formula to avoid functions and operators that can't be delegated. The delegation list details which data sources and operations can be delegated.

If delegation is not possible, PowerApps will pull down only a small set of records to work on locally. Filter and sort functions will operate on a reduced set of records. What is available in the Gallery may not be the complete story, which could be confusing to users.

See the delegation overview for more information.

SintassiSyntax

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

  • Table - Obbligatorio.Table - Required. La tabella in cui eseguire la ricerca.Table to search.
  • Formula: obbligatorio.Formula(s) - Required. La formula in base alla quale viene valutato ogni record della tabella.The formula by which each record of the table is evaluated. La funzione restituisce tutti i record risultanti in true.The function returns all records that result in true. È possibile fare riferimento alle colonne all'interno della tabella.You can reference columns within the table. Se si specificano più formule, i risultati di tutte le formule vengono combinati con la funzione And.If you supply more than one formula, the results of all formulas are combined with the And function.

Search( Tabella, StringaRicerca, Colonna1 [, Colonna2, ... ] )Search( Table, SearchString, Column1 [, Column2, ... ] )

  • Table - Obbligatorio.Table - Required. La tabella in cui eseguire la ricerca.Table to search.
  • StringaRicerca: obbligatorio.SearchString - Required. La stringa da cercare.The string to search for. Se è blank o una stringa vuota, vengono restituiti tutti i record.If blank or an empty string, all records are returned.
  • Colonne: obbligatorio.Column(s) - Required. I nomi delle colonne all'interno della tabella in cui eseguire la ricerca.The names of columns within Table to search. Le colonne in cui eseguire la ricerca devono contenere testo.Columns to search must contain text. I nomi di colonna devono essere stringhe e racchiusi tra virgolette doppie.Column names must be strings and enclosed in double quotes. I nomi di colonna devono essere statici e non possono essere calcolati con una formula.However, the column names must be static and cannot be calculated with a formula. Se la StringaRicerca viene trovata all'interno dei dati di una di queste colonne come corrispondenza parziale, verrà restituito il record completo.If SearchString is found within the data of any of these columns as a partial match, the full record will be returned.

Nota: per origini dati SharePoint ed Excel che contengono nomi di colonna con spazi, specificare ogni spazio come "_x0020_".Note: For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Ad esempio, specificare "Nome colonna" come "Column_x0020_Name".For example, specify "Column Name" as "Column_x0020_Name".

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

  • Table - Obbligatorio.Table - Required. La tabella in cui eseguire la ricerca.Table to search. Nell'interfaccia utente, la sintassi viene visualizzata come origine sopra la casella di funzione.In the UI, the syntax is shown as source above the function box.
  • Formula - Obbligatorio.Formula - Required. La formula in base alla quale viene valutato ogni record della tabella.The formula by which each record of the table is evaluated. La funzione restituisce il primo record risultante in true.The function returns the first record that results in true. È possibile fare riferimento alle colonne all'interno della tabella.You can reference columns within the table. Nell'interfaccia utente, la sintassi viene visualizzata come condizione sopra la casella di funzione.In the UI, the syntax is shown as condition above the function box.
  • FormulaRiduzione: facoltativo.ReductionFormula - Optional. Questa formula viene valutata sul record trovato, riducendo il record a un valore singolo.This formula is evaluated over the record that was found, and then reduces the record to a single value. È possibile fare riferimento alle colonne all'interno della tabella.You can reference columns within the table. Se non si usa questo parametro, la funzione restituisce il record completo dalla tabella.If you don't use this parameter, the function returns the full record from the table. Nell'interfaccia utente, la sintassi viene visualizzata come risultato sopra la casella di funzione.In the UI, the syntax is shown as result above the function box.

EsempiExamples

Negli esempi seguenti viene usata l'origine dati IceCream:The following examples use the IceCream data source:

FormulaFormula DescrizioneDescription RisultatoResult
Filter( IceCream, OnOrder > 0 )Filter( IceCream, OnOrder > 0 ) Restituisce i record in cui OnOrder è maggiore di zero.Returns records where OnOrder is greater than zero.
Filter( IceCream, Quantity + OnOrder > 225 )Filter( IceCream, Quantity + OnOrder > 225 ) Restituisce i record in cui la somma delle colonne Quantity e OnOrder è maggiore di 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 ) ) Restituisce i record in cui viene visualizzata la parola "chocolate" nella colonna Flavor, senza distinzione tra lettere maiuscole o minuscole.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 ) Restituisce i record in cui il valore Quantity è inferiore a 10 e il valore OnOrder è minore di 20.Returns records where the Quantity is less than 10 and OnOrder is less than 20. Poiché nessun record corrisponde a questi criteri, viene restituita una tabella vuota.No records match these criteria, so an empty table is returned.
Search( IceCream, "choc", "Flavor" )Search( IceCream, "choc", "Flavor" ) Restituisce i record in cui è inclusa la parola "choc" nella colonna Flavor, senza distinzione tra lettere maiuscole o minuscole.Returns records where the string "choc" appears in the Flavor name, independent of uppercase or lowercase letters.
Search( IceCream, "", "Flavor" )Search( IceCream, "", "Flavor" ) Poiché il termine di ricerca è vuoto, vengono restituiti tutti i record.Because the search term is empty, all records are returned.
LookUp( IceCream, Flavor = "Chocolate", Quantity )LookUp( IceCream, Flavor = "Chocolate", Quantity ) Cerca un record con Flavor uguale a "Chocolate", di cui è presente uno.Searches for a record with Flavor equal to "Chocolate", of which there is one. Per il primo record trovato, restituisce il valore Quantity di tale record.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 ) Cerca un record con il valore Quantity maggiore di 100, di cui ce ne sono più di uno.Searches for a record with Quantity greater than 100, of which there are multiple. Per il primo record trovato, ovvero Flavor "Vanilla", restituisce la somma delle colonne Quantity e 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 ) Cerca un record con Flavor uguale a "Pistachio", di cui non è presente nessuno.Searches for a record with Flavor equal to "Pistachio", of which there are none. Poiché non sono stati trovati record, la funzione Lookup restituisce blank.Because none were found, Lookup returns blank. blankblank
LookUp( IceCream, Flavor = "Vanilla" )LookUp( IceCream, Flavor = "Vanilla" ) Cerca un record con Flavor uguale a "Vanilla", di cui è presente uno.Searches for a record with Flavor equal to "Vanilla", of which there is one. Poiché non è stata specificata alcuna formula di riduzione, viene restituito l'intero record.Since no reduction formula was supplied, the entire record is returned. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }{ Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Esperienza utente di ricercaSearch user experience

In molte app è possibile digitare uno o più caratteri in una casella di ricerca per filtrare un elenco di record in un set di dati molto grande.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. Mentre si digita, l'elenco visualizza solo i record che soddisfano i criteri di ricerca.As you type, the list shows only those records that match the search criteria.

Gli esempi nella parte rimanente di questo argomento mostrano i risultati di ricerca in un elenco, denominato Customers, che contiene i dati seguenti:The examples in the rest of this topic show the results of searching a list, named Customers, that contains this data:

Per creare questa origine dati come raccolta, creare un controllo Button e impostare la relativa proprietà OnSelect con questa formula: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" } ) )

Come illustrato in questo esempio, è possibile visualizzare un elenco di record in un controllo di raccolta nella parte inferiore della schermata.As in this example, you can show a list of records in a Gallery control at the bottom of a screen. Nella parte superiore della schermata è possibile aggiungere un controllo di input di testo denominato SearchInput, in modo che gli utenti possono specificare i record a cui sono interessati.Near the top of the screen, you can add a Text input control, named SearchInput, so that users can specify which records interest them.

Mentre l'utente digita caratteri in SearchInput, i risultati della raccolta vengono filtrati automaticamente.As the user types characters in SearchInput, the results in the gallery are automatically filtered. In questo caso, la raccolta è configurata per visualizzare i record il cui nome cliente (non il nome della società) inizia con la sequenza di caratteri in 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. Se l'utente digita co nella casella di ricerca, la raccolta visualizza i risultati seguenti:If the user types co in the search box, the gallery shows these results:

Per applicare un filtro basato sulla colonna Name, impostare la proprietà Items del controllo della raccolta con una di queste formule:To filter based on the Name column, set the Items property of the gallery control to one of these formulas:

FormulaFormula DescrizioneDescription RisultatoResult
Filter( Customers, StartsWith( Name, SearchInput.Text ) )Filter( Customers, StartsWith( Name, SearchInput.Text ) ) Applica un filtro all'origine dati Customers per i record in cui viene visualizzata la stringa di ricerca all'inizio della colonna Name.Filters the Customers data source for records in which the search string appears at the start of the Name column. Il test non fa distinzione tra lettere maiuscole e minuscole.The test is case insensitive. Se l'utente digita co nella casella di ricerca, la raccolta visualizza Colleen Jones e Cole Miller.If the user types co in the search box, the gallery shows Colleen Jones and Cole Miller. La raccolta non visualizza Mike Collins perché la colonna Name per tale record non inizia con la stringa di ricerca.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 ) Applica un filtro all'origine dati Customers per i record in cui viene visualizzata la stringa di ricerca in qualsiasi parte della colonna Name.Filters the Customers data source for records in which the search string appears anywhere in the Name column. Il test non fa distinzione tra lettere maiuscole e minuscole.The test is case insensitive. Se l'utente digita co nella casella di ricerca, la raccolta visualizza Colleen Jones, Cole Miller, e Mike Collins perché la stringa di ricerca è inclusa in qualche parte della colonna Name per tutti questi record.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" ) Simile all'uso dell'operatore in, la funzione Search cerca una corrispondenza in una parte qualsiasi all'interno della colonna Name di ogni record.Similar to using the in operator, the Search function searches for a match anywhere within the Name column of each record. Si noti che è necessario racchiudere il nome della colonna tra virgolette doppie.Note that you must enclose the column name in double quotation marks.

È possibile espandere la ricerca per includere la colonna Company e la colonna Name:You can expand your search to include the Company column as well as the Name column:

FormulaFormula DescrizioneDescription RisultatoResult
Filter( Customers, StartsWith( Name, SearchInput.Text ) || StartsWith( Company, SearchInput.Text ) )Filter( Customers, StartsWith( Name, SearchInput.Text ) || StartsWith( Company, SearchInput.Text ) ) Applica un filtro all'origine dati Customers per i record in cui la colonna Name o la colonna Company inizia con la stringa di ricerca (ad esempio, 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'operatore || è true se la funzione StartsWith è anche 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 ) Applica un filtro all'origine dati Customers per i record in cui la colonna Name o la colonna Company contiene la stringa di ricerca (ad esempio, co) in qualsiasi parte all'interno della colonna.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" ) Analogamente all'uso dell'operatore in, la funzione Search esegue la ricerca nell'origine dati Customers per trovare record in cui la colonna Name o la colonna Company contiene la stringa di ricerca (ad esempio, co) in qualsiasi parte all'interno della colonna.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 funzione Search è più semplice da leggere e scrivere della funzione Filter se si vogliono specificare più colonne e più operatori in.The Search function is easier to read and write than Filter if you want to specify multiple columns and multiple in operators. Si noti che è necessario racchiudere i nomi delle colonne tra virgolette doppie.Note that you must enclose the names of the columns in double quotation marks.