Funções Sort e SortByColumns

Aplica-se a: Aplicativos de tela Fluxos da área de trabalho Aplicativos baseados em modelo Power Platform CLI

Classifica uma tabela.

Observação

Os comandos pac power-fx da CLI do PAC não oferecem suporte à função SortByColumns.

Description

A função Sort classifica uma tabela com base em uma fórmula.

A fórmula é avaliada para cada registro da tabela, e os resultados são usados para classificá-la. 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.

Os campos do registro que está sendo processado no momento estão disponíveis na fórmula. Use o operador ThisRecord ou simplesmente referencie os campos por nome como faria com qualquer outro valor. O operador Astambém pode ser usado para nomear o registro que está sendo processado, o que pode ajudar a tornar sua fórmula mais fácil de entender e tornar os registros aninhados acessíveis. Para obter mais informações, veja os exemplos abaixo e consulte trabalhando com escopo de registros.

Para classificar primeiro por uma coluna e, em seguida, por outra, é necessário inserir uma fórmula Sort dentro de outra. Por exemplo, é possível usar esta fórmula para classificar uma tabela Contacts primeiro por uma coluna LastName e, em seguida, por uma coluna FirstName: 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.

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. A classificação é feita na ordem dos parâmetros (classificados primeiro pela primeira coluna, em seguida, a segunda, e assim por diante). Os nomes de coluna são especificados como cadeias de caracteres, que exigem aspas duplas se incluídos diretamente na lista de parâmetros. Por exemplo, SortByColumns( CustomerTable, "LastName" ).

É possível combinar a função SortByColumns com um controle Drop down ou de List box para permitir que os usuários selecionem por qual coluna classificar.

Além da classificação crescente ou decrescente, a função SortByColumns pode classificar com base em uma tabela de valores de coluna única. 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. Todos os registros que têm segunda-feira" virão primeiro, seguidos por terça-feira, e assim por diante. Os registros encontrados que não aparecem na tabela classificada são colocados no final da lista.

Tables são um valor no Power Apps, assim como cadeias de caracteres ou números. Elas podem ser passadas e retornadas para funções. 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. Consulte como trabalhar com tabelas para obter mais detalhes.

Delegação

Quando possível, o Power Apps delegará o filtro e as operações de classificação para a fonte de dados e navegará pelos resultados sob demanda. Por exemplo, quando você iniciar um aplicativo que mostra um controle de Galeria preenchido com dados, somente o primeiro conjunto de registros será trazido para o dispositivo inicialmente. Conforme o usuário rola, dados adicionais são trazidos a partir da fonte de dados. O resultado de um tempo de início mais rápido para o aplicativo e o acesso a conjuntos muito grandes de dados.

No entanto, a delegação pode não ser sempre possível. As fontes de dados variam sobre quais funções e operadores oferecem suporte à delegação. Se a delegação completa de uma de fórmula não for possível, a criação do ambiente indicará a parte que não pode ser delegada com um aviso. Quando possível, considere alterar a fórmula para evitar as funções e os operadores que não podem ser delegados. A lista de delegação detalha quais fontes de dados e operações podem ser delegadas.

Se a delegação não for possível, o Power Apps exibirá somente um pequeno conjunto de registros para trabalhar localmente. As funções de filtragem e de classificação operarão em um conjunto reduzido de registros. O que estiver disponível na Galeria poderá não ser a história completa, o que pode ser confuso para os usuários.

Consulte visão geral de delegação para obter mais informações.

Sintaxe

Sort( Table, Formula [, SortOrder ] )

  • Table - obrigatório. Tabela para classificar.
  • Formula - obrigatório. Essa fórmula é avaliada para cada registro da tabela, e os resultados são usados para classificá-la. É possível referenciar colunas dentro da tabela.
  • SortOrder - opcional. Especifique SortOrder.Descending para classificar a tabela em ordem decrescente. SortOrder.Ascending é o valor padrão.

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

  • Table - obrigatório. Tabela para classificar.

  • ColumnName(s) - obrigatório. Os nomes da coluna para se classificar, como cadeias de caracteres.

  • SortOrder(s) - opcional. SortOrder.Ascending ou SortOrder.Descending. SortOrder.Ascending é o padrão. Se vários ColumnNames forem fornecidos, todos, exceto a última coluna, devem incluir um SortOrder.

    Nota

    Nas fontes de dados do Excel e do SharePoint que contêm nomes de colunas com espaços, especifique cada espaço como "_x0020_". Por exemplo, especifique "Nome da Coluna" como "Nome_x0020_da_x0020_Coluna".

SortByColumns( Table, ColumnName, SortOrderTable )

  • Table - obrigatório. Tabela para classificar.

  • ColumnName - obrigatório. O nome da coluna para se classificar, como cadeias de caracteres.

  • SortOrderTable - obrigatório. Tabela de valores de coluna única para se classificar.

    Nota

    Nas fontes de dados do Excel e do SharePoint que contêm nomes de colunas com espaços, especifique cada espaço como "_x0020_". Por exemplo, especifique "Nome da Coluna" como "Nome_x0020_da_x0020_Coluna".

Exemplos

Para os exemplos a seguir, usaremos a fonte de dadosIceCream, que contém os dados nesta tabela:

Exemplo IceCream.

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

SortByColumns( IceCream, "Flavor" )
Classifica o IceCream pela coluna Flavor. A coluna Flavor contém cadeias de caracteres para que a tabela seja classificada em ordem alfabética. Por padrão, a ordem de classificação é crescente. Classificado alfabeticamente.
Sort( IceCream, Quantity )

SortByColumns( IceCream, "Quantity" )
Classifica o IceCream pela coluna Quantity. A coluna Quantity contém números para que a tabela seja classificada numericamente. Por padrão, a ordem de classificação é crescente. Classificado numericamente.
Sort( IceCream, Quantity, SortOrder.Descending )

SortByColumns( IceCream, "Quantity", SortOrder.Descending )
Classifica o IceCream pela coluna Quantity. A coluna Quantity contém números para que a classificação seja feita numericamente. A ordem de classificação foi especificada como decrescente. Classificado numericamente e em ordem decrescente.
Sort( IceCream, Quantity + OnOrder ) Classifica IceCream pela soma de sua Quantity e colunas OnOrder para cada registro individual. A soma é um número, assim, a tabela será classificada numericamente. Por padrão, a ordem de classificação é crescente. Como estamos classificando por uma fórmula, e não pelos valores brutos da coluna, não há nenhum equivalente usando SortByColumns. Classificado numericamente e em ordem crescente.
Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( IceCream, "OnOrder", SortOrder.Ascending, "Quantity", SortOrder.Ascending )
Classifica IceCream primeiro pela coluna OnOrder e, em seguida, pela coluna Quantity. 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. Classificado com Pistachio acima de Vanilla.
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) Classifica IceCream pela coluna Flavor com base na tabela de coluna única que contém "Pistachio" e "Strawberry". Os registros que têm o Flavor "Pistachio" aparecerão primeiro no resultado, seguidos pelos registros que contêm "Strawberry". Os valores da coluna Flavor que não tiverem correspondentes, como "Vanilla", aparecerão após os itens combinados. Classificado com Pistachio acima de Strawberry.

Passo a passo

Para executar esses exemplos, crie a fonte de dados IceCream como uma coleção:

  1. Adicione um botão e defina a propriedade OnSelect para esta fórmula:
    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 workspace padrão.
  3. Selecione Coleções no menu Arquivo para exibir a coleção que você acabou de criar e pressione Esc para retornar ao workspace padrão.

Sort

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

    A fórmula anterior cria uma segunda coleção, denominada SortByFlavor, que contém os mesmos dados de IceCream. No entanto, a nova coleção contém os dados classificados em ordem alfabética pela coluna Flavor, em ordem crescente.

  2. Pressione F5, selecione o novo botão e pressione Esc.

  3. Selecione Coleções no menu Arquivo para exibir as duas coleções e pressione Esc para retornar ao workspace padrão.

  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.

SortByColumns

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

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

  2. Pressione F5, selecione o novo botão e pressione Esc.

  3. Selecione Coleções no menu Arquivo para exibir as três coleções e pressione Esc para retornar ao workspace padrão.

  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.