Tutorial de DAX

Table.PositionOf

La función Table.PositionOf devuelve la posición de la primera ocurrencia de la fila indicada.

Sintaxis

Table.PositionOf(
    table as table,
    row as record,
    optional occurrence as any,
    optional equationCriteria as any
) as any

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

Si no se encuentra la 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 partimos de una tabla con dos campos, "id" y "name", y buscamos una fila que no se encuentra en la tabla:

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

-1

Función M Table.PositionOf

Comprobamos que la función ha devuelto el valor -1.

Si, por el contrario, buscamos una fila que sí se encuentre en la tabla, la función devuelve su posición:

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

3

Función M Table.PositionOf

Con el parámetro occurrence podemos controlar la ocurrencia a devolver: la primera, la última o todas. En este ejemplo la fila buscada 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.PositionOf(
        table,
        [id = 8, name = "Paul"],
        Occurrence.All
    )

Función M Table.PositionOf

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:

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

-1

Función M Table.PositionOf

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"]
        }
    )
in
    Table.PositionOf(
        table,
        [id = 33, name = "marta"],
        null,
        Comparer.OrdinalIgnoreCase
    )

2
Función M Table.PositionOf
Categoría
Funciones de tabla
Enviado por admin el Lun, 31/08/2020 - 10:21