Partilhar via


Sort e SortByColumns funções

Aplica-se a: Aplicativos de tela Copilot Studio Fluxos de ambiente de trabalho Aplicações orientadas por modelos Funções do Power Platform CLI Dataverse Power Pages

Ordena uma tabela.

Nota

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

Descrição

A Sort função classifica uma tabela com base em uma 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 classificar primeiro por uma coluna e depois por outra, você incorpora uma Sort fórmula em outra. Por exemplo, pode utilizar esta fórmula para ordenar uma tabela Contactos primeiro por uma coluna Apelido e depois por uma coluna Nome : Sort( Sort( Contactos, Apelido ), Nome )

A SortByColumns função também pode ser usada para classificar uma tabela com base em uma ou mais colunas.

A lista de parâmetros para SortByColumns fornece os nomes das colunas para classificar e a direção de classificaçã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" ).

Você pode combinar SortByColumns com um controle de caixa suspensa ou lista para permitir que os usuários selecionem por qual coluna classificar.

Além de classificar ascendente ou decrescente, SortByColumns pode classificar com base em uma única tabela de valores de coluna. 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.

As tabelas são um valor em Power Apps, assim como uma cadeia de caracteres ou número. Podem ser transmitidos a funções e devolvidos das mesmas. Sort e SortByColumn não modificam uma tabela; em vez disso, eles tomam uma tabela como argumento e retornam uma nova tabela que foi classificada. 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( Tabela, Fórmula [, SortOrder ] )

  • Tabela - Obrigatório. Tabela a ordenar.
  • Fórmula - 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 padrão.

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

  • Tabela - Obrigatório. Tabela a ordenar.

  • ColumnNames - Obrigatório. Os nomes de coluna a ordenar, como cadeias.

  • SortOrders - Opcional. SortOrder.Ascending ou SortOrder.Descending. SortOrder.Ascending é o padrão. 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( Tabela, ColumnName, SortOrderTable )

  • Tabela - 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( Sorvete, Sabor )

SortByColumns( Sorvete, "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( Sorvete, Quantidade )

SortByColumns( Sorvete, "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( Sorvete, Quantidade, SortOrder.Descendente )

SortByColumns( Sorvete, "Quantidade", SortOrder.Descendente )
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( Sorvete, Quantidade + Encomenda ) 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. Como estamos classificando por uma fórmula e não por valores brutos de coluna, não há equivalente usando SortByColumns. Classificado numericamente e ascendente.
Sort Sort( ( Sorvete, OnOrder ), Quantidade )

SortByColumns( Sorvete, "OnOrder", SortOrder.Ascending, "Quantity", 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( Sorvete, "Sabor", [ "Pistache", "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( Sorvete,Sabor { : "Chocolate", Quantidade: 100, OnOrder: 150,Sabor } { : "Baunilha", Quantidade: 200, OnOrder: 20,Sabor } { : "Morango", Quantidade: 300, OnOrder: 0,Sabor } { : "Mint Chocolate", Quantidade: 60, OnOrder: 100,Sabor } { : "Pistache", 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(Sorvete, Sabor )

    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 as três últimas etapas, mas altere o nome da coleção que você deseja criar e substitua a Sort fórmula por uma fórmula diferente da tabela de exemplos anteriormente nesta seção que usa Sort.

SortByColumns

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

    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 as três últimas etapas, mas altere o nome da coleção que você deseja criar e substitua a SortByColumns fórmula por uma fórmula diferente da tabela de exemplos anteriormente nesta seção que usa SortByColumns.