Funciones Sort y SortByColumns en PowerAppsSort and SortByColumns functions in PowerApps

Ordena una tabla.Sorts a table.

DescripciónDescription

La función Sort ordena una tabla según una fórmula.The Sort function sorts a table based on a formula.

La fórmula se evalúa para cada registro de la tabla y los resultados se usan para ordenar la tabla.The formula is evaluated for each record of the table, and the results are used to sort the table. La fórmula debe dar como resultado un número, una cadena o un valor booleano; no puede generar una tabla ni un registro.The formula must result in a number, a string, or a Boolean value; it can't result in a table or a record.

Los campos del registro que se están procesando actualmente están disponibles en la fórmula.Fields of the record currently being processed are available within the formula. Solo tiene que hacer referencia a ellos por su nombre, como haría con cualquier otro valor.You simply reference them by name as you would any other value. También puede hacer referencia a propiedades de control y otros valores en toda la aplicación.You can also reference control properties and other values from throughout your app. Para obtener más información, consulte los siguientes ejemplos y la sección sobre cómo trabajar con ámbito de registro.For more details, see the examples below and working with record scope.

Para ordenar primero por una columna y luego por otra, debe insertar una fórmula Sort dentro de otra.To sort first by one column and then by another, you embed a Sort formula within another. 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 )For example, you can use this formula to sort a Contacts table first by a LastName column and then by a FirstName column: 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.The SortByColumns function can also be used to sort a table based on one or more columns.

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.The parameter list for SortByColumns provides the names of the columns to sort by and the sort direction per column. La ordenación se realiza según el orden de los parámetros (ordenados primero por la primera columna, luego la segunda, etc.).Sorting is performed in the order of the parameters (sorted first by the first column, then the second, and so on). Los nombres de columna se especifican como cadenas y requieren comillas dobles si se incluyen directamente en la lista de parámetros.Column names are specified as strings, requiring double quotes if directly included in the parameter list. Por ejemplo, SortByColumns( CustomerTable, "LastName" ).For example, SortByColumns( CustomerTable, "LastName" ).

Puede combinar SortByColumns con un control Menú desplegable o Cuadro de lista para permitir que los usuarios seleccionen la columna según la cual ordenar.You can combine SortByColumns with a Drop down or List box control to enable users to select which column to sort by.

Además de ordenar de manera ascendente o descendente, SortByColumns puede ordenar según una tabla de valores de una sola columna.In addition to sorting ascending or descending, SortByColumns can sort based on a single column table of values. 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.For example, you can sort record based on the name of a day of the week by supplying [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ] as the sort order. Todos los registros que incluyan Lunes" aparecerán primero, seguidos de los registros que incluyan Martes, etc.All records which have Monday" will come first, followed by Tuesday, and so on. Los registros encontrados que no aparezcan en la tabla de ordenación se colocan al final de la lista.Records found that do not appear in the sort table are put at the end of the list.

Las tablas son un valor en PowerApps, tal como una cadena o un número.Tables are a value in PowerApps, just like a string or number. Se pueden pasar a funciones y las funciones pueden devolverlas.They can be passed to and returned from functions. Sort y SortByColumn no modifican una tabla; en lugar de eso, toman una tabla como argumento y devuelven una tabla nueva que se ordenó.Sort and SortByColumn don't modify a table; instead they take a table as an argument and return a new table that has been sorted. Consulte cómo trabajar con tablas para más detalles.See working with tables for more details.

DelegaciónDelegation

Cuando sea posible, PowerApps delegará las operaciones de filtro y ordenación al origen de datos y se desplazará por los resultados a petición.When possible, PowerApps will delegate filter and sort operations to the data source and page through the results on demand. Por ejemplo, al iniciar una aplicación que muestre un control galería relleno con datos, inicialmente solo se pasará al dispositivo el primer conjunto de registros.For example, when you start an app that shows a Gallery control filled with data, only the first set of records will be initially brought to the device. Cuando el usuario se desplace, se mueven datos adicionales desde el origen de datos.As the user scrolls, additional data is brought down from the data source. El resultado es una reducción del tiempo de inicio de la aplicación y el acceso a conjuntos de datos muy grandes.The result is a faster start time for the app and access to very large data sets.

Sin embargo, es posible que la delegación no siempre se pueda realizar.However, delegation may not always be possible. Los orígenes de datos varían en cuanto a las funciones y los operadores que admiten con la delegación.Data sources vary on what functions and operators they support with delegation. Si no es posible la delegación completa de una fórmula, el entorno de creación marcará con una advertencia la parte que no se puede delegar.If complete delegation of a formula isn't possible, the authoring environment will flag the portion that can't be delegated with a warning. Cuando sea posible, considere la posibilidad de cambiar la fórmula para evitar funciones y operadores que no se puedan delegar.When possible, consider changing the formula to avoid functions and operators that can't be delegated. La lista de delegación detalla los orígenes de datos y operaciones que se pueden delegar.The delegation list details which data sources and operations can be delegated.

Si la delegación no es posible, PowerApps extraerá solo un pequeño conjunto de registros para trabajar localmente.If delegation is not possible, PowerApps will pull down only a small set of records to work on locally. Las funciones de filtro y ordenación operarán en un conjunto reducido de registros.Filter and sort functions will operate on a reduced set of records. Es posible que en la galería no esté todo disponible, lo que podría generar confusión a los usuarios.What is available in the Gallery may not be the complete story, which could be confusing to users.

Para más información, consulte la introducción a la delegación.See the delegation overview for more information.

SintaxisSyntax

Sort( Table, Formula [, SortOrder ] )Sort( Table, Formula [, SortOrder ] )

  • Table: requerido.Table - Required. La tabla que se va a ordenar.Table to sort.
  • Formula: requerido.Formula - Required. Esta fórmula se evalúa para cada registro de la tabla y los resultados se usan para ordenar la tabla.This formula is evaluated for each record of the table, and the results are used to sort the table. Puede hacer referencia a columnas dentro de la tabla.You can reference columns within the table.
  • SortOrder: opcional.SortOrder - Optional. Especifique SortOrder.Descending para ordenar la tabla en orden descendente.Specify SortOrder.Descending to sort the table in descending order. SortOrder.Ascending es el valor predeterminado.SortOrder.Ascending is the default value.

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

  • Table: requerido.Table - Required. La tabla que se va a ordenar.Table to sort.
  • ColumnName(s): requerido.ColumnName(s) - Required. Los nombres de las columnas según las cuales ordenar, como cadenas.The column names to sort on, as strings.
  • SortOrder(s): opcional.SortOrder(s) - Optional. SortOrder.Ascending o SortOrder.Descending.SortOrder.Ascending or SortOrder.Descending. SortOrder.Ascending es el valor predeterminado.SortOrder.Ascending is the default. Si se suministran varios ColumnNames, todas las columnas, menos la última, deben incluir un SortOrder.If multiple ColumnNames are supplied, all but the last column must include a 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_".For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Por ejemplo, especifique "Nombre de columna" como "Nombre_x0020_de_columna".For example, specify "Column Name" as "Column_x0020_Name".

SortByColumns( Table, ColumnName, SortOrderTable )SortByColumns( Table, ColumnName, SortOrderTable )

  • Table: requerido.Table - Required. La tabla que se va a ordenar.Table to sort.
  • ColumnName: requerido.ColumnName - Required. El nombre de la columna según la cual ordenar, como cadenas.The column name to sort on, as strings.
  • SortOrderTable: requerido.SortOrderTable - Required. Tabla de valores de una sola columna según la cual ordenar.Single column table of values to sort by.

    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_".For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Por ejemplo, especifique "Nombre de columna" como "Nombre_x0020_de_columna".For example, specify "Column Name" as "Column_x0020_Name".

EjemplosExamples

En los ejemplos siguientes, usaremos el origen de datos Helado, que contiene los datos de esta tabla:For the following examples, we'll use the IceCream data source, which contains the data in this table:

FórmulaFormula DescripciónDescription ResultadoResult
Sort( Helado, Sabor )Sort( IceCream, Flavor )

SortByColumns( Helado, "Sabor" )SortByColumns( IceCream, "Flavor" )
Ordena Helado según su columna Sabor.Sorts IceCream by its Flavor column. La columna Sabor contiene cadenas, por lo que la tabla se ordena alfabéticamente.The Flavor column contains strings, so the table is sorted alphabetically. De manera predeterminada, el criterio de ordenación es ascendente.By default, the sort order is ascending.
Sort( Helado, Cantidad )Sort( IceCream, Quantity )

SortByColumns( Helado, "Cantidad" )SortByColumns( IceCream, "Quantity" )
Ordena Helado según su columna Cantidad.Sorts IceCream by its Quantity column. La columna Cantidad contiene números, por lo que la tabla se ordena numéricamente.The Quantity column contains numbers, so the table is sorted numerically. De manera predeterminada, el criterio de ordenación es ascendente.By default, the sort order is ascending.
Sort( Helado, Cantidad, SortOrder.Descending )Sort( IceCream, Quantity, SortOrder.Descending )

SortByColumns( Helado, "Cantidad", SortOrder.Descending )SortByColumns( IceCream, "Quantity", SortOrder.Descending )
Ordena Helado según su columna Cantidad.Sorts IceCream by its Quantity column. La columna Cantidad contiene números, por lo que se ordena numéricamente.The Quantity column contains numbers, so the sort is done numerically. El criterio de ordenación se especificó como descendente.The sort order has been specified as descending.
Sort( Helado, Cantidad + EnPedido )Sort( IceCream, Quantity + OnOrder ) Ordena Helado por la suma de sus columnas Cantidad y EnPedido para cada registro individualmente.Sorts IceCream by the sum of its Quantity and OnOrder columns for each record individually. La suma es un número, por lo que la tabla se ordena numéricamente.The sum is a number, so the table is sorted numerically. De manera predeterminada, el criterio de ordenación es ascendente.By default, the sort order is ascending. Como ordenamos según una fórmula y no según valores de columna sin formato, no hay ningún equivalente usando SortByColumns.Since we are sorting by a formula and not by raw column values, there is no equivalent using SortByColumns.
Sort( Sort( Helado, EnPedido ), Cantidad )Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( Helado, "EnPedido", Ascendente, "Cantidad", Ascendente )SortByColumns( IceCream, "OnOrder", Ascending, "Quantity", Ascending )
Ordena Helado primero según su columna EnPedido y, luego, según su columna Cantidad.Sorts IceCream first by its OnOrder column, and then by its Quantity column. Observe que "Pistacho" apareció arriba de "Vainilla" en la primera ordenación según EnPedido y, luego, pasaron a su lugar adecuado según Cantidad.Note that "Pistachio" rose above "Vanilla" in the first sort based on OnOrder, and then together they moved to their appropriate place based on Quantity.
SortByColumns( Helado, "Sabor", [ "Pistacho", "Fresa" ] )SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) Ordena Helado según su columna Sabor en función de la tabla con una sola columna que contiene "Pistacho" y "Fresa".Sorts IceCream by it's Flavor column based on the single column table containing "Pistachio" and "Strawberry". Los registros que tienen un Sabor "Pistacho" aparecerán primero en el resultado, seguidos de los registros que contienen "Fresa".Records which have a Flavor of "Pistachio" will appear first in the result, followed by records that contain "Strawberry". En el caso de los valores de la columna Sabor que no tienen coincidencia, como "Vainilla", aparecerán después de los elementos que sí tuvieron coincidencia.For values in the Flavor column that are not matched, such as "Vanilla", they will appear after the items that were matched.

Paso a pasoStep by step

Para ejecutar estos ejemplos, cree el origen de datos Helado como una colección:To run these examples yourself, create the IceCream data source as a collection:

  1. Agregue un botón y establezca su propiedad OnSelect en esta fórmula:Add a button, and set its OnSelect property to this formula:
    ClearCollect( Helado, { Sabor: "Chocolate", Cantidad: 100, EnPedido: 150 }, { Sabor: "Vainilla", Cantidad: 200, EnPedido: 20 }, { Sabor: "Fresa", Cantidad: 300, EnPedido: 0 }, { Sabor: "Menta-chocolate", Cantidad: 60, EnPedido: 100 }, { Sabor: "Pistacho", Cantidad: 200, EnPedido: 10 } )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.Preview the app, select the button, and then press Esc to return to the default workspace.
  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.Select Collections on the File menu to display the collection that you just created, and then press Esc to return to the default workspace.

OrdenarSort

  1. Agregue otro botón y establezca su propiedad OnSelect en esta fórmula:Add another button, and set its OnSelect property to this formula:
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    La fórmula anterior crear otra colección, denominada SortByFlavor, que contiene los mismos datos que Helado.The previous formula creates a second collection, named SortByFlavor, that contains the same data as Ice Cream. Sin embargo, la colección nueva contiene los datos ordenados alfabéticamente según la columna Sabor en orden ascendente.However, the new collection contains the data sorted alphabetically by the Flavor column in ascending order.

  2. Presione F5, seleccione el botón nuevo y, luego, presione Esc.Press F5, select the new button, and then press Esc.
  3. Seleccione Colecciones en el menú Archivo para mostrar ambas colecciones y, luego, presione Esc para volver al área de trabajo predeterminada.Select Collections on the File menu to display both collections, and then press Esc to return to the default workspace.
  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.Repeat the last three steps, but change the name of the collection that you want to create, and replace the Sort formula with a different formula from the table of examples earlier in this section that uses Sort.

SortByColumnsSortByColumns

  1. Agregue otro botón y establezca su propiedad OnSelect en esta fórmula:Add another button, and set its OnSelect property to this formula:
    ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", Ascending, "Flavor", Descending ) )ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", Ascending, "Flavor", Descending ) )

    La fórmula anterior crea una tercera colección, denominada SortByQuantity, que contiene los mismos datos que Helado.The previous formula creates a third collection, named SortByQuantity, that contains the same data as Ice Cream. Sin embargo, la colección nueva contiene los datos ordenados numéricamente según la columna Cantidad en orden ascendente y, luego, según la columna Sabor en orden descendente.However, the new collection contains the data sorted numerically by the Quanity column in ascending order, and then by the Flavor column in descending order.

  2. Presione F5, seleccione el botón nuevo y, luego, presione Esc.Press F5, select the new button, and then press Esc.
  3. Seleccione Colecciones en el menú Archivo para mostrar las tres colecciones y, luego, presione Esc para volver al área de trabajo predeterminada.Select Collections on the File menu to display all three collections, and then press Esc to return to the default workspace.
  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.Repeat the last three steps, but change the name of the collection that you want to create, and replace the SortByColumns formula with a different formula from the table of examples earlier in this section that uses SortByColumns.