Share via


Funcións de Sort e SortByColumns

Aplícase a: Aplicacións de lona Desktop flúe aplicacións Power Platform impulsadas por Modelo CLI

Ordena unha táboa.

Nota

Os comandos PAC CLI pac power-fx non soportan a función SortByColumns .

Descripción

A función Sort ordena unha táboa baseándose nunha fórmula.

A fórmula avalíase para cada rexistro da táboa e os resultados úsanse para ordenar a táboa. A fórmula debe dar lugar a un número, unha cadea ou un valor booleano; non pode producir unha táboa ou un rexistro.

Os campos do rexistro que se están a procesar actualmente están dispoñibles na fórmula. Use o operador ThisRecord ou simplemente faga referencia aos campos por nome como faría con calquera outro valor. O operador As tamén se pode usar para nomear o rexistro que se está a procesar, o que pode axudar a que a fórmula sexa máis fácil de comprender e facer que os rexistros anidados sexan accesibles. Para obter máis información, consulte os seguintes exemplos e traballar co ámbito do rexistro.

Para ordenar primeiro por unha columna e despois por outra, incruste unha fórmula Sort dentro doutra. Por exemplo, pode usar esta fórmula para ordenar a táboa Contactos primeiro pola columna LastName e logo pola columna FirstName: Sort( Sort( Contacts, LastName ), FirstName )

A función SortByColumns tamén se pode usar para ordenar unha táboa baseada nunha ou varias columnas.

A lista de parámetros para SortByColumns fornece os nomes das columnas para ordenar e a dirección de ordenación por columna. A ordenación realízase na orde dos parámetros (ordenados primeiro pola primeira columna, despois pola segunda etc.). Os nomes das columnas especifícanse como cadeas, que requiren comiñas dobres se se inclúen directamente na lista de parámetros. Por exemplo, SortByColumns( CustomerTable, "LastName" ).

Podes+ combinar SortByColumns cun control de menú despregable ou un cadro de lista para permitir aos usuarios seleccionar por que columna clasificar.

Ademais de ordenar ascendente ou descendentemente, SortByColumns pode clasificar en función dunha táboa de valores dunha columna única. Por exemplo, pode ordenar o rexistro en función do nome dun día da semana subministrando [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ] como orde de ordenación. Todos os rexistros que teñan Monday" irán primeiro, seguidos de Tuesday etcétera. Os rexistros que non aparecen na táboa de ordenación colócanse ao final da lista.

As táboas son un valor en Power Apps, ao igual que unha cadea ou un número. Pódense pasar a e devolver de funcións. Sort e SortByColumn non modifican unha táboa; no seu lugar toman unha táboa como argumento e devolven unha nova táboa que foi ordenada. Para obter máis detalles, consulte Traballar con táboas.

Delegación

Se é posible, Power Apps delegará as operacións de filtraxe e ordenación á orixe de datos e páxina a través dos resultados a pedido. Por exemplo, cando abre unha aplicación que mostra un control de Galeríacheo de datos, só aparecerá inicialmente o primeiro conxunto de rexistros no dispositivo. Cando o usuario se desprace, extraeranse máis datos da orixe de datos. Deste xeito acelérase a hora de inicio da aplicación e pódese acceder a conxuntos de datos moi grandes.

Non obstante, non sempre se pode delegar. As orixes de datos varían segundo as funcións e operadores que admiten coa delegación. Se non é posible facer unha delegación completa dunha fórmula, o ambiente de creación marcará cun aviso a parte que non se pode delegar. Sempre que sexa posible, pense en cambiar a fórmula para evitar as funcións e operadores que non se poden delegar. A lista de delegación enumera as orixes de datos e operacións que se poden delegar.

Se a delegación non é posible, Power Apps só extraerá un pequeno conxunto de rexistros para traballar a nivel local. As funcións de filtraxe e ordenación operarán nun conxunto reducido de rexistros. Pode que os elementos dispoñibles na Galería non sexan o historial completo, o que podería confundir os usuarios.

Consulte a visión xeral da delegación para obter máis información.

Sintaxe

Sort( Table, Formula [, SortOrder ] )

  • Table - Obrigatorio. Táboa para ordenar.
  • Formula - Obrigatorio. Esta fórmula avalíase para cada rexistro da táboa e os resultados úsanse para ordenar a táboa. Pode facer referencia ás columnas dentro da táboa.
  • SortOrder - Opcional. Especifique SortOrder.Descending para ordenar a táboa en orde descendente. SortOrder.Ascending é o valor predefinido.

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

  • Table - Obrigatorio. Táboa para ordenar.

  • ColumnName(s) - Obrigatorio. Os nomes da columna para clasificar, como cadeas.

  • SortOrder(s) - Opcional. SortOrder.Oscending ou SortOrder.Descending. SortOrder.Ascending é o valor predefinido. Se múltiples ColumnNames son subministrados, pero a última columna debe incluír unha SortOrder.

    Nota

    Para SharePoint e orixes de datos de Excel que conteñen nomes de columna con espazos, especifique cada espazo como "_x0020_". Por exemplo, especifique o "Column Name" como "Column_x0020_Name".

SortByColumns( Table, ColumnName, SortOrderTable )

  • Table - Obrigatorio. Táboa para ordenar.

  • ColumnName - Obrigatorio. O nome da columna para clasificar, como cadeas.

  • SortOrderTable - Obrigatorio. Táboa de valores dunha única columna pola que clasificar.

    Nota

    Para SharePoint e orixes de datos de Excel que conteñen nomes de columna con espazos, especifique cada espazo como "_x0020_". Por exemplo, especifique o "Column Name" como "Column_x0020_Name".

Exemplos

Para os seguintes exemplos, usaremos a orixe de datosIceCream, que contén os datos desta táboa:

Exemplo de Icecream.

Fórmula Descripción Resultado
Sort( IceCream, Flavor )

SortByColumns( IceCream, "Flavor" )
Ordena IceCream pola súa columna Flavor. A columna Flavor contén cadeas, polo que a táboa está ordenada alfabeticamente. Por defecto, a orde de odenación é ascendente. Orde alfabética.
Sort( IceCream, Quantity )

SortByColumns( IceCream, "Quantity" )
Ordena IceCream pola súa columna Quantity. A columna Quantity contén números, polo que a táboa está ordenada numericamente. Por defecto, a orde de odenación é ascendente. Orde numérica.
Sort( IceCream, Quantity, SortOrder.Descending )

SortByColumns( IceCream, "Quantity", SortOrder.Descending )
Ordena IceCream pola súa columna Quantity. A columna Quantity contén números, polo que a ordenación faise numericamente. A orde de ordenación especificouse como descendente. Orde numérica e descendente.
Sort( IceCream, Quantity + OnOrder ) ordena IceCream pola suma das columnas Quantity e OnOrder para cada rexistro individualmente. A suma é un número, polo que a táboa está ordenada numericamente. Por defecto, a orde de odenación é ascendente. Dado que ordenamos cunha fórmula e non con valores da columna sen formato, non hai equivalente a usar SortByColumns. Orde numérica e ascendente.
Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( IceCream, "OnOrder", SortOrder.Ascending, "Cantidade", SortOrder.Ascending )
OrdenaIceCream primeiro pola súa columna OnOrder e despois pola súa columna Quantity. Teña en conta que "Pistachio" elevouse por enriba de "Vanilla" na primeira ordenación baseándose en OnOrder, e logo xuntos mudáronse ao seu lugar adecuado en base a Quantity. Orde con Pistachio por enriba de Vanilla.
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) Ordena IceCream pola columna Flavor baseándose na táboa dunha única columna que contén "Pistachio" e "Strawberry". Os rexistros que teñan un Flavor de "Pistachio" aparecerán primeiro no resultado, seguidos de rexistros que conteñan "Strawberry". Para valores na columna Flavor que non se corresponden, como "Vanilla", aparecerán despois dos elementos coincidentes. Orde con Pistachio por enriba de Strawberry.

Paso a paso

Para executar estes exemplos vostede, cree a orixe de datos IceCream como unha colección:

  1. Engada un botón e axuste a súa propiedade OnSelect nesta 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. Previsualice a aplicación, seleccione o botón e, a continuación, prema Esc para volver ao espazo de traballo predeterminado.
  3. Seleccione Coleccións no menú Arquivo para mostrar a colección que acaba de crear e logo prema Esc para volver ao espazo de traballo predeterminado.

Ordenar

  1. Engada outro botón e axuste a súa propiedade OnSelect nesta fórmula:
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    A fórmula anterior crea unha segunda colección, chamada SortByFlavor, que contén os mesmos datos que Ice Cream. Non obstante, a nova colección contén os datos ordenados alfabeticamente pola columna Flavor en orde ascendente.

  2. Pulse F5, seleccione o novo botón e, a continuación, prema Esc.

  3. Seleccione Coleccións no menú Arquivo para mostrar ambas as coleccións e logo prema Esc para volver ao espazo de traballo predeterminado.

  4. Repita os últimos tres pasos, pero cambie o nome da colección que desexa crear e substitúe a fórmula Sort por unha fórmula diferente da táboa de exemplos anterior nesta sección que use Sort.

SortByColumns

  1. Engada outro botón e axuste a súa propiedade OnSelect nesta fórmula:
    ClearCollect (SortByQuantity, SortByColumns(IceCream, "Quantity", SortOrder.Ascending, "Flavor", SortOrder.Descending )

    A fórmula anterior crea unha terceira colección, chamada SortByQuantity, que contén os mesmos datos que Ice Cream. Non obstante, a nova colección contén os datos ordenados numéricamente pola columna Quantity en orde ascendente e logo pola columna Flavor en orde descendente.

  2. Pulse F5, seleccione o novo botón e, a continuación, prema Esc.

  3. Seleccione Coleccións no menú Arquivo para mostrar as tres coleccións e logo prema Esc para volver ao espazo de traballo predeterminado.

  4. Repita os últimos tres pasos, pero cambie o nome da colección que desexa crear e substitúe a fórmula SortByColumns por unha fórmula diferente da táboa de exemplos anterior nesta sección que use SortByColumns.