Funções de Ordenação e SortByColumns no PowerAppsSort and SortByColumns functions in PowerApps

Ordena uma tabela.Sorts a table.

DescriçãoDescription

A função Ordenação ordena uma tabela baseada numa fórmula.The Sort function sorts a table based on a formula.

A fórmula é avaliada para cada registo da tabela e os resultados são utilizados para ordenar a tabela.The formula is evaluated for each record of the table, and the results are used to sort the table. A fórmula deve resultar num número, uma cadeia ou um valor booleano; não pode resultar numa tabela ou num registo.The formula must result in a number, a string, or a Boolean value; it can't result in a table or a record.

Estão disponíveis dentro da fórmula os campos do registo que está a ser processado num dado momento.Fields of the record currently being processed are available within the formula. Basta referenciá-los por nome, como faria com qualquer outro valor.You simply reference them by name as you would any other value. Também pode referenciar propriedades do controlo e outros valores a partir de qualquer parte da sua aplicação.You can also reference control properties and other values from throughout your app. Para obter mais detalhes, veja os exemplos abaixo e trabalhar com o âmbito de registo.For more details, see the examples below and working with record scope.

Para ordenar primeiro por uma coluna e, em seguida, por outra, incorpore uma fórmula de Ordenação dentro de outra.To sort first by one column and then by another, you embed a Sort formula within another. Por exemplo, pode utilizar esta fórmula para ordenar uma tabela de Contactos primeiro por uma coluna de LastName e, em seguida, por uma coluna de 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 utilizada para ordenar uma tabela baseada 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 SortByColumns fornece os nomes das colunas a ordenar e a direção de ordenação por coluna.The parameter list for SortByColumns provides the names of the columns to sort by and the sort direction per column. A ordenação é realizada por ordem de parâmetros (ordenada em primeiro lugar pela primeira coluna e, em seguida, pela segunda e assim sucessivamente).Sorting is performed in the order of the parameters (sorted first by the first column, then the second, and so on). Os nomes das colunas são especificadas como cadeias, que requerem aspas duplas se estiverem diretamente incluídas 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" ).

Pode combinar SortByColumns com um controlo de Lista pendente ou Caixa de listagem para permitir aos utilizadores selecionarem a coluna que pretendem ordenar.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 ordenação ascendente ou descendente, SortByColumns pode ordenar com base numa única coluna de tabela de valores.In addition to sorting ascending or descending, SortByColumns can sort based on a single column table of values. Por exemplo, pode ordenar os registos com base no nome de um dia da semana, ao fornecer ["Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado", "Domingo"] como a sequência de ordenaçã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 registos que tenham Segunda-feira" virão em primeiro lugar, seguido de Terça-feira, e assim sucessivamente.All records which have Monday" will come first, followed by Tuesday, and so on. Os registos encontrados que não aparecem na tabela de ordenação 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.

As Tabelas são um valor no PowerApps, tal como uma cadeia ou um número.Tables are a value in PowerApps, just like a string or number. Podem ser transmitidos a funções e devolvidos das mesmas.They can be passed to and returned from functions. Sort e Sortbycolumn não modificam uma tabela; em vez disso, utilizam uma tabela como um argumento e devolvem uma tabela nova que tenha sido ordenada.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 working with tables (trabalhar com tabelas) para obter mais detalhes.See working with tables for more details.

DelegaçãoDelegation

Sempre que possível, o PowerApps delega as operações de filtragem e ordenação à origem de dados e à página através dos resultados a pedido.When possible, PowerApps will delegate filter and sort operations to the data source and page through the results on demand. Por exemplo, quando inicia uma aplicação que mostra um controlo de Galeria preenchido com dados, inicialmente só o primeiro conjunto de registos é mostrado no 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. À medida que o utilizar percorre o ecrã, são mostrados dados adicionais a partir da origem de dados.As the user scrolls, additional data is brought down from the data source. O resultado é um tempo de início mais rápido para a aplicação e acesso a conjuntos de dados muito grandes.The result is a faster start time for the app and access to very large data sets.

No entanto, a delegação pode não ser sempre possível.However, delegation may not always be possible. As origens de dados suportam diferentes funções e operadores com a delegação.Data sources vary on what functions and operators they support with delegation. Se não for possível fazer a delegação completa de uma fórmula, o ambiente de criação sinalizará a parte que não pode ser delegada com um aviso.If complete delegation of a formula isn't possible, the authoring environment will flag the portion that can't be delegated with a warning. Sempre que possível, considere alterar a fórmula para evitar funções e operadores que não podem ser delegados.When possible, consider changing the formula to avoid functions and operators that can't be delegated. A lista delegações pormenoriza as origens de dados e as operações que podem ser delegadas.The delegation list details which data sources and operations can be delegated.

Se não for possível delegar, o PowerApps extrairá apenas um pequeno conjunto de registos, para trabalhar localmente.If delegation is not possible, PowerApps will pull down only a small set of records to work on locally. As funções de filtrar e ordenar funcionarão num conjunto de registos reduzido.Filter and sort functions will operate on a reduced set of records. O que está disponível na Galeria pode não representar a totalidade, o que pode confundir os utilizadores.What is available in the Gallery may not be the complete story, which could be confusing to users.

Veja a descrição geral da delegação para obter mais informações.See the delegation overview for more information.

SintaxeSyntax

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

  • Tabela - Necessário.Table - Required. Tabela a ordenar.Table to sort.
  • Fórmula - Necessário.Formula - Required. Esta fórmula é avaliada para cada registo da tabela, e os resultados são utilizados para ordenar a tabela.This formula is evaluated for each record of the table, and the results are used to sort the table. Pode referenciar colunas na tabela.You can reference columns within the table.
  • SortOrder - Opcional.SortOrder - Optional. Especifique SortOrder.Descending para ordenar a tabela por ordem descendente.Specify SortOrder.Descending to sort the table in descending order. SortOrder.Ascending é o valor predefinido.SortOrder.Ascending is the default value.

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

  • Tabela - Necessário.Table - Required. Tabela a ordenar.Table to sort.
  • ColumnName(s) - Necessário.ColumnName(s) - Required. Os nomes de coluna a ordenar, como cadeias.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 predefinido.SortOrder.Ascending is the default. Se forem fornecidos vários ColumnNames, todas as colunas exceto a última têm de incluir um SortOrder.If multiple ColumnNames are supplied, all but the last column must include a SortOrder.

    Nota

    Para origens de dados do SharePoint e do Excel que contêm nomes de coluna com espaços, especifique cada espaço como "_x0020_".For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Por exemplo, especifique “Nome de Coluna” como “Column_x0020_Name”.For example, specify "Column Name" as "Column_x0020_Name".

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

  • Tabela - Necessário.Table - Required. Tabela a ordenar.Table to sort.
  • ColumnName - Necessário.ColumnName - Required. O nome da coluna a ordenar, como cadeia.The column name to sort on, as strings.
  • SortOrderTable - Necessário.SortOrderTable - Required. Tabela de coluna única de valores a ordenar.Single column table of values to sort by.

    Nota

    Para origens de dados do SharePoint e do Excel que contêm nomes de coluna com espaços, especifique cada espaço como "_x0020_".For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Por exemplo, especifique “Nome de Coluna” como “Column_x0020_Name”.For example, specify "Column Name" as "Column_x0020_Name".

ExemplosExamples

Para os exemplos seguintes, iremos utilizar a origem 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, Sabor )Sort( IceCream, Flavor )

SortByColumns( IceCream, "Sabor" )SortByColumns( IceCream, "Flavor" )
Ordena IceCream pela respetiva coluna de Sabor.Sorts IceCream by its Flavor column. A coluna Sabor contém cadeias, para que a tabela esteja ordenada por ordem alfabética.The Flavor column contains strings, so the table is sorted alphabetically. Por predefinição, a sequência de ordenação é ascendente.By default, the sort order is ascending.
Sort( IceCream, Quantidade )Sort( IceCream, Quantity )

SortByColumns( IceCream, "Quantidade" )SortByColumns( IceCream, "Quantity" )
Ordena IceCream pela respetiva coluna de Quantidade.Sorts IceCream by its Quantity column. A coluna Quantidade contém números, para que a tabela esteja ordenada numericamente.The Quantity column contains numbers, so the table is sorted numerically. Por predefinição, a sequência de ordenação é ascendente.By default, the sort order is ascending.
Sort( IceCream, Quantidade, SortOrder.Descending )Sort( IceCream, Quantity, SortOrder.Descending )

SortByColumns( IceCream, "Quantidade", SortOrder.Descending )SortByColumns( IceCream, "Quantity", SortOrder.Descending )
Ordena IceCream pela respetiva coluna de Quantidade.Sorts IceCream by its Quantity column. A coluna Quantidade contém números, para que a ordenação seja feita numericamente.The Quantity column contains numbers, so the sort is done numerically. A sequência de ordenação foi especificada como descendente.The sort order has been specified as descending.
Sort( IceCream, Quantidade + OnOrder )Sort( IceCream, Quantity + OnOrder ) Ordena IceCream pela soma das respetivas colunas Quantidade e OnOrder para cada registo individualmente.Sorts IceCream by the sum of its Quantity and OnOrder columns for each record individually. A soma é um número, por isso a tabela está ordenada numericamente.The sum is a number, so the table is sorted numerically. Por predefinição, a sequência de ordenação é ascendente.By default, the sort order is ascending. Uma vez que estamos a ordenar por uma fórmula e não pelos valores de coluna não processados, não existe nenhum equivalente com SortByColumns.Since we are sorting by a formula and not by raw column values, there is no equivalent using SortByColumns.
Sort( Sort( IceCream, OnOrder ), Quantidade )Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( IceCream, "OnOrder", Ascendente, "Quantidade", Ascendente )SortByColumns( IceCream, "OnOrder", Ascending, "Quantity", Ascending )
Ordena IceCream primeiro pela respetiva coluna OnOrder e, em seguida, pela respetiva coluna Quantidade.Sorts IceCream first by its OnOrder column, and then by its Quantity column. Tenha em atenção que o "Pistáchio" rosa acima de "Baunilha" na primeira ordenação com base em OnOrder e depois em conjunto são movidos para o respetivo local adequado, com base na Quantidade.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, "Sabor", [ "Pistáchio", "Morango" ] )SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) Ordena IceCream pela coluna Sabor com base na tabela de coluna única que contém "Pistáchio" e "Morango".Sorts IceCream by it's Flavor column based on the single column table containing "Pistachio" and "Strawberry". Os registos que têm um Sabor de "Pistáchio" irão aparecer primeiro no resultado, seguidos de registos que contêm "Morango".Records which have a Flavor of "Pistachio" will appear first in the result, followed by records that contain "Strawberry". Para valores na coluna Sabor que não são correspondentes, como "Baunilha", irão aparecer depois dos itens que foram correspondidos.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 você mesmo estes exemplos, crie a origem 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 respetiva propriedade OnSelect a esta fórmula:Add a button, and set its OnSelect property to this formula:
    ClearCollect( IceCream, { Sabor: "Chocolate", Quantidade: 100, OnOrder: 150 }, { Sabor: "Baunilha", Quantidade: 200, OnOrder: 20 }, { Sabor: "Strawberry", Quantidade: 300, OnOrder: 0 }, { Sabor: "Menta Chocolate", Quantidade: 60, OnOrder: 100 }, { Sabor: "Pistáchio", Quantidade: 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. Pré-visualize a aplicação, selecione o botão e, em seguida, prima Esc para regressar à área de trabalho predefinida.Preview the app, select the button, and then press Esc to return to the default workspace.
  3. Selecione Coleções no menu Ficheiro para apresentar a coleção que acabou de criar e, em seguida, prima Esc para regressar à área de trabalho predefinida.Select Collections on the File menu to display the collection that you just created, and then press Esc to return to the default workspace.

OrdenarSort

  1. Adicione outro botão e defina a respetiva 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, chamada SortByFlavor, que contém os mesmos dados que Gelado.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 ordenados por ordem alfabética pela coluna Sabor por ordem ascendente.However, the new collection contains the data sorted alphabetically by the Flavor column in ascending order.

  2. Prima F5, selecione o botão novo e, em seguida, prima Esc.Press F5, select the new button, and then press Esc.
  3. Selecione Coleções no menu Ficheiro para apresentar ambas as coleções e, em seguida, prima Esc para regressar à área de trabalho predefinida.Select Collections on the File menu to display both collections, and then press Esc to return to the default workspace.
  4. Repita os últimos três passos, mas altere o nome da coleção que pretende criar e substitua a fórmula Sort por uma fórmula diferente da tabela de exemplos anterior nesta secção que utiliza 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 respetiva 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, chamada SortByQuantity, que contém os mesmos dados que Gelado.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 ordenados numericamente pela coluna Quantidade por ordem ascendente e, em seguida, pela coluna Sabor por ordem descendente.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. Prima F5, selecione o botão novo e, em seguida, prima Esc.Press F5, select the new button, and then press Esc.
  3. Selecione Coleções no menu Ficheiro para apresentar as três coleções e, em seguida, prima Esc para regressar à área de trabalho predefinida.Select Collections on the File menu to display all three collections, and then press Esc to return to the default workspace.
  4. Repita os últimos três passos, mas altere o nome da coleção que pretende criar e substitua a fórmula SortByColumns por uma fórmula diferente da tabela de exemplos anterior desta secção que utiliza 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.