CONTEXTO DE FILA

Aunque no he terminado con la saga de modelado que continuaré más adelante, esta semana se me ocurrió hablar del contexto de fila y el contexto de filtro, algo que debemos tener en cuenta a la hora de realizar nuestros cálculos.


Vamos a comenzar explicando que es el contexto de fila. Básicamente lo podemos equipar o puede considerarse como la fila actual en la que me encuentro. Obviamente con DAX no puedo referenciar una celda o rango especifico directamente ¿Cómo puedo tener ese concepto de fila actual? ¿O cómo puedo yo ir pasando por las filas?. Mediante:

  1. Funciones de iteración

  2. Columna calculada

En estas dos opciones, es donde nos vamos a encontrar ese contexto de fila dónde para cada fila ese contexto será distinto. ¿Por qué? Porque cada fila tiene un valor

Por verlo con un ejemplo:


Tenemos una métrica con un iterador que de la tabla productos, coge la columna de precio unitario y lo multiplicamos por 0.9


La tabla Productos no tiene filtros aplicados, por lo que cargamos toda la tabla.

La primera fila de la tabla Productos, el pan con un precio de 1 €. Ahí ha creado un contexto de fila que se corresponde con el contexto actual en el que estoy. Cuando acabo con la primera fila avanzo a la segunda. ¿Cuál es mi contexto de fila?...

Las cebollas

Y una vez acabado con la segunda fila pasa a la tercera.


 

CONTEXTO DE FILTRO

¿Qué hace que cambie nuestra métrica en Power BI?

  • Panel de filtros laterales (a nivel de informe, a nivel de página y visual)

  • A los segmentadores del informe

  • Filtro cruzado entre los visuales (siempre y cuando estén relacionados)

  • Eje visual

Resumiendo, ¡cualquier elemento que añada a una segmentación al modelo es nuestro contexto de filtro!

Vamos a verlo con un ejemplo. Tenemos la siguiente tabla:


Fijaros en el ejemplo tenemos una tabla con muchas filas.

En este caso en el contexto de filtro inicial tengo toda la combinatoria de valores únicos de la tabla y los tengo todos disponibles. ¿Se entiende?




En la siguiente imagen de Power BI tengo la tabla, un segmentador para el año igual a 2008 y un filtro en el panel lateral que me filtra los artículos que son ClassID 2 mostrando el resto.

¿Qué está ocurriendo?



Estamos modificando el contexto y todo lo que no cumpla ese requisito desaparece de la visual.

Las relaciones solo se pueden crear utilizando una columna únicamente, no la podemos crear usando dos columnas. En las relaciones hay una propagación del filtro automáticamente por esa relación entre las tablas, tambien sujeto a la dirección del filtro. Eso hace que una métrica para el total de ventas se segmente o se distribuya en los diferentes años si existe una relación entre las dos tablas. Ahora bien si recordáis a nivel de contexto de fila cuando creamos columnas calculadas no hay esa propagación automática, Power BI opera con el total de los datos cuando intenta referenciar explícitamente la columna.

¿Hay posibilidad de forzar esa propagación en DAX?

Sí, con RELATED o RELATEDTABLE, que lo veremos en un siguiente post...

¡Nos vemos en los datos!