#

Classifica uma tabela.

Descrição

##

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ão sendo atualmente processados estão disponíveis dentro da fórmula. Basta referenciá-los por nome como você faria com qualquer outro valor. Também é possível fazer referência a propriedades de controle e a outros valores de todo o seu aplicativo. Para obter mais detalhes, consulte os exemplos abaixo e trabalhando com escopo de registro.

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 de Contatos 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 Suspenso ou de Caixa de listagem 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.

Tabelas são um valor no PowerApps, 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 Trabalhando com tabelas para obter mais detalhes.

Delegação

Quando possível, o PowerApps delegará operações de filtragem e classificação à fonte de dados e à página por meio dos resultados sob demanda. Por exemplo, quando você inicia um aplicativo que mostra um controle Galeria cheio de dados, apenas o primeiro conjunto de registros será inicialmente levado ao dispositivo. Conforme o usuário rola, mais dados são desativados da fonte de dados. O resultado é uma hora de início mais rápida para o aplicativo e o acesso a grandes conjuntos de dados.

No entanto, a delegação talvez nem sempre seja possível. As fontes de dados variam quanto a quais funções e operadores elas dão suporte com a delegação. Se a delegação completa de uma fórmula não for possível, o ambiente de criação marcará a parte que não puder ser delegada com um aviso. Quando possível, considere alterar a fórmula para evitar funções e operadores que não podem ser delegados. A lista de delegação detalha quais fontes de dados e operações podem ser delegados.

Se a delegação não for possível, o PowerApps extrairá um pequeno conjunto de registros para trabalhar no local. As funções de filtro e de classificação operarão em um conjunto reduzido de registros. O que está disponível na Galeria talvez não seja a história completa, que pode ser confusa para os usuários.

Consulte a 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. A 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.

    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_". 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.

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

Exemplos

##

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

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.
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.
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.
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.
Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( IceCream, "OnOrder", Ascending, "Quantity", 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.
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.

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 espaço de trabalho 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 espaço de trabalho padrão.

Classificar

####

  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 espaço de trabalho 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", Ascending, "Flavor", 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 espaço de trabalho 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.