Funzioni Filter, Search e LookUp

Si applica a: app canvas flussi desktop app basate su modello Power Platform CLI

Trovano una o più record in un tabella.

Guarda questo video per imparare a usare le funzioni Filtro, **Ricerca e LookUp:

Nota

I comandi PAC CLI pac power-fx non supportano la funzione Search.

Descrizione

La funzione Filter trova i record in una tabella che soddisfano una formula. Usa la funzione Filter per trovare un set di record che soddisfi uno o più criteri e scartare quelli che non li soddisfano.

La funzione LookUp trova il primo record in una tabella che soddisfa una formula. Usare la funzione LookUp per trovare un singolo record che corrisponde a uno o più criteri.

Per entrambe le funzioni, la formula viene valutata per ogni record della tabella. I record con valore true vengono inclusi nel risultato. Oltre agli operatori normali di formula, è possibile anche usare gli operatori in e exactin per le corrispondenze di sottostringhe.

I campi di record attualmente in elaborazione sono disponibili nella formula. Utilizza l'operatore ThisRecord o fai semplicemente riferimento ai campi in base al nome come faresti con qualsiasi altro valore. L'operatore As può anche essere utilizzato per denominare il record in fase di elaborazione in modo da semplificare la comprensione della formula e rendere accessibili i record nidificati. Per altre informazioni, consulta gli esempi di seguito e la sezione sull'utilizzo nell'ambito dei record.

La funzione Search trova i record in una tabella che contengono una stringa in una sola delle colonne. 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". La ricerca non fa distinzione tra lettere maiuscole e minuscole. A differenza delle funzioni Filter e LookUp, la funzione Search usa una stringa singola per la corrispondenza, anziché una formula.

Le funzioni Filter e Search restituiscono una tabella che contiene le stesse colonne della tabella originale e i record che soddisfano i criteri. La funzione LookUp restituisce solo il primo record trovato, dopo aver applicato una formula per ridurre il record a un singolo valore. Se non vengono trovati record, le funzioni Filter e Search restituiscono una tabella vuota e la funzione LookUp restituisce blank.

In Power Apps le tabelle sono un valore, allo stesso modo delle stringhe e dei numeri. Le tabelle possono essere passate e restituite da funzioni. Le funzioni Filter, Search e LookUp non modificano una tabella. Al contrario, prendono una tabella come argomento e restituiscono una tabella, un record o un singolo valore. Per altre informazioni, vedi Utilizzo delle tabelle.

Delega

Quando possibile, Power Apps delegherà le operazioni di filtro e ordinamento all'origine dati e alla pagina con i risultati su richiesta. Ad esempio, all'avvio di un'app nella quale viene visualizzato un controllo Galleria contenente dati, solo il primo set di record verrà inizialmente portato al dispositivo. Mentre l'utente scorre, i dati aggiuntivi vengono ridotti dall'origine dati. Il risultato è che l'app si avvia più velocemente ed è possibile accedere a set di dati di dimensioni molto grandi.

Tuttavia, la delega potrebbe non essere sempre possibile. Le origini dati supportano diverse funzioni e diversi operatori con la delega. Se la delega completa della formula non è possibile, l'ambiente di creazione indicherà la parte che non può essere delegata con un avviso. Quando possibile, è consigliabile modificare la formula per evitare funzionalità e operatori che non possono essere delegati. L'elenco di deleghe indica le origini dati e le operazioni che possono essere delegate.

Se la delega non è possibile, Power Apps utilizzerà solo un piccolo set di record sui quale lavorare in locale. Le funzioni di filtro e ordinamento opereranno solo su un set ridotto di record. Che cosa è disponibile nella Raccolta potrebbe non essere la storia completa, che potrebbe confondere gli utenti.

Consultare panoramica delega per ulteriori informazioni.

Sintassi

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

  • Table: obbligatorio. La tabella in cui eseguire la ricerca.
  • Formula(s): obbligatorio. La formula in base alla quale viene valutato ogni record della tabella. La funzione restituisce tutti i record risultanti in true. Puoi fare riferimento alle colonne all'interno della tabella. Se si specificano più formule, i risultati di tutte le formule vengono combinati con la funzione And.

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

  • Table: obbligatorio. La tabella in cui eseguire la ricerca.
  • SearchString - Required. La stringa da cercare. Se è blank o una stringa vuota, vengono restituiti tutti i record.
  • Column: obbligatorio. I nomi delle colonne all'interno della tabella in cui eseguire la ricerca. Se SearchString viene trovato nei dati di una di queste colonne come corrispondenza parziale, verrà restituito il record completo.

Nota

Nelle Power Apps precedenti alla versione 3.24042, i nomi delle colonne per la funzione Cerca erano specificati con una stringa di testo utilizzando virgolette doppie e se collegati a un origine dati dovevano anche essere nomi logici. Ad esempio, è stato utilizzato il nome logico "cr43e_name" con virgolette doppie al posto di nome visualizzato Nome senza virgolette. Per SharePoint e le origini dati Excel che contengono nomi di colonne con spazi, ogni spazio è stato specificato con "_x0020_", ad esempio "Nome colonna" come "Nome_colonna_x0020". Dopo questa versione, tutte le app sono state aggiornate automaticamente alla nuova sintassi descritta in questo articolo.

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

  • Table: obbligatorio. La tabella in cui eseguire la ricerca. Nell'interfaccia utente, la sintassi viene visualizzata come origine sopra la casella di funzione.
  • Formula: obbligatorio. La formula in base alla quale viene valutato ogni record della tabella. La funzione restituisce il primo record risultante in true. Puoi fare riferimento alle colonne all'interno della tabella. Nell'interfaccia utente, la sintassi viene visualizzata come condizione sopra la casella di funzione.
  • ReductionFormula: facoltativo. Questa formula viene valutata sul record trovato, riducendo il record a un valore singolo. Puoi fare riferimento alle colonne all'interno della tabella. Se non si usa questo parametro, la funzione restituisce il record completo dalla tabella. Nell'interfaccia utente, la sintassi viene visualizzata come risultato sopra la casella di funzione.

Esempi

Negli esempi seguenti viene usata l'origine datiIceCream:

Origine dati IceCream.

Formula Description Result
Filter( IceCream, OnOrder > 0 ) Restituisce i record in cui OnOrder è maggiore di zero. Filtrare in base a OnOrder.
Filter( IceCream, Quantity + OnOrder > 225 ) Restituisce i record in cui la somma delle colonne Quantity e OnOrder è maggiore di 225. Filtrare in base a Quantity e OnOrder.
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. Filtrare indipendentemente da minuscolo/maiuscolo.
Filter(IceCream, Quantity < 10 && OnOrder < 20) Restituisce i record in cui il valore Quantity è inferiore a 10 e il valore OnOrder è minore di 20. Poiché nessun record corrisponde a questi criteri, viene restituita una tabella vuota. Filtrare in base a Quantity.
Search(IceCream, "choc", Flavor) Restituisce i record in cui è inclusa la stringa "choc" nella colonna Flavor, senza distinzione tra lettere maiuscole o minuscole. Cercare elementi.
Search(IceCream, "", Flavor) Poiché il termine di ricerca è vuoto, vengono restituiti tutti i record. Cercare tutti gli elementi.
LookUp( IceCream, Flavor = "Chocolate", Quantity ) Cerca un record con Flavor uguale a "Cioccolato", di cui è presente uno. Per il primo record trovato, restituisce il valore Quantity di tale record. 100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) Cerca un record con il valore Quantity maggiore di 150, di cui ce ne sono più di uno. Per il primo record trovato, ovvero Flavor "Vanilla", restituisce la somma delle colonne Quantity e OnOrder. 250
LookUp( IceCream, Flavor = "Pistachio", OnOrder ) Cerca un record con Flavor uguale a "Pistachio", di cui non è presente nessuno. Poiché non vengono trovati record, Lookup restituisce blank. vuoto
LookUp( IceCream, Flavor = "Vanilla" ) Cerca un record con Flavor uguale a "Vaniglia", di cui è presente uno. Poiché non è stata specificata alcuna formula di riduzione, viene restituito l'intero record. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Filtro con colonne di scelta

L'esempio seguente utilizza la tabella Account in Microsoft Dataverse come origine dati. Questo esempio mostra come Filtrare l'elenco di account in base ai valori di controllo Combo box selezionata:

Procedura dettagliata

  1. Apri un'app vuota.

  2. Aggiungi una nuova schermata selezionando l'opzione Nuova schermata.

  3. Nella scheda Inserisci seleziona Raccolta e quindi Verticale.

  4. Nella scheda Proprietà del riquadro di destra apri Origine dati quindi seleziona Account.

  5. (Facoltativo) Nell'elenco Layout, seleziona diverse opzioni.

  6. Nella scheda Inserisci seleziona Input e quindi Casella combinata. Ripeti il passaggio per aggiungere altri due controlli combo box.

  7. Per ogni controllo combo box, nella scheda Proprietà del riquadro di destra apri Origine dati quindi seleziona Account. Seleziona Modifica accanto all'opzione Campi e quindi seleziona i valori Testo principale e SearchField. Il Testo principale deve essere la colonna delle scelte che desideri aggiungere alla casella combinata. Ripetere il passaggio per altri due controlli combo box.

    Impostazione dei valori di casella combinata.

  8. Ora seleziona il controllo Gallery e imposta la proprietà Items sulla formula seguente:

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

    Origine dati Account.

Esperienza utente di ricerca

Negli esempi seguenti viene usata l'origine datiIceCream:

In molte app puoi digitare uno o più caratteri in una casella di ricerca per filtrare un elenco di record in un set di dati molto grande. Mentre digiti, l'elenco visualizza solo i record che soddisfano i criteri di ricerca.

Gli esempi nella parte rimanente di questo articolo mostrano i risultati di ricerca in un elenco, denominato Clienti, che contiene i dati seguenti:

Cercare clienti.

Per creare questa origine dati come raccolta, crea un controllo Button e impostane la proprietà OnSelect su questa 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" } ) )

Come illustrato in questo esempio, puoi visualizzare un elenco di record in un controllo di raccolta nella parte inferiore della schermata. Nella parte superiore della schermata puoi aggiungere un controllo di Text input denominato SearchInput, in modo che gli utenti possono specificare i record a cui sono interessati.

Cercare utilizzando SearchInput.

Mentre l'utente digita caratteri in SearchInput, i risultati della raccolta vengono filtrati automaticamente. 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. Se l'utente digita co nella casella di ricerca, la raccolta visualizza i risultati seguenti:

Cercare con StartsWith.

Per applicare un filtro basato sulla colonna Name, imposta la proprietà Items del controllo della raccolta su una di queste formule:

Formula Descrizione Risultato
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. Il test non fa distinzione tra lettere maiuscole e minuscole. Se l'utente digita co nella casella di ricerca, la raccolta visualizza Colleen Jones e Cole Miller. La raccolta non visualizza Mike Collins perché la colonna Name per tale record non inizia con la stringa di ricerca. Filtrare con StartsWith.
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. Il test non fa distinzione tra lettere maiuscole e minuscole. 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. Filtrare con SearchInput.
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. Devi racchiudere il nome della colonna tra virgolette doppie. Ricerca clienti.

Puoi espandere la ricerca per includere la colonna Company e la colonna Name:

Formula Descrizione Risultato
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). L'||operatore è true se anche la funzione StartsWith è true. Filtrare i clienti con StartsWith.
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. Filtrare i clienti con Searchinput.
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. La funzione Search è più semplice da leggere e scrivere della funzione Filter se si vogliono specificare più colonne e più operatori in.  Cercare clienti con SearchInput.