La función Table.MinN devuelve las menores N filas de una tabla o las menores filas que satisfagan una cierta condición.
Table.MinN(
table as table,
comparisonCriteria as any,
countOrCondition as any
) as table
- table: tabla a evaluar
- comparisonCriteria: criterio de ordenación de la tabla
- countOrCondition: número de filas a extraer o condición que deberán satisfacer para ser seleccionadas
La función comienza ordenando la tabla de menor a mayor según el criterio indicado por comparisonCriteria.
Si el argumento countOrCondition es un valor numérico, se extraerá dicho número de elementos del comienzo de la tabla ordenada. Si la tabla no tiene tantas filas como se haya indicado, se devuelve la tabla completa. En el caso de igualdad entre dos o más registros, se selecciona el número que se haya especificado, sin un criterio de selección documentado (véase ejemplo).
Si se trata de una condición, la función extraerá las filas del comienzo de la tabla que la satisfagan hasta que encuentre la primera que no lo haga.
Si se especifica 0 como número de filas a extraer, o si ninguna fila satisface la condición indicada, la función devuelve una tabla vacía.
Según se indica en la documentación, "el algoritmo de ordenación no puede garantizar un resultado ordenado fijo".
En este primer ejemplo extraemos los dos registros con el valor del campo "age" más bajo:
let
table = Table.FromRecords(
{
[id = 11, name = "John", age = 55],
[id = 21, name = "Alfonso", age = 18],
[id = 33, name = "Marta", age = 35],
[id = 17, name = "Sonia", age = 40],
[id = 5, name = "Manuel", age = 23]
}
)
in
Table.MinN(
table,
"age",
2
)
Si se especifica 2 filas, se devolverán 2 filas aun cuando, como en este caso, haya dos candidatos a aparecer en la segunda posición (Sonia y Manuel). No está documentado el criterio de selección que se aplica en estas circunstancias:
let
table = Table.FromRecords(
{
[id = 11, name = "John", age = 55],
[id = 21, name = "Alfonso", age = 18],
[id = 33, name = "Marta", age = 35],
[id = 17, name = "Sonia", age = 23],
[id = 5, name = "Manuel", age = 23]
}
)
in
Table.MinN(
table,
"age",
2
)
Obsérvese que el criterio de ordenación de la tabla (impuesto por comparisonCriteria) es independiente del criterio de selección de filas (impuesto por countOrCondition). Por ejemplo, en el siguiente código se ordena la tabla según el campo "age" (lo que supone que los identificadores -campo "id"- quedarán en el orden 21, 5, 33, 17 y 11, correspondientes a los registros en los que el campo "age" toma los valores 18, 23, 35, 40 y 55, respectivamente) y, a continuación, escoge del principio de la tabla ordenada los registros que satisfagan la condición de que el campo "id" sea menor que 30. Éstos son los identificadores 11 y 21. El siguiente es 33 y no cumple la condición, lo que hace que la función termine la selección:
let
table = Table.FromRecords(
{
[id = 11, name = "John", age = 55],
[id = 21, name = "Alfonso", age = 18],
[id = 33, name = "Marta", age = 35],
[id = 17, name = "Sonia", age = 40],
[id = 5, name = "Manuel", age = 23]
}
)
in
Table.MinN(
table,
"age",
each [id] < 30
)