Table.PositionOfAny

La función Table.PositionOfAny devuelve la posición de la primera aparición de cualquiera de las filas indicadas.

Sintaxis

Table.PositionOfAny(
    table as table,
    rows as list,
    optional occurrence as nullable number,
    optional equationCriteria as any
) as any

Parámetros
  • table: tabla en la que realizar la búsqueda
  • rows: filas a buscar
  • occurrence: (opcional) tipo de ocurrencia
  • equationCriteria: (opcional) criterio de comparación de valores
Información adicional

Si no se encuentra ninguna fila, la función devuelve el valor -1.

La primera fila recibe el índice 0.

El tipo de ocurrencia puede ser:

En este último caso la función devuelve una lista con los índices de las ocurrencias. Si no se encontrase ninguna ocurrencia, la función devolvería una lista vacía.

Ejemplos

En este primer ejemplo buscamos la primera ocurrencia de dos filas que no se encuentran en la tabla:

let
    table = Table.FromRecords(
        {
            [id = 15, name = "John"],
            [id = 21, name = "Alfonso"],
            [id = 33, name = "Marta"],
            [id = 8, name = "Paul"]
        }
    )
in
    Table.PositionOfAny(
        table,
        {
            [id = 13, name = "Diego"],
            [id = 24, name = "Lucía"]
        }
    )

-1
Función M Table.PositionOfAny

Comprobamos que la función devuelve el valor -1.

Siguiendo con el mismo ejemplo, si añadimos en la lista de filas a buscar alguna que sí se encuentre en la tabla, la función devuelve su índice:

let
    table = Table.FromRecords(
        {
            [id = 15, name = "John"],
            [id = 21, name = "Alfonso"],
            [id = 33, name = "Marta"],
            [id = 8, name = "Paul"]
        }
    )
in
    Table.PositionOfAny(
        table,
        {
            [id = 13, name = "Diego"],
            [id = 21, name = "Alfonso"]
        }
    )

1

Función M Table.PositionOfAny

Con el parámetro occurrence podemos controlar la ocurrencia a devolver: la primera, la última o todas. En este ejemplo una de las filas buscadas -la única que aparece en la tabla- aparece dos veces, en las posiciones (índices) 3 y 5:

let
    table = Table.FromRecords(
        {
            [id = 15, name = "John"],
            [id = 21, name = "Alfonso"],
            [id = 33, name = "Marta"],
            [id = 8, name = "Paul"],
            [id = 17, name = "Ángeles"],
            [id = 8, name = "Paul"]
        }
    )
in
    Table.PositionOfAny(
        table,
        {
            [id = 13, name = "Diego"],
            [id = 8, name = "Paul"]
        },
        Occurrence.All
    )

Función M Table.PositionOfAny

Si, en el caso anterior, la tabla incluye ocurrencias de más de una fila, la función devolverá todos los índices. En el siguiente ejemplo la tabla incluye las dos filas buscadas (y una de ellas aparece dos veces):

let
    table = Table.FromRecords(
        {
            [id = 15, name = "John"],
            [id = 21, name = "Alfonso"],
            [id = 33, name = "Marta"],
            [id = 8, name = "Paul"],
            [id = 17, name = "Ángeles"],
            [id = 8, name = "Paul"]
        }
    )
in
    Table.PositionOfAny(
        table,
        {
            [id = 15, name = "John"],
            [id = 8, name = "Paul"]
        },
        Occurrence.All
    )

Función M Table.PositionOfAny

El parámetro equationCriteria nos permite determinar el criterio de igualdad. Por ejemplo, las mayúsculas y minúsculas son consideradas, por defecto, letras diferentes, de ahí que no se encuentre la aparición de la fila conteniendo el texto "paul":

let
    table = Table.FromRecords(
        {
            [id = 15, name = "John"],
            [id = 21, name = "Alfonso"],
            [id = 33, name = "Marta"],
            [id = 8, name = "Paul"],
            [id = 17, name = "Ángeles"],
            [id = 8, name = "Paul"]
        }
    )
in
    Table.PositionOfAny(
        table,
        {
            [id = 35, name = "Diego"],
            [id = 8, name = "paul"]
        }
    )

-1

Función M Table.PositionOfAny

Si añadimos como cuarto parámetro la función Comparer.OrdinalIgnoreCase, la búsqueda ya devuelve un valor diferente de -1:

let
    table = Table.FromRecords(
        {
            [id = 15, name = "John"],
            [id = 21, name = "Alfonso"],
            [id = 33, name = "Marta"],
            [id = 8, name = "Paul"],
            [id = 17, name = "Ángeles"],
            [id = 8, name = "Paul"]
        }
    )
in
    Table.PositionOfAny(
        table,
        {
            [id = 35, name = "Diego"],
            [id = 8, name = "paul"]
        },
        null,
        Comparer.OrdinalIgnoreCase
    )

3

Función M Table.PositionOfAny
Categoría
Funciones de tabla
Enviado por admin el Lun, 31/08/2020 - 11:35