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.

I campi del record attualmente in fase di elaborazione sono disponibili nella formula.Fields of the record currently being processed are available within the formula. È sufficiente farvi riferimento per nome, analogamente a qualsiasi altro valore.You simply reference them by name as you would any other value. È anche possibile fare riferimento alle proprietà del controllo e ad altri valori in tutta l'app.You can also reference control properties and other values from throughout your app. Per informazioni dettagliate, vedere gli esempi seguenti e Utilizzo dell'ambito dei record.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, è possibile usare questa formula per ordinare un contatti prima di tutto di tabella da un LastName colonna e quindi in base una FirstName colonna: Sort( Sort( Contacts; LastName ); FirstName )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.

DelegaDelegation

Quando è possibile, PowerApps delegherà le operazioni di filtro e ordinamento all'origine dati e restituirà una pagina di risultati su richiesta.When possible, PowerApps will delegate filter and sort operations to the data source and page through the results on demand. Quando, ad esempio, si avvia un'app che visualizza un controllo Raccolta contenente dati, inizialmente solo il primo set di record verrà trasferito al dispositivo.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. Mentre l'utente scorre, gli altri dati vengono scaricati dall'origine dati.As the user scrolls, additional data is brought down from the data source. In questo modo la fase di avvio dell'app sarà più rapida e sarà possibile accedere a set di dati di grandi dimensioni.The result is a faster start time for the app and access to very large data sets.

La delega tuttavia potrebbe non essere sempre possibile.However, delegation may not always be possible. Le origini dati sono diverse a seconda delle funzioni e degli operatori supportati con la delega.Data sources vary on what functions and operators they support with delegation. Se la delega completa di una formula non è possibile, l'ambiente di creazione contrassegnerà la parte che non può essere delegata con un avviso.If complete delegation of a formula isn't possible, the authoring environment will flag the portion that can't be delegated with a warning. Quando è possibile, prendere in considerazione la possibilità di modificare la formula per evitare le funzioni e gli operatori che non possono essere delegati.When possible, consider changing the formula to avoid functions and operators that can't be delegated. L'elenco di deleghe indica in dettaglio le origini dati e le operazioni che possono essere delegate.The delegation list details which data sources and operations can be delegated.

Se la delega non è possibile, PowerApps scaricherà solo un piccolo set di record da usare in locale.If delegation is not possible, PowerApps will pull down only a small set of records to work on locally. Le funzioni di filtro e ordinamento verranno applicate a un set ridotto di record.Filter and sort functions will operate on a reduced set of records. Il contenuto disponibile nella raccolta potrebbe non essere completo e ciò potrebbe confondere gli utenti.What is available in the Gallery may not be the complete story, which could be confusing to users.

Per altre informazioni, vedere la panoramica della delega.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_" .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_" .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. Tuttavia, la nuova raccolta contiene i dati ordinati numericamente la Quantity colonna in ordine crescente, quindi in base il Flavor colonna in ordine decrescente.However, the new collection contains the data sorted numerically by the Quantity 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.