Funções Sort e SortByColumns no PowerAppsSort and SortByColumns functions in PowerApps

Classifica uma tabela.Sorts a table.

DescriçãoDescription

A função Sort classifica uma tabela com base em uma fórmula.The Sort function sorts a table based on a formula.

A fórmula é avaliada para cada registro da tabela, e os resultados são usados para classificá-la.The formula is evaluated for each record of the table, and the results are used to sort the table. A fórmula deve resultar em um número, uma cadeia de caracteres ou um valor booliano; não pode resultar em uma tabela ou registro.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.

Para classificar primeiro por uma coluna e, em seguida, por outra, é necessário inserir uma fórmula Sort dentro de outra.To sort first by one column and then by another, you embed a Sort formula within another. Por exemplo, é possível usar esta fórmula para classificar uma tabela de Contatos primeiro por uma coluna LastName e, em seguida, por uma coluna FirstName: 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 )

A função SortByColumns também pode ser usada para classificar uma tabela com base em uma ou mais colunas.The SortByColumns function can also be used to sort a table based on one or more columns.

A lista de parâmetros para a função SortByColumns fornece os nomes das colunas pelas quais classificar e a direção de classificação por coluna.The parameter list for SortByColumns provides the names of the columns to sort by and the sort direction per column. A classificação é feita na ordem dos parâmetros (classificados primeiro pela primeira coluna, em seguida, a segunda, e assim por diante).Sorting is performed in the order of the parameters (sorted first by the first column, then the second, and so on). Os nomes de coluna são especificados como cadeias de caracteres, que exigem aspas duplas se incluídos diretamente na lista de parâmetros.Column names are specified as strings, requiring double quotes if directly included in the parameter list. Por exemplo, SortByColumns( CustomerTable, "LastName" ).For example, SortByColumns( CustomerTable, "LastName" ).

É possível combinar a função SortByColumns com um controle Suspenso ou de Caixa de listagem para permitir que os usuários selecionem por qual coluna classificar.You can combine SortByColumns with a Drop down or List box control to enable users to select which column to sort by.

Além da classificação crescente ou decrescente, a função SortByColumns pode classificar com base em uma tabela de valores de coluna única.In addition to sorting ascending or descending, SortByColumns can sort based on a single column table of values. Por exemplo, é possível classificar o registro com base no nome de um dia da semana, fornecendo [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ] como ordem de classificação.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. Todos os registros que têm segunda-feira" virão primeiro, seguidos por terça-feira, e assim por diante.All records which have Monday" will come first, followed by Tuesday, and so on. Os registros encontrados que não aparecem na tabela classificada são colocados no final da lista.Records found that do not appear in the sort table are put at the end of the list.

Tabelas são um valor no PowerApps, assim como cadeias de caracteres ou números.Tables are a value in PowerApps, just like a string or number. Elas podem ser passadas e retornadas para funções.They can be passed to and returned from functions. As funções Sort e SortByColumn não modificam uma tabela; em vez disso, elas a consideram um argumento e retornam uma nova tabela classificada.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. Consulte Trabalhando com tabelas para obter mais detalhes.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.

SintaxeSyntax

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

  • Table – Obrigatório.Table - Required. Tabela para classificar.Table to sort.
  • Formula – Obrigatório.Formula - Required. A fórmula é avaliada para cada registro da tabela, e os resultados são usados para classificá-la.This formula is evaluated for each record of the table, and the results are used to sort the table. É possível referenciar colunas dentro da tabela.You can reference columns within the table.
  • SortOrder – Opcional.SortOrder - Optional. Especifique SortOrder.Descending para classificar a tabela em ordem decrescente.Specify SortOrder.Descending to sort the table in descending order. SortOrder.Ascending é o valor padrão.SortOrder.Ascending is the default value.

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

  • Table – Obrigatório.Table - Required. Tabela para classificar.Table to sort.
  • ColumnName(s) – Obrigatório.ColumnName(s) - Required. Os nomes da coluna para se classificar, como cadeias de caracteres.The column names to sort on, as strings.
  • SortOrder(s) – Opcional.SortOrder(s) - Optional. SortOrder.Ascending ou SortOrder.Descending.SortOrder.Ascending or SortOrder.Descending. SortOrder.Ascending é o padrão.SortOrder.Ascending is the default. Se vários ColumnNames forem fornecidos, todos, exceto a última coluna, devem incluir um SortOrder.If multiple ColumnNames are supplied, all but the last column must include a SortOrder.

    Observação: nas fontes de dados do Excel e do SharePoint que contêm nomes de colunas com espaços, especifique cada espaço como "_x0020_".Note: For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Por exemplo, especifique "Nome da Coluna" como "Nome_x0020_da_x0020_Coluna".For example, specify "Column Name" as "Column_x0020_Name".

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

  • Table – Obrigatório.Table - Required. Tabela para classificar.Table to sort.
  • ColumnName – Obrigatório.ColumnName - Required. O nome da coluna para se classificar, como cadeias de caracteres.The column name to sort on, as strings.
  • SortOrderTable – Obrigatório.SortOrderTable - Required. Tabela de valores de coluna única para se classificar.Single column table of values to sort by.

    Observação: nas fontes de dados do Excel e do SharePoint que contêm nomes de colunas com espaços, especifique cada espaço como "_x0020_".Note: For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Por exemplo, especifique "Nome da Coluna" como "Nome_x0020_da_x0020_Coluna".For example, specify "Column Name" as "Column_x0020_Name".

ExemplosExamples

Para os exemplos a seguir, usaremos a fonte de dados IceCream, que contém os dados nesta tabela:For the following examples, we'll use the IceCream data source, which contains the data in this table:

FórmulaFormula DescriçãoDescription ResultadoResult
Sort( IceCream, Flavor )Sort( IceCream, Flavor )

SortByColumns( IceCream, "Flavor" )SortByColumns( IceCream, "Flavor" )
Classifica o IceCream pela coluna Flavor.Sorts IceCream by its Flavor column. A coluna Flavor contém cadeias de caracteres para que a tabela seja classificada em ordem alfabética.The Flavor column contains strings, so the table is sorted alphabetically. Por padrão, a ordem de classificação é crescente.By default, the sort order is ascending.
Sort( IceCream, Quantity )Sort( IceCream, Quantity )

SortByColumns( IceCream, "Quantity" )SortByColumns( IceCream, "Quantity" )
Classifica o IceCream pela coluna Quantity.Sorts IceCream by its Quantity column. A coluna Quantity contém números para que a tabela seja classificada numericamente.The Quantity column contains numbers, so the table is sorted numerically. Por padrão, a ordem de classificação é 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 )
Classifica o IceCream pela coluna Quantity.Sorts IceCream by its Quantity column. A coluna Quantity contém números para que a classificação seja feita numericamente.The Quantity column contains numbers, so the sort is done numerically. A ordem de classificação foi especificada como decrescente.The sort order has been specified as descending.
Sort( IceCream, Quantity + OnOrder )Sort( IceCream, Quantity + OnOrder ) Classifica IceCream pela soma de sua Quantity e colunas OnOrder para cada registro individual.Sorts IceCream by the sum of its Quantity and OnOrder columns for each record individually. A soma é um número, assim, a tabela será classificada numericamente.The sum is a number, so the table is sorted numerically. Por padrão, a ordem de classificação é crescente.By default, the sort order is ascending. Como estamos classificando por uma fórmula, e não pelos valores brutos da coluna, não há nenhum equivalente usando 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 )
Classifica IceCream primeiro pela coluna OnOrder e, em seguida, pela coluna Quantity.Sorts IceCream first by its OnOrder column, and then by its Quantity column. Observe que "Pistachio" superou "Vanilla" na primeira classificação baseada em OnOrder, e juntos eles se moveram para o local apropriado com base em 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" ] ) Classifica IceCream pela coluna Flavor com base na tabela de coluna única que contém "Pistachio" e "Strawberry".Sorts IceCream by it's Flavor column based on the single column table containing "Pistachio" and "Strawberry". Os registros que têm o Flavor "Pistachio" aparecerão primeiro no resultado, seguidos pelos registros que contêm "Strawberry".Records which have a Flavor of "Pistachio" will appear first in the result, followed by records that contain "Strawberry". Os valores da coluna Flavor que não tiverem correspondentes, como "Vanilla", aparecerão após os itens combinados.For values in the Flavor column that are not matched, such as "Vanilla", they will appear after the items that were matched.

Passo a passoStep by step

Para executar esses exemplos, crie a fonte de dados IceCream como uma coleção:To run these examples yourself, create the IceCream data source as a collection:

  1. Adicione um botão e defina a propriedade OnSelect para esta fórmula: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. Visualize o aplicativo, selecione o botão e pressione Esc para retornar ao espaço de trabalho padrão.Preview the app, select the button, and then press Esc to return to the default workspace.
  3. Selecione Coleções no menu Arquivo para exibir a coleção que você acabou de criar e pressione Esc para retornar ao espaço de trabalho padrão.Select Collections on the File menu to display the collection that you just created, and then press Esc to return to the default workspace.

ClassificarSort

  1. Adicione outro botão e defina a propriedade OnSelect para esta fórmula:Add another button, and set its OnSelect property to this formula:
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) ) ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    A fórmula anterior cria uma segunda coleção, denominada SortByFlavor, que contém os mesmos dados de IceCream.The previous formula creates a second collection, named SortByFlavor, that contains the same data as Ice Cream. No entanto, a nova coleção contém os dados classificados em ordem alfabética pela coluna Flavor, em ordem crescente.However, the new collection contains the data sorted alphabetically by the Flavor column in ascending order.

  2. Pressione F5, selecione o novo botão e pressione Esc.Press F5, select the new button, and then press Esc.
  3. Selecione Coleções no menu Arquivo para exibir as duas coleções e pressione Esc para retornar ao espaço de trabalho padrão.Select Collections on the File menu to display both collections, and then press Esc to return to the default workspace.
  4. Repita as três últimas etapas, mas altere o nome da coleção que deseja criar e substitua a fórmula Sort por uma fórmula diferente da tabela de exemplos mostrada anteriormente nesta seção, que usa a função 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. Adicione outro botão e defina a propriedade OnSelect para esta fórmula: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 ) )

    A fórmula anterior cria uma terceira coleção, denominada SortByQuantity, que contém os mesmos dados de IceCream.The previous formula creates a third collection, named SortByQuantity, that contains the same data as Ice Cream. No entanto, a nova coleção contém os dados classificados numericamente pela coluna Quantity em ordem crescente e, em seguida, pela coluna Flavor em ordem decrescente.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. Pressione F5, selecione o novo botão e pressione Esc.Press F5, select the new button, and then press Esc.
  3. Selecione Coleções no menu Arquivo para exibir as três coleções e pressione Esc para retornar ao espaço de trabalho padrão.Select Collections on the File menu to display all three collections, and then press Esc to return to the default workspace.
  4. Repita as três últimas etapas, mas altere o nome da coleção que deseja criar e substitua a fórmula SortByColumns por uma fórmula diferente da tabela de exemplos mostrada anteriormente nesta seção, que usa a função 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.