Selección de filas

Como se ha comentado, podemos imaginarnos una tabla formada una lista en la que cada valor es una fila:

Tabla como lista de filas

Eso sí, vemos que cada uno de los valores de la lista es una estructura que incluye tanto los nombres de las columnas como los valores, información que se almacena como un registro. Es decir, si consideramos una tabla como una lista de valores, cada valor es un registro.

El considerar una tabla como una lista nos permitiría seleccionar una fila usando la notación ya conocida de Lista{índice}. Por ejemplo, data{1} extraería la fila de Susan (recordemos que nuestra tabla se llama data y que el primer elemento de una lista es el que recibe el índice 0):

let
    data = #table(
        type table[
            FirstName = text,
            LastName = text,
            Score = number
        ],
        {
            {"John", "Smith", 14},
            {"Susan", "McGregor", 9},
            {"George", "Smith", 21}
        }
    )
in
    data{1}
Tabla como lista de filas

Efectivamente, el resultado es un registro. Si quisiéramos comprobarlo de forma programática, podríamos usar la función Value.Type que recibe un valor como argumento y devuelve su tipo:

let
    data = #table(
        type table[
            FirstName = text,
            LastName = text,
            Score = number
        ],
        {
            {"John", "Smith", 14},
            {"Susan", "McGregor", 9},
            {"George", "Smith", 21}
        }
    )
in
    Value.Type(data{1})
record
Tipo de una fila de una tabla

Y, por supuesto, para extraer un valor de un registro basta con usar la notación registro[nombre-de-campo]. Así, si una vez que hemos seleccionado la fila de Susan quisiéramos extraer su puntuación (campo Score), bastaría con indicar el registro (data{1}) seguido de [Score]:

let
    data = #table(
        type table[
            FirstName = text,
            LastName = text,
            Score = number
        ],
        {
            {"John", "Smith", 14},
            {"Susan", "McGregor", 9},
            {"George", "Smith", 21}
        }
    )
in
    data{1}[Score]
9
Tabla como lista de filas