Funzioni Sort e SortByColumns

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

Ordina una tabella.

Nota

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

Descrizione

La funzione Sort ordina una tabella in base a una formula.

La formula viene valutata per ogni record della tabella e i risultati vengono usati per ordinare la tabella stessa. La formula deve restituire un numero, una stringa o un valore booleano. Non può avere come risultato una tabella o un record.

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.

Per ordinare prima in base a una colonna e quindi in base a un'altra colonna, incorpora una formula Sort all'interno di un'altra. Ad esempio, per ordinare una tabella Contatti prima in base alla colonna Cognome e quindi in base alla colonna Nome, puoi usare la formula seguente: Sort( Sort( Contatti, Cognome ), Nome )

Per ordinare una tabella in base a una o più colonne è possibile usare anche la funzione SortByColumns.

L'elenco di parametri per la funzione SortByColumns fornisce i nomi delle colonne in base a cui eseguire l'ordinamento, oltre alla direzione di ordinamento per colonna. L'ordinamento viene eseguito secondo l'ordine dei parametri (prima in base alla prima colonna, poi in base alla seconda e così via). I nomi delle colonne vengono specificati sotto forma di stringa e, se vengono inclusi direttamente nell'elenco dei parametri, devono essere indicati tra virgolette doppie. Ad esempio, SortByColumns (CustomerTable, "Cognome").

Puoi combinare la funzione SortByColumns con un controllo di tipo Drop down o List box per consentire agli utenti di selezionare la colonna in base alla quale eseguire l'ordinamento.

Oltre all'ordinamento crescente o decrescente, la funzione SortByColumns può eseguire anche l'ordinamento in base a una tabella di valori di una singola colonna. Ad esempio, puoi ordinare i record in base al nome dei giorni della settimana specificando [ "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato", "Domenica" ] come parametri di ordinamento. Verranno visualizzati per primi i record contenenti Lunedì, seguiti da quelli con Martedì e così via. I record individuati non inclusi nella tabella di ordinamento vengono inseriti alla fine dell'elenco.

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 Sort e SortByColumn non modificano una tabella, ma accettano una tabella come argomento e restituiscono una nuova tabella ordinata. 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

Sort( Table, Formula [, SortOrder ] )

  • Table: obbligatorio. Tabella da ordinare.
  • Formula: obbligatorio. La formula viene valutata per ogni record della tabella e i risultati vengono usati per ordinare la tabella stessa. Puoi fare riferimento alle colonne all'interno della tabella.
  • SortOrder - Facoltativo. Specifica SortOrder.Descending per ordinare la tabella in ordine decrescente. SortOrder.Ascending è il valore predefinito.

SortByColumns( Table, ColumnName1 [, SortOrder1, ColumnName2, SortOrder2, ... ] )

  • Table: obbligatorio. Tabella da ordinare.

  • ColumnName(s): obbligatorio. I nomi delle colonne in base a cui eseguire l'ordinamento, indicati in forma di stringa.

  • SortOrder(s) - Facoltativo. SortOrder.Ascending o SortOrder.Descending. SortOrder.Ascending è il valore predefinito. Se vengono forniti più valori ColumnName(s), tutte le colonne tranne l'ultima devono includere un parametro SortOrder.

    Nota

    Per origini dati SharePoint ed Excel che contengono nomi di colonna con spazi, specifica ogni spazio come "_x0020_". Ad esempio, specifica "Nome colonna" come "Column_x0020_Name".

SortByColumns( Table, ColumnName, SortOrderTable )

  • Table: obbligatorio. Tabella da ordinare.

  • ColumnName: obbligatorio. Il nome della colonna in base alla quale eseguire l'ordinamento, indicato in forma di stringa.

  • SortOrderTable: obbligatorio. Tabella di valori di una singola colonna in base alla quale eseguire l'ordinamento.

    Nota

    Per origini dati SharePoint ed Excel che contengono nomi di colonna con spazi, specifica ogni spazio come "_x0020_". Ad esempio, specifica "Nome colonna" come "Column_x0020_Name".

Esempi

Per gli esempi riportati di seguito verrà usata l'origine datiIceCream, che contiene i dati della tabella seguente:

Esempio IceCream.

Formula Descrizione Risultato
Sort( IceCream, Flavor )

SortByColumns( IceCream, "Flavor" )
Ordina IceCream in base alla colonna Flavor. La colonna Flavor contiene stringhe, motivo per cui la tabella viene ordinata alfabeticamente. Per impostazione predefinita, l'ordinamento è crescente. Ordine alfabetico.
Sort( IceCream, Quantity )

SortByColumns( IceCream, "Quantity" )
Ordina IceCream in base alla colonna Quantity. La colonna Quantity contiene numeri, motivo per cui la tabella viene ordinata numericamente. Per impostazione predefinita, l'ordinamento è crescente. Ordine numerico.
Sort( IceCream, Quantity, SortOrder.Descending )

SortByColumns( IceCream, "Quantity", SortOrder.Descending )
Ordina IceCream in base alla colonna Quantity. La colonna Quantity contiene numeri, motivo per cui viene eseguito un ordinamento numerico. È stato specificato l'ordinamento decrescente. Ordine numerico e decrescente.
Sort( IceCream, Quantity + OnOrder ) Ordina IceCream in base alla somma delle colonne Quantity e OnOrder per ciascun singolo record. La somma è un numero, motivo per cui la tabella viene ordinata numericamente. Per impostazione predefinita, l'ordinamento è crescente. Poiché stiamo eseguendo l'ordinamento in base a una formula e non in base a valori di colonna non elaborati, non esiste un'alternativa equivalente all'uso di SortByColumns. Ordine numerico e crescente.
Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( IceCream, "OnOrder", SortOrder.Ascending, "Quantity", SortOrder.Ascending )
Ordina IceCream prima in base alla colonna OnOrder e quindi in base alla colonna Quantity. Nota che nel primo ordinamento eseguito in base alla colonna OnOrder il gusto "Pistachio" viene prima di "Vanilla". I due record vengono quindi inseriti nella posizione appropriata in base alla colonna Quantity. Ordinati con pistacchio sopra vaniglia.
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) Ordina IceCream in base alla colonna Flavor sulla base di una singola tabella di colonne contenente "Pistachio" e "Strawberry". I record con Flavor "Pistachio" verranno visualizzati per primi nell'elenco dei risultati, seguiti da quelli contenenti "Strawberry". I valori della tabella Flavor che non corrispondono, ad esempio "Vanilla", verranno visualizzati dopo gli elementi che corrispondono. Ordinati con pistacchio sopra fragola.

Procedura dettagliata

Per eseguire questi esempi, crea l'origine dati IceCream sotto forma di raccolta:

  1. Aggiungi un pulsante e impostane la proprietà OnSelect su questa formula:
    ClearCollect( IceCream, { Flavor: "Chocolate", Quantity: 100, OnOrder: 150 }, { Flavor: "Vanilla", Quantity: 200, OnOrder: 20 }, { Flavor: "Strawberry", Quantity: 300, OnOrder: 0 }, { Flavor: "Mint Chocolate", Quantity: 60, OnOrder: 100 }, { Flavor: "Pistachio", Quantity: 200, OnOrder: 10 } )
  2. Visualizza in anteprima l'app, seleziona il pulsante e quindi premi ESC per tornare all'area di lavoro predefinita.
  3. Seleziona Raccolte dal menu File per visualizzare la raccolta appena creata, quindi premi ESC per tornare all'area di lavoro predefinita.

Sort

  1. Aggiungi un altro pulsante e impostane la proprietà OnSelect sulla formula seguente:
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    La formula precedente crea una seconda raccolta, denominata SortByFlavor, che contiene gli stessi dati della raccolta IceCream. La nuova raccolta, tuttavia, riporta i dati ordinati alfabeticamente in ordine crescente in base alla colonna Flavor.

  2. Premi F5, seleziona il nuovo pulsante e quindi premi ESC.

  3. Seleziona Raccolte dal menu File per visualizzare entrambe le raccolte e quindi premi ESC per tornare all'area di lavoro predefinita.

  4. Ripeti gli ultimi tre passaggi, ma modifica il nome della raccolta che vuoi creare e sostituisci la formula Sort con una formula diversa tratta dalle tabelle di esempio di questa sezione che usano Sort.

SortByColumns

  1. Aggiungi un altro pulsante e impostane la proprietà OnSelect sulla formula seguente:
    ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", SortOrder.Ascending, "Flavor", SortOrder.Descending ) )

    La formula precedente crea una terza raccolta, denominata SortByQuantity, che contiene gli stessi dati della raccolta IceCream. La nuova raccolta, tuttavia, contiene i dati ordinati numericamente in ordine crescente in base alla colonna Quantity e quindi in ordine decrescente in base alla colonna Flavor.

  2. Premi F5, seleziona il nuovo pulsante e quindi premi ESC.

  3. Seleziona Raccolte dal menu File per visualizzare tutte e tre le raccolte e quindi premi ESC per tornare all'area di lavoro predefinita.

  4. Ripeti gli ultimi tre passaggi, ma modifica il nome della raccolta che vuoi creare e sostituisci la formula SortByColumns con una formula diversa tratta dalle tabelle di esempio di questa sezione che usano SortByColumns.