La función LASTNONBLANK devuelve el último valor de una columna para el que una expresión no devuelve un Blank.
LASTNONBLANK(
column,
expression
)
- column: Columna cuyos valores se desea analizar.
- expression: Expresión evaluada para cada valor de la columna.
La función LASTNONBLANK devuelve una tabla conteniendo una única columna con un único valor correspondiente al último valor de la columna para el que la expresión indicada no devuelve un Blank.
El argumento column puede ser una referencia a una columna existente, una tabla con una única columna o una expresión booleana que defina una tabla con una única columna. En este último caso, la expresión no puede hacer referencia a una medida, ni usar la función CALCULATE anidada, ni usar funciones iterativas (de escaneo de una tabla) ni funciones que devuelvan una tabla.
La columna indicada no se agrega al contexto de filtro para la evaluación de la expresión. Es decir, la expresión no se va a evaluar en el contexto de filtro creado por cada valor de la columna. Si deseamos que se propague el contexto, deberemos hacerlo de forma explícita calculando la expresión como argumento de CALCULATE.
Antes de evaluar la expresión, la tabla se ordena según los valores de la columna indicada.
Para ver cómo funcionan las funciones LASTNONBLANK y LASTNONBLANKVALUE, partimos de la siguiente tabla:
Podemos comprobar cómo las dos últimas columnas incluyen celdas vacías. Leemos la tabla desde Power BI y creamos dos medidas aplicando ambas funciones usando como expresión el producto del ancho y el alto:
LASTNONBLANK =
LASTNONBLANK(
data[Valor],
CALCULATE(SUM(data[Ancho]) * SUM(data[Alto]))
)
En la expresión anterior encerramos la expresión en la función CALCULATE para que se evalúe en el contexto de fila creado por cada valor de la columna indicada.
LASTNONBLANKVALUE =
LASTNONBLANKVALUE(
data[Valor],
SUM(data[Ancho]) * SUM(data[Alto])
)
En esta segunda expresión no es necesario usar la función CALCULATE pues la función LASTNONBLANKVALUE ya fuerza a que la expresión incluida como segundo argumento se calcule en el contexto de fila de cada valor de la columna.
Ahora, llevamos ambas medidas a una tarjeta de varias filas:
Comprobamos claramente las diferencias entre ambas funciones: LASTNONBLANK devuelve valores de la columna indicada. Concretamente devuelve el último valor para el que la expresión no devuelva un valor Blank (el 5 correspondiente a la penúltima fila). Es importante insistir en que, para el cálculo de la función, la tabla se va a ordenar según los valores de la columna. En este ejemplo las filas ya están ordenadas según este criterio, pero el resultado obtenido sería diferente si el orden fuese otro.
Por el contrario, LASTNONBLANKVALUE devuelve el resultado de la expresión. Concretamente el último valor obtenido no Blank tras recorrer la tabla ordenada según los valores de la columna.