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:
Almacen corresponde a la tabla de dimensión DimStore tal y como podemos ver:
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!