Table.Sort

La función Table.Sort devuelve una tabla tras ordenarla según uno o más campos.

Sintaxis

Table.Sort(
    table as table,
    comparisonCriteria as any
) as table

Parámetros
  • table: tabla a ordenar
  • comparisonCriteria: criterios de ordenación
Información adicional

El parámetro comparisonCriteria puede tomar tres formas:

Nombre de un campo

Si el criterio de ordenación se reduce a un único campo, el parámetro comparisonCriteria puede ser simplemente el nombre de dicho campo:

Table.Sort(
    nombre-de-tabla,
    "nombre-de-campo"
)

Lista conteniendo el nombre de un campo y el orden

El nombre del campo mencionado en el apartado anterior puede complementarse con el orden de ordenación (ascendente o desdencente). En este caso el parámetro comparisonCriteria será una lista conteniendo ambos valores:

Table.Sort(
    nombre-de-tabla,
    {"nombre-de-campo", criterio-de-ordenación}
)

Lista de criterios

Por último, si se desea ordenar la tabla según más de un campo, el parámetro comparisonCriteria será una lista cuyos elementos serán, o bien nombres de campos, o listas conteniendo pares de valores: nombres de campos y el orden:

Table.Sort(
    nombre-de-tabla,
    {
        "nombre-de-campo",
        {"nombre-de-campo", criterio-de-ordenación},
        {"nombre-de-campo", criterio-de-ordenación},
        "nombre-de-campo"
    }
)

Ejemplos

En este ejemplo partimos de la siguiente tabla conteniendo productos y sus precios, ordenada inicialmente según el identificador del producto:

let
    table = Table.FromRecords(
        {
            [id = 1, name = "glasses", price = 250],
            [id = 2, name = "computer", price = 800],
            [id = 3, name = "pen", price = 6],
            [id = 4, name = "mouse", price = 12]
        }
    )
in
    table

Función M Table.Sort

Podemos ordenarla según el campo "price" con el siguiente código:

let
    table = Table.FromRecords(
        {
            [id = 1, name = "glasses", price = 250],
            [id = 2, name = "computer", price = 800],
            [id = 3, name = "pen", price = 6],
            [id = 4, name = "mouse", price = 12]
        }
    )
in
    Table.Sort(
        table,
        "price"
    )

Función M Table.Sort

Siguiendo con el mismo ejemplo, podemos ordenar la tabla según el mismo campo pero en sentido descendente con el siguiente código:

let
    table = Table.FromRecords(
        {
            [id = 1, name = "glasses", price = 250],
            [id = 2, name = "computer", price = 800],
            [id = 3, name = "pen", price = 6],
            [id = 4, name = "mouse", price = 12]
        }
    )
in
    Table.Sort(
        table,
        {
            {"price", Order.Descending}
        }
    )

Función M Table.Sort

Es posible ordenar la tabla según dos o más campos. Por ejemplo, la siguiente tabla incluye el nombre del producto, su color y el precio:

let
    table = Table.FromRecords(
        {
            [id = 1, name = "mouse", color = "blue", price = 12],
            [id = 2, name = "glasses", color = "red", price = 250],
            [id = 3, name = "pen", color = "green", price = 6],
            [id = 4, name = "glasses", color = "blue", price = 250],
            [id = 5, name = "pen", color = "red", price = 6],
            [id = 6, name = "computer", color = "black", price = 800]
        }
    )
in
    table

Función M Table.Sort

Podemos ordenarla según el nombre y, en caso de igualdad, según el color con el siguiente código:

let
    table = Table.FromRecords(
        {
            [id = 1, name = "mouse", color = "blue", price = 12],
            [id = 2, name = "glasses", color = "red", price = 250],
            [id = 3, name = "pen", color = "green", price = 6],
            [id = 4, name = "glasses", color = "blue", price = 250],
            [id = 5, name = "pen", color = "red", price = 6],
            [id = 6, name = "computer", color = "black", price = 800]
        }
    )
in
    Table.Sort(
        table,
        {"price", "color"}
    )

Función M Table.Sort

Obsérvese que, por ejemplo, el producto "glasses" aparece en la tabla original primero con el color "red" y después con el color "blue", mientras que, en la tabla ordenada, aparece primero la fila con el color "blue" pues el criterio de ordenación es alfabético y, por defecto, ascendente.

Si quisiéramos que el campo "color" se ordenase (a igualdad del campo "price") en sentido descendente, podríamos conseguirlo con el siguiente código:

let
    table = Table.FromRecords(
        {
            [id = 1, name = "mouse", color = "blue", price = 12],
            [id = 2, name = "glasses", color = "red", price = 250],
            [id = 3, name = "pen", color = "green", price = 6],
            [id = 4, name = "glasses", color = "blue", price = 250],
            [id = 5, name = "pen", color = "red", price = 6],
            [id = 6, name = "computer", color = "black", price = 800]
        }
    )
in
    Table.Sort(
        table,
        {
            "price",
            {"color", Order.Descending}
        }
    )

Función M Table.Sort
Categoría
Funciones de tabla
Submitted by admin on Thu, 08/27/2020 - 14:59