Funções de Sort e SortByColumns

Aplica-se a: Aplicações de tela Fluxos de ambiente de trabalho Aplicações condicionadas por modelo Power Platform CLI

Ordena uma tabela.

Nota

Os comandos PAC CLI pac power-fx não suportam a função SortByColumns.

Descrição

A função Sort ordena uma tabela baseada numa fórmula.

A fórmula é avaliada para cada registo da tabela e os resultados são utilizados para ordenar a tabela. A fórmula deve resultar num número, uma cadeia ou um valor booleano; não pode resultar numa tabela ou num registo.

Os atuais campos do registo em processamento estão disponíveis na fórmula. Utilize o operador ThisRecord ou simplesmente campos de referência pelo nome, como com qualquer outro valor. O operador As também pode ser usado para nomear o registo que está a ser processado, o que pode ajudar a tornar a sua fórmula mais fácil de compreender e tornar os registos aninhados acessíveis. Para mais informações, consulte os exemplos abaixo e trabalhar com o âmbito de registo.

Para ordenar primeiro por uma coluna e, em seguida, por outra, incorpore uma fórmula de Sort dentro de outra. 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 )

A função SortByColumns também pode ser utilizada para ordenar uma tabela baseada em uma ou mais colunas.

A lista de parâmetros para SortByColumns fornece os nomes das colunas a ordenar e a direção de ordenação por coluna. A ordenação é realizada por ordem de parâmetros (ordenada em primeiro lugar pela primeira coluna e, em seguida, pela segunda e assim sucessivamente). Os nomes das colunas são especificadas como cadeias, que requerem aspas duplas se estiverem diretamente incluídas na lista de parâmetros. Por exemplo, SortByColumns( CustomerTable, "LastName" ).

Pode combinar SortByColumns com um controlo de Drop down ou List box para permitir aos utilizadores selecionarem a coluna que pretendem ordenar.

Além da ordenação ascendente ou descendente, SortByColumns pode ordenar com base numa única coluna de tabela de valores. 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. Todos os registos que tenham Segunda-feira" virão em primeiro lugar, seguido de Terça-feira, e assim sucessivamente. Os registos encontrados que não aparecem na tabela de ordenação são colocados no final da lista.

Tabelas são um valor no Power Apps, tal como uma cadeia ou um número. Podem ser transmitidos a funções e devolvidos das mesmas. 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. Consulte trabalhar com tabelas para obter mais detalhes.

Delegação

Sempre que possível, o Power Apps delegará operações de ordenação e filtro para a origem de dados e página através dos resultados a pedido. Por exemplo, quando inicia uma aplicação que mostra um controlo de Galeria preenchido com dados, apenas o primeiro conjunto de registos será colocado inicialmente no dispositivo. Quando o utilizador desloca, os dados adicionais são desativados da origem de dados. O resultado é uma data de início mais rápida para a aplicação e acesso a conjuntos de dados muito grandes.

No entanto, a delegação nem sempre é possível. As origens de dados dependem das funções e operadores que suportam com a delegação. Se não for possível 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. Sempre que possível, considere alterar a fórmula para evitar funções e operadores que não podem ser delegados. A lista de delegação especifica as origens de dados e operações que podem ser delegadas.

Se a delegação não for possível, o Power Apps irá suspender apenas um pequeno conjunto de registos para trabalhar localmente. As funções de filtro e ordenação funcionarão num conjunto reduzido de registos. O que está disponível na Galeria poderá não ser o cenário completo, o que pode ser confuso para os utilizadores.

Consulte a descrição geral da delegação para mais informações.

Sintaxe

Sort( Table, Formula [, SortOrder ] )

  • Table – Obrigatório. Tabela a ordenar.
  • Formula – Obrigatório. Esta fórmula é avaliada para cada registo da tabela e os resultados são utilizados para ordenar a tabela. Pode referenciar colunas na tabela.
  • SortOrder – Opcional. Especifique SortOrder.Descending para ordenar a tabela por ordem descendente. SortOrder.Ascending é o valor predefinido.

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

  • Table – Obrigatório. Tabela a ordenar.

  • ColumnName(s) – Obrigatório. Os nomes de coluna a ordenar, como cadeias.

  • SortOrder(s) – Opcional. SortOrder.Ascending ou SortOrder.Descending. SortOrder.Ascending é o predefinido. Se forem fornecidos vários ColumnNames, todas as colunas exceto a última têm de incluir um 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_". Por exemplo, especifique "Nome da Coluna" como "Column_x0020_Name".

SortByColumns( Table, ColumnName, SortOrderTable )

  • Table – Obrigatório. Tabela a ordenar.

  • ColumnName – Obrigatório. O nome da coluna a ordenar, como cadeia.

  • SortOrderTable – Obrigatório. Tabela de coluna única de valores a ordenar.

    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_". Por exemplo, especifique "Nome da Coluna" como "Column_x0020_Name".

Exemplos

Para os exemplos seguintes, iremos utilizar a origem de dadosIceCream, que contém os dados nesta tabela:

Exemplo de IceCream.

Fórmula Descrição Resultado
Sort( IceCream, Sabor )

SortByColumns( IceCream, "Sabor" )
Ordena IceCream pela respetiva coluna de Sabor. A coluna Sabor contém cadeias, para que a tabela esteja ordenada por ordem alfabética. Por predefinição, a sequência de ordenação é ascendente. Ordenado alfabeticamente.
Sort( IceCream, Quantidade )

SortByColumns( IceCream, "Quantidade" )
Ordena IceCream pela respetiva coluna Quantidade. A coluna Quantidade contém números, para que a tabela esteja ordenada numericamente. Por predefinição, a sequência de ordenação é ascendente. Classificado numericamente.
Sort( IceCream, Quantidade, SortOrder.Descending )

SortByColumns( IceCream, "Quantidade", SortOrder.Descending )
Ordena IceCream pela respetiva coluna Quantidade. A coluna Quantidade contém números, para que a ordenação seja feita numericamente. A sequência de ordenação foi especificada como descendente. Classificado numericamente e descendente.
Sort( IceCream, Quantidade + OnOrder ) Ordena IceCream pela soma das respetivas colunas Quantidade e OnOrder para cada registo individualmente. A soma é um número, por isso a tabela está ordenada numericamente. Por predefinição, a sequência de ordenação é ascendente. 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. Classificado numericamente e ascendente.
Sort( Sort( IceCream, OnOrder ), Quantidade )

SortByColumns( IceCream, "OnOrder", SortOrder.Ascending, "Quantidade", SortOrder.Ascending )
Ordena IceCream primeiro pela respetiva coluna OnOrder e, em seguida, pela respetiva coluna Quantidade. 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. Classificado com Pistachio acima de Baunilha.
SortByColumns( IceCream, "Sabor", [ "Pistácio", "Morango" ] ) Ordena IceCream pela coluna Sabor com base na tabela de coluna única que contém "Pistáchio" e "Morango". Os registos que têm um Sabor de "Pistáchio" irão aparecer primeiro no resultado, seguidos de registos que contêm "Morango". Para valores na coluna Sabor que não são correspondentes, como "Baunilha", irão aparecer depois dos itens que foram correspondidos. Classificado com Pistachio acima de Morango.

Passo a passo

Para executar você mesmo estes exemplos, crie a origem de dados IceCream como uma coleção:

  1. Adicione um botão e defina a respetiva propriedade OnSelect a esta fórmula:
    ClearCollect( IceCream, { Sabor: "Chocolate", Quantidade: 100, OnOrder: 150 }, { Sabor: "Baunilha", Quantidade: 200, OnOrder: 20 }, { Sabor: "Morango", Quantidade: 300, OnOrder: 0 }, { Sabor: "Menta Chocolate", Quantidade: 60, OnOrder: 100 }, { Sabor: "Pistáchio", Quantidade: 200, OnOrder: 10 } )
  2. Pré-visualize a aplicação, selecione o botão e, em seguida, prima Esc para regressar à área de trabalho predefinida.
  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.

Sort

  1. Adicione outro botão e defina a respetiva propriedade OnSelect para esta fórmula:
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    A fórmula anterior cria uma segunda coleção, chamada SortByFlavor, que contém os mesmos dados que Gelado. No entanto, a nova coleção contém os dados ordenados por ordem alfabética pela coluna Sabor por ordem ascendente.

  2. Prima F5, selecione o botão novo e, em seguida, prima 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.

  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.

SortByColumns

  1. Adicione outro botão e defina a respetiva propriedade OnSelect para esta fórmula:
    ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantidade", SortOrder.Ascending, "Sabor", SortOrder.Descending ) )

    A fórmula anterior cria uma terceira coleção, chamada SortByQuantity, que contém os mesmos dados que Gelado. 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.

  2. Prima F5, selecione o botão novo e, em seguida, prima 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.

  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.