Funzioni Sort e SortByColumns in PowerAppsSort and SortByColumns functions in PowerApps

Ordina una tabella.Sorts a table.

DescrizioneDescription

La funzione Sort ordina una tabella in base a una formula.The Sort function sorts a table based on a formula.

La formula viene valutata per ogni record della tabella e i risultati vengono usati per ordinare la tabella stessa.The formula is evaluated for each record of the table, and the results are used to sort the table. La formula deve avere come risultato un numero, una stringa o un valore booleano. Non può avere come risultato una tabella o un record.The formula must result in a number, a string, or a Boolean value; it can't result in a table or a record.

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.

Per ordinare prima in base a una colonna e quindi in base a un'altra colonna, incorporare una formula Sort all'interno di un'altra.To sort first by one column and then by another, you embed a Sort formula within another. Ad esempio, per ordinare una tabella Contatti prima in base alla colonna Cognome e quindi in base alla colonna Nome, è possibile usare la formula seguente: Sort( Sort( Contatti, Cognome ), Nome )For example, you can use this formula to sort a Contacts table first by a LastName column and then by a FirstName column: Sort( Sort( Contacts, LastName ), FirstName )

Per ordinare una tabella in base a una o più colonne è possibile usare anche la funzione SortByColumns.The SortByColumns function can also be used to sort a table based on one or more columns.

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.The parameter list for SortByColumns provides the names of the columns to sort by and the sort direction per column. L'ordinamento viene eseguito secondo l'ordine dei parametri (prima in base alla prima colonna, poi in base alla seconda e così via).Sorting is performed in the order of the parameters (sorted first by the first column, then the second, and so on). 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.Column names are specified as strings, requiring double quotes if directly included in the parameter list. Ad esempio, SortByColumns (CustomerTable, "Cognome").For example, SortByColumns( CustomerTable, "LastName" ).

È possibile combinare la funzione SortByColumns con un controllo di tipo elenco a discesa o casella di riepilogo per consentire agli utenti di selezionare la colonna in base a cui eseguire l'ordinamento.You can combine SortByColumns with a Drop down or List box control to enable users to select which column to sort by.

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.In addition to sorting ascending or descending, SortByColumns can sort based on a single column table of values. Ad esempio, è possibile ordinare i record in base al nome dei giorni della settimana specificando [ "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato", "Domenica" ] come parametri di ordinamento.For example, you can sort record based on the name of a day of the week by supplying [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ] as the sort order. Verranno visualizzati per primi i record contenenti Lunedì, seguiti da quelli con Martedì e così via.All records which have Monday" will come first, followed by Tuesday, and so on. I record individuati non inclusi nella tabella di ordinamento vengono inseriti alla fine dell'elenco.Records found that do not appear in the sort table are put at the end of the list.

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 Sort e SortByColumn non modificano una tabella, ma accettano una tabella come argomento e restituiscono una nuova tabella ordinata.Sort and SortByColumn don't modify a table; instead they take a table as an argument and return a new table that has been sorted. 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

Sort( Table, Formula [, SortOrder ] )Sort( Table, Formula [, SortOrder ] )

  • Table - Obbligatorio.Table - Required. Tabella da ordinare.Table to sort.
  • Formula - Obbligatorio.Formula - Required. La formula viene valutata per ogni record della tabella e i risultati vengono usati per ordinare la tabella stessa.This formula is evaluated for each record of the table, and the results are used to sort the table. È possibile fare riferimento alle colonne all'interno della tabella.You can reference columns within the table.
  • SortOrder - Facoltativo.SortOrder - Optional. Specificare SortOrder.Descending per ordinare la tabella in ordine decrescente.Specify SortOrder.Descending to sort the table in descending order. SortOrder.Ascending è il valore predefinito.SortOrder.Ascending is the default value.

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

  • Table - Obbligatorio.Table - Required. Tabella da ordinare.Table to sort.
  • ColumnName(s) - Obbligatorio.ColumnName(s) - Required. I nomi delle colonne in base a cui eseguire l'ordinamento, indicati in forma di stringa.The column names to sort on, as strings.
  • SortOrder(s) - Facoltativo.SortOrder(s) - Optional. SortOrder.Ascending o SortOrder.Descending.SortOrder.Ascending or SortOrder.Descending. SortOrder.Ascending è il valore predefinito.SortOrder.Ascending is the default. Se vengono forniti più valori ColumnName(s), tutte le colonne tranne l'ultima devono includere un parametro SortOrder.If multiple ColumnNames are supplied, all but the last column must include a SortOrder.

    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".

SortByColumns( Table, ColumnName, SortOrderTable )SortByColumns( Table, ColumnName, SortOrderTable )

  • Table - Obbligatorio.Table - Required. Tabella da ordinare.Table to sort.
  • ColumnName - Obbligatorio.ColumnName - Required. Il nome della colonna in base a cui eseguire l'ordinamento, indicato in forma di stringa.The column name to sort on, as strings.
  • SortOrderTable - Obbligatorio.SortOrderTable - Required. Tabella di valori di una singola colonna in base a cui eseguire l'ordinamento.Single column table of values to sort by.

    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".

EsempiExamples

Per gli esempi riportati di seguito verrà usata l'origine dati IceCream, contenente i dati della tabella seguente:For the following examples, we'll use the IceCream data source, which contains the data in this table:

FormulaFormula DescrizioneDescription RisultatoResult
Sort( IceCream, Flavor )Sort( IceCream, Flavor )

SortByColumns( IceCream, "Flavor" )SortByColumns( IceCream, "Flavor" )
Ordina IceCream in base alla colonna Flavor.Sorts IceCream by its Flavor column. La colonna Flavor contiene stringhe, motivo per cui la tabella viene ordinata alfabeticamente.The Flavor column contains strings, so the table is sorted alphabetically. Per impostazione predefinita, l'ordinamento è crescente.By default, the sort order is ascending.
Sort( IceCream, Quantity )Sort( IceCream, Quantity )

SortByColumns( IceCream, "Quantity" )SortByColumns( IceCream, "Quantity" )
Ordina IceCream in base alla colonna Quantity.Sorts IceCream by its Quantity column. La colonna Quantity contiene numeri, motivo per cui la tabella viene ordinata numericamente.The Quantity column contains numbers, so the table is sorted numerically. Per impostazione predefinita, l'ordinamento è crescente.By default, the sort order is ascending.
Sort( IceCream, Quantity, SortOrder.Descending )Sort( IceCream, Quantity, SortOrder.Descending )

SortByColumns( IceCream, "Quantity", SortOrder.Descending )SortByColumns( IceCream, "Quantity", SortOrder.Descending )
Ordina IceCream in base alla colonna Quantity.Sorts IceCream by its Quantity column. La colonna Quantity contiene numeri, motivo per cui viene eseguito un ordinamento numerico.The Quantity column contains numbers, so the sort is done numerically. È stato specificato l'ordinamento decrescente.The sort order has been specified as descending.
Sort( IceCream, Quantity + OnOrder )Sort( IceCream, Quantity + OnOrder ) Ordina IceCream in base alla somma delle colonne Quantity e OnOrder per ciascun singolo record.Sorts IceCream by the sum of its Quantity and OnOrder columns for each record individually. La somma è un numero, motivo per cui la tabella viene ordinata numericamente.The sum is a number, so the table is sorted numerically. Per impostazione predefinita, l'ordinamento è crescente.By default, the sort order is ascending. Poiché si sta 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.Since we are sorting by a formula and not by raw column values, there is no equivalent using SortByColumns.
Sort( Sort( IceCream, OnOrder ), Quantity )Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( IceCream, "OnOrder", Ascending, "Quantity", Ascending )SortByColumns( IceCream, "OnOrder", Ascending, "Quantity", Ascending )
Ordina IceCream prima in base alla colonna OnOrder e quindi in base alla colonna Quantity.Sorts IceCream first by its OnOrder column, and then by its Quantity column. Si noti 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.Note that "Pistachio" rose above "Vanilla" in the first sort based on OnOrder, and then together they moved to their appropriate place based on Quantity.
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] )SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) Ordina IceCream in base alla colonna Flavor sulla base di una singola tabella di colonne contenente "Pistachio" e "Strawberry".Sorts IceCream by it's Flavor column based on the single column table containing "Pistachio" and "Strawberry". I record con Flavor "Pistachio" verranno visualizzati per primi nell'elenco dei risultati, seguiti da quelli contenenti "Strawberry".Records which have a Flavor of "Pistachio" will appear first in the result, followed by records that contain "Strawberry". I valori della tabella Flavor che non corrispondono, ad esempio "Vanilla", verranno visualizzati dopo gli elementi che corrispondono.For values in the Flavor column that are not matched, such as "Vanilla", they will appear after the items that were matched.

Procedura dettagliataStep by step

Per eseguire questi esempi, creare l'origine dati IceCream sotto forma di raccolta:To run these examples yourself, create the IceCream data source as a collection:

  1. Aggiungere un pulsante e impostarne la proprietà OnSelect su questa formula:Add a button, and set its OnSelect property to this 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 } )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. Visualizzare in anteprima l'app, selezionare il pulsante e quindi premere ESC per tornare all'area di lavoro predefinita.Preview the app, select the button, and then press Esc to return to the default workspace.
  3. Selezionare Collections (Raccolte) dal menu File per visualizzare la raccolta appena creata, quindi premere ESC per tornare all'area di lavoro predefinita.Select Collections on the File menu to display the collection that you just created, and then press Esc to return to the default workspace.

SortSort

  1. Aggiungere un altro pulsante e impostarne la proprietà OnSelect sulla formula seguente:Add another button, and set its OnSelect property to this formula:
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) ) ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    La formula precedente crea una seconda raccolta, denominata SortByFlavor, che contiene gli stessi dati della raccolta IceCream.The previous formula creates a second collection, named SortByFlavor, that contains the same data as Ice Cream. La nuova raccolta, tuttavia, riporta i dati ordinati alfabeticamente in ordine crescente in base alla colonna Flavor.However, the new collection contains the data sorted alphabetically by the Flavor column in ascending order.

  2. Premere F5, selezionare il nuovo pulsante e quindi premere ESC.Press F5, select the new button, and then press Esc.
  3. Selezionare Collections (Raccolte) dal menu File per visualizzare entrambe le raccolte e quindi premere ESC per tornare all'area di lavoro predefinita.Select Collections on the File menu to display both collections, and then press Esc to return to the default workspace.
  4. Ripetere gli ultimi tre passaggi, ma modificare il nome della raccolta che si vuole creare e sostituire la formula Sort con una formula diversa tratta dalle tabelle di esempio di questa sezione che usano Sort.Repeat the last three steps, but change the name of the collection that you want to create, and replace the Sort formula with a different formula from the table of examples earlier in this section that uses Sort.

SortByColumnsSortByColumns

  1. Aggiungere un altro pulsante e impostarne la proprietà OnSelect sulla formula seguente:Add another button, and set its OnSelect property to this formula:
    ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", Ascending, "Flavor", Descending ) ) ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", Ascending, "Flavor", Descending ) )

    La formula precedente crea una terza raccolta, denominata SortByQuantity, che contiene gli stessi dati della raccolta IceCream.The previous formula creates a third collection, named SortByQuantity, that contains the same data as Ice Cream. 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.However, the new collection contains the data sorted numerically by the Quanity column in ascending order, and then by the Flavor column in descending order.

  2. Premere F5, selezionare il nuovo pulsante e quindi premere ESC.Press F5, select the new button, and then press Esc.
  3. Selezionare Collections (Raccolte) dal menu File per visualizzare tutte e tre le raccolte e quindi premere ESC per tornare all'area di lavoro predefinita.Select Collections on the File menu to display all three collections, and then press Esc to return to the default workspace.
  4. Ripetere gli ultimi tre passaggi, ma modificare il nome della raccolta che si vuole creare e sostituire la formula SortByColumns con una formula diversa tratta dalle tabelle di esempio di questa sezione che usano SortByColumns.Repeat the last three steps, but change the name of the collection that you want to create, and replace the SortByColumns formula with a different formula from the table of examples earlier in this section that uses SortByColumns.