La función que necesitamos deberá evaluar el contenido del campo Height para cada fila, y devolver true o false en función de que el valor de dicho campo supere el valor 180 o no.
Si aplicamos el mismo razonamiento que en los ejemplos anteriores, si hacemos uso de la palabra reservada each tendremos disponible en _ cada uno de los valores recibidos por la función como argumento. El matiz ahora es que la tabla se va a recorrer fila por fila, y lo que le llega a nuestra función como argumento de entrada es, precisamente, la fila siendo iterada en cada momento. Es decir, un registro.
Esto supone que deberíamos poder extraer el valor asociado a una clave (a una columna) con la nomenclatura registro[nombre-del-campo] que ya hemos visto. En nuestro caso queremos extraer el valor contenido en la columna Height y compararlo con 180, de manera que each _[Height] > 180 debería devolver los valores buscados:
data = #table(
type table[
#"Name" = text,
#"Height" = number,
#"Birthday" = date
],
{
{"John", 184, #date(1970, 10, 28)},
{"Susan", 176, #date(1976, 6, 15)},
{"George", 195, #date(1982, 4, 2)}
}
)
in
Table.AddColumn(
data,
"Tall",
each _[Height] > 180,
type logical
)
Efectivamente, vemos que el código funciona perfectamente, conteniendo la nueva columna, Tall, los valores lógicos correctos (true para alturas mayores de 180, false para el resto).
El único matiz a añadir es que en la documentación de Microsoft se indica (copiado literalmente) que
"cada valor [CustomerID] es igual que cada valor _[CustomerID], que es lo mismo que (_) => _[CustomerID]"
Lo que nos está indicando Microsoft es que, cuando hagamos referencia a un campo de la tabla, no necesitamos añadir el símbolo _ antes del nombre del campo (como en _[Height]) sino que podemos directamente escribir [Height], de forma que nuestro código podría quedar de la siguiente forma:
let
data = #table(
type table[
#"Name" = text,
#"Height" = number,
#"Birthday" = date
],
{
{"John", 184, #date(1970, 10, 28)},
{"Susan", 176, #date(1976, 6, 15)},
{"George", 195, #date(1982, 4, 2)}
}
)
in
Table.AddColumn(
data,
"Tall",
each [Height] > 180,
type logical
)