Y ya estamos a jueves, ¡y los jueves son de post! Si en el post anterior hablamos de las relaciones físicas inactivas en Power BI, ahora nos vamos a centrar en las relaciones virtuales.

¿Qué es una relación virtual? Es una relación que no existe físicamente en nuestro modelo. Para verlo vamos como siempre a nuestro modelo de Contoso y vamos a la pestaña de Modelo y tenemos el siguiente esquema.

 
 

Tenemos 3 tablas de dimensiones conectadas mediante relaciones físicas activas y una relación inactiva (recordar, la línea discontinua). Y tenemos una tabla de dimensión desconectada del modelo que es DimStore.

Generamos nuestra medida de TotalVentas de la siguiente manera:


 
 

Y la arrastramos al informe en formato tarjeta.  Y nos devuelve lo siguiente:

 

 
 

Como podemos ver, tenemos dos segmentadores de datos que son el Año y el Nombre del Almacen. El segmentador de datos correspondiente al año pertenece a la tabla de dimensión DimDate tal y como se puede ver:

 

 
 
 Y el segmentador de datos correspondiente al Nombre de Almacen corresponde a la tabla de dimensión DimStore tal y como podemos ver:

 
 
 
 Si modificamos el segmentador correspondiente al año al valor 2009, ¿se modificará el valor de la medida TotalVentas? Vamos a verlo:

 
 

Como podemos ver el valor de la medida se ha modificado y arroja el resultado correspondiente al total ventas del año 2009. ¿Y por qué se ha modificado? Por que como comentamos en el post anterior, una relación del modelo propaga los filtros aplicados en la columna de una tabla del modelo a otra tabla del modelo. Los filtros se propagarán siempre que haya una ruta de relación que seguir, lo que puede implicar la propagación a varias tablas. Y como hemos visto en el modelo, existe una relación física entre la tabla DimDate y FactSales:

 

 
 

Y si realizamos un filtro en el segmentador de Nombre de almacen, ¿se verá afectada la métrica de TotalVentas? Vamos a verlo:

 

 

Uy… el valor ha variado. ¿Cómo puede ser? ¿Hay una relación entre ambas tablas? La respuesta es NO:

 

 
 

¿En la métrica TotalVentas está USERELATIONSHIP? NO…


 
 

Y aparte para poder usar la función USERELATIONSHIP tiene que existir una relación física… Entonces, la tabla de dimensión está desconectada, no hay ninguna función en la métrica, el segmentador de datos pertenece a la tabla de dimensión… ¿Cómo puede ser que esté propagando el filtro? Vaya cortocircuito mental ¿eh? Bien, el motivo es por una de las formas de las relaciones virtuales. Vamos a analizarlo detenidamente, ¿cuántos segmentadores hay en pantalla?


 
 

En principio dos, ¿no? Pues la respuesta es tres. (uno de ellos está oculto ¿Magia eh?). Para visualizarlos vamos a la barra de menú Verà Selección:

 


 

Lo visualizamos:


 

Fijaros que, si selecciono cualquier almacen en el segmentador de la izquierda, el de abajo cambia a la vez.

 

 
 

¿Y cómo es qué está filtrando la medida? Pues porque están sincronizados. Al estar sincronizados, lo que yo selecciono en uno se selecciona en el otro. ¿Cómo sincronizamos los segmentadores? Para eso vamos a la barra de menú VeràSincronización de segmentadores.

 

 
 

¿Y cómo es que sabe cómo tiene que filtrar? Si nos fijamos en la parte de la derecha, los dos segmentadores están asignados al mismo grupo (StoreName) y tenemos activado el primer check que corresponde “Sincronizar cambios de campos con otras segmentaciones”.

Si vamos a los datos, vemos que la tabla DimStore tiene el campo StoreName:

 

 
 

Y la tabla FactSales tiene el campo StoreName:

 

 
 

 

¿O sea lo relaciona porque los campos se llaman igual? La respuesta es NO, lo relaciona por el contenido, es decir, ambas columnas tienen el mismo contenido. ¿Se entiende? Espero que sí, sino me dejáis un comentario y lo intento explicar más en detalle.

Hasta aquí la primera entrada de relaciones virtuales, pensaba escribir también hoy sobre la función TREATAS pero lo dejo para la semana que viene ya que por hoy es suficiente y menuda “chapa” os he soltado.

¡Nos vemos en los datos!