La función FIRSTNONBLANKVALUE devuelve el primer valor resultado de evaluar una expresión que no sea un Blank, aplicándose esta expresión a una tabla ordenada según los valores de una cierta columna.
FIRSTNONBLANKVALUE(
column,
expression
)
- column: Columna cuyos valores determinan el orden de la tabla.
- expression: Expresión a evaluar para cada valor de la columna.
La función FIRSTNONBLANKVALUE devuelve una tabla conteniendo una única columna con un único valor correspondiente al primer valor devuelto por la expresión que no sea un Blank.
La columna puede ser una referencia a una columna o una tabla conteniendo una única columna.
La columna indicada se agrega al contexto de filtro para la evaluación de la expresión. Es decir, la expresión se va a evaluar en el contexto de filtro creado por cada valor de la columna.
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 FIRSTNONBLANK y FIRSTNONBLANKVALUE, partimos de la siguiente tabla:
Podemos comprobar cómo las tres 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:
FIRSTNONBLANK =
FIRSTNONBLANK(
data[Valor],
CALCULATE(SUM(data[Ancho]) * SUM(data[Alto]))
)
En la medida 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.
FIRSTNONBLANKVALUE =
FIRSTNONBLANKVALUE(
data[Valor],
SUM(data[Ancho]) * SUM(data[Alto])
)
En esta segunda medida no es necesario usar la función CALCULATE pues la función FIRSTNONBLANKVALUE ya fuerza a que la expresión incluida como segundo argumento se calcule en el contexto de fila de cada valor de la columna referenciada.
Ahora, llevamos ambas medidas a una tarjeta de varias filas:
Comprobamos claramente las diferencias entre ambas funciones: FIRSTNONBLANK devuelve valores de la columna indicada. Concretamente devuelve el primer valor para el que la expresión no devuelva un Blank (el 2 correspondiente a la segunda 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 los valores incluidos en la columna fuesen otros.
Por el contrario, FIRSTNONBLANKVALUE devuelve el resultado de la expresión. Concretamente el primer valor obtenido que no sea Blank tras recorrer la tabla ordenada según los valores de la columna.