Funciones Sort y SortByColumns

Se aplica a: Aplicaciones de lienzo Flujos de escritorio Aplicaciones basadas en modelos Power Platform CLI

Ordena una tabla.

Nota

Los comandos PAC CLI pac power-fx no admiten la función SortByColumns.

Description

La función Sort ordena una tabla según una fórmula.

La fórmula se evalúa para cada registro de la tabla y los resultados se usan para ordenar la tabla. La fórmula debe dar como resultado un número, una cadena o un valor booleano; no puede generar una tabla ni un registro.

Los campos de registro que se están procesando actualmente estarán disponibles en la formula. Use el operador ThisRecord o simplemente haga referencia a los campos por nombre como lo haría con cualquier otro valor. El operador As también se puede usar para nombrar el registro que se está procesando, lo que puede ayudar a que su fórmula sea más fácil de entender y hacer accesibles los registros anidados. Para obtener más información, vea los ejemplos siguientes y trabajar con el ámbito de registros.

Para ordenar primero por una columna y luego por otra, debe insertar una fórmula Sort dentro de otra. Por ejemplo, puede usar esta fórmula para ordenar una tabla Contacts primero por una columna LastName y, luego, por una columna FirstName: Sort( Sort( Contacts, LastName ), FirstName )

La función SortByColumns también se puede usar para ordenar una tabla según una o más columnas.

La lista de parámetros para SortByColumns proporciona los nombres de las columnas según las cuales ordenar y la dirección de ordenación por columna. La ordenación se realiza según el orden de los parámetros (ordenados primero por la primera columna, luego la segunda, etc.). Los nombres de columna se especifican como cadenas y requieren comillas dobles si se incluyen directamente en la lista de parámetros. Por ejemplo, SortByColumns( CustomerTable, "LastName" ).

Puede combinar SortByColumns con un control Drop down o List box para permitir que los usuarios seleccionen la columna según la cual ordenar.

Además de ordenar de manera ascendente o descendente, SortByColumns puede ordenar según una tabla de valores de una sola columna. Por ejemplo, puede ordenar el registro según el nombre de un día de la semana si suministra [ "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo" ] como el criterio de ordenación. Todos los registros que incluyan Lunes" aparecerán primero, seguidos de los registros que incluyan Martes, etc. Los registros encontrados que no aparezcan en la tabla de ordenación se colocan al final de la lista.

Las tablas son un valor en Power Apps, tal como una cadena o un número. Se pueden pasar a funciones y las funciones pueden devolverlas. Sort y SortByColumn no modifican una tabla; en lugar de eso, toman una tabla como argumento y devuelven una tabla nueva que se ordenó. Consulte cómo trabajar con tablas para más detalles.

Delegación

Siempre que sea posible, Power Apps delegará las operaciones de filtrado y ordenación al origen de datos y se desplazará por los resultados a petición. Por ejemplo, cuando se inicia una aplicación que muestra un control Galería lleno de datos, inicialmente solo se traerá al dispositivo el primer conjunto de registros. A medida que el usuario se desplace por los datos, se traerán más datos del origen de datos. El resultado es un inicio más rápido de la aplicación y acceso a conjuntos de datos muy grandes.

Sin embargo, la delegación no siempre es posible. La compatibilidad de funciones y operadores con la delegación varía según el origen de datos. Si la delegación completa de una fórmula no es posible, el entorno de creación indicará la parte que no se puede delegar con una advertencia. Si es posible, considere la posibilidad de cambiar la fórmula para que no incluya las funciones y los operadores que no se pueden delegar. La lista de delegación detalla qué orígenes de datos y operaciones se pueden delegar.

Si la delegación no es posible, Power Apps solo descargará un conjunto reducido de registros para trabajar localmente. Las funciones de filtrado y ordenación trabajarán con un conjunto reducido de registros. En la Galería puede no estará disponible la historia completa, y esto puede resultar confuso a los usuarios.

Consulte la información general sobre delegación para obtener más información.

Sintaxis

Sort( Table, Formula [, SortOrder ] )

  • Table - obligatorio. La tabla que se va a ordenar.
  • Formula (obligatorio). Esta fórmula se evalúa para cada registro de la tabla y los resultados se usan para ordenar la tabla. Puede hacer referencia a columnas dentro de la tabla.
  • SortOrder (opcional). Especifique SortOrder.Descending para ordenar la tabla en orden descendente. SortOrder.Ascending es el valor predeterminado.

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

  • Table - obligatorio. La tabla que se va a ordenar.

  • ColumnName(s) (obligatorio). Los nombres de las columnas según las cuales ordenar, como cadenas.

  • SortOrder(s) (opcional). SortOrder.Ascending o SortOrder.Descending. SortOrder.Ascending es el valor predeterminado. Si se suministran varios ColumnNames, todas las columnas, menos la última, deben incluir un SortOrder.

    Nota

    En el caso de orígenes de datos de SharePoint y Excel que contengan nombres de columna con espacios, especifique cada uno de ellos como "_x0020_". Por ejemplo, especifique "Nombre de columna" como "Nombre_x0020_de_columna".

SortByColumns( Table, ColumnName, SortOrderTable )

  • Table - obligatorio. La tabla que se va a ordenar.

  • ColumnName (obligatorio). El nombre de la columna según la cual ordenar, como cadenas.

  • SortOrderTable (obligatorio). Tabla de valores de una sola columna según la cual ordenar.

    Nota

    En el caso de orígenes de datos de SharePoint y Excel que contengan nombres de columna con espacios, especifique cada uno de ellos como "_x0020_". Por ejemplo, especifique "Nombre de columna" como "Nombre_x0020_de_columna".

Ejemplos

En los ejemplos siguientes, usaremos el origen de datosIceCream, que contiene los datos de esta tabla:

Ejemplo de IceCream.

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

SortByColumns( IceCream, "Flavor" )
Ordena IceCream según su columna Flavor. La columna Flavor contiene cadenas, por lo que la tabla se ordena alfabéticamente. De manera predeterminada, el criterio de ordenación es ascendente. Ordenados alfabéticamente.
Sort( IceCream, Quantity )

SortByColumns( IceCream, "Quantity" )
Ordena IceCream según su columna Quantity. La columna Cantidad contiene números, por lo que la tabla se ordena numéricamente. De manera predeterminada, el criterio de ordenación es ascendente. Ordenados numéricamente.
Sort( IceCream, Quantity, SortOrder.Descending )

SortByColumns( IceCream, "Quantity", SortOrder.Descending )
Ordena IceCream según su columna Quantity. La columna Quantity contiene números, por lo que se ordena numéricamente. El criterio de ordenación se especificó como descendente. Ordenado numéricamente y descendente.
Sort( IceCream, Quantity + OnOrder ) Ordena IceCream por la suma de sus columnas Quantity y OnOrder para cada registro individualmente. La suma es un número, por lo que la tabla se ordena numéricamente. De manera predeterminada, el criterio de ordenación es ascendente. Como ordenamos según una fórmula y no según valores de columna sin formato, no hay ningún equivalente usando SortByColumns. Ordenado numéricamente y ascendente.
Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( IceCream, "OnOrder", SortOrder.Ascending, "Quantity", SortOrder.Ascending )
Ordena IceCream primero según su columna OnOrder y, luego, según su columna Quantity. Observe que "Pistacho" apareció arriba de "Vainilla" en la primera ordenación según OnOrder y, luego, pasaron a su lugar adecuado según Quantity. Ordenado con pistacho encima de vainilla.
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) Ordena IceCream según su columna Flavor en función de la tabla con una sola columna que contiene "Pistacho" y "Fresa". Los registros que tienen una columna Flavor "Pistacho" aparecerán primero en el resultado, seguidos de los registros que contienen "Fresa". En el caso de los valores de la columna Flavor que no tienen coincidencia, como "Vainilla", aparecerán después de los elementos que sí tuvieron coincidencia. Ordenado con pistacho encima de fresa.

Paso a paso

Para ejecutar estos ejemplos, cree el origen de datos IceCream como una colección:

  1. Agregue un botón y establezca su propiedad OnSelect en 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. Obtenga una vista previa de la aplicación, seleccione el botón y, luego, presione Esc para volver al área de trabajo predeterminada.
  3. Seleccione Colecciones en el menú Archivo para mostrar la colección que acaba de crear y, luego, presione Esc para volver al área de trabajo predeterminada.

Sort

  1. Agregue otro botón y establezca su propiedad OnSelect en esta fórmula:
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    La fórmula anterior crea otra colección, denominada SortByFlavor, que contiene los mismos datos que IceCream. Sin embargo, la colección nueva contiene los datos ordenados alfabéticamente según la columna Flavor en orden ascendente.

  2. Presione F5, seleccione el botón nuevo y, luego, presione Esc.

  3. Seleccione Colecciones en el menú Archivo para mostrar ambas colecciones y, luego, presione Esc para volver al área de trabajo predeterminada.

  4. Repita los últimos tres pasos, pero cambie el nombre de la colección que desea crear y reemplace la fórmula Sort por una fórmula distinta de la tabla de ejemplos que apareció anteriormente en esta sección que usa Sort.

SortByColumns

  1. Agregue otro botón y establezca su propiedad OnSelect en esta fórmula:
    ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", SortOrder.Ascending, "Flavor", SortOrder.Descending ) )

    La fórmula anterior crea una tercera colección, denominada SortByQuantity, que contiene los mismos datos que IceCream. Sin embargo, la colección nueva contiene los datos ordenados numéricamente según la columna Quantity en orden ascendente y, luego, según la columna Flavor en orden descendente.

  2. Presione F5, seleccione el botón nuevo y, luego, presione Esc.

  3. Seleccione Colecciones en el menú Archivo para mostrar las tres colecciones y, luego, presione Esc para volver al área de trabajo predeterminada.

  4. Repita los últimos tres pasos, pero cambie el nombre de la colección que desea crear y reemplace la fórmula SortByColumns por una fórmula distinta de la tabla de ejemplos que apareció anteriormente en esta sección que usa SortByColumns.