Cargando...
Muchas veces tenemos los datos con una estructura que no es la deseada y para mostrar la información como se quiere visualizar es un poco complicado. Para ello existe en PowerBI funciones como SELECTEDVALUE y SWITCH para generar métricas dinámicas.
Un ejemplo de esta complicación es cuando tenemos muchas columnas por cada fila. En el informe que tenemos que desarrollar nos piden que solo mostremos una columna pero esta columna tiene que poder cambiar dependiendo del filtro seleccionado.
Bien, para realizar esto con PowerBI es necesario hacer uso de DAX para implementar la lógica y de tablas auxiliares para mostrar los filtros.
Descarga de material: http://datamanagement.es/Recursos/DAX_Medida_Dinamica.rar
En la estructura del conjunto de datos vienen definidas todas las métricas en columnas y queremos tener una columna que sea condicional y dependa de los filtros seleccionados.
Para poder realizar esto con powerBI lo primero que se realiza es la importación de los datos.
Para crear las tablas hay que especificar los datos manualmente ya que es una tabla auxiliar de la cual nos apoyaremos. Realizar lo siguiente.
La tabla Comparativo sirve para filtrar las columnas que tienen los importes en la medida comparativa que se quiere mostrar.
La tabla divisa sirve para mostrar las columnas que tienen los importes en la divisa seleccionada
El objetivo es conseguir un pequeño dashboard con medidas condicionales que muestre la suma de la columna deseada y dependiendo del filtro cambie de columna teniendo una única medida.
Para conseguir esto uso DAX. He creado 3 nuevas métricas.
Esta métrica condicional devuelve una de las 6 columnas dependiendo de los filtros seleccionados. Para ello lo que realizo es obtener el valor de los filtros seleccionados con la función SELECTEDVALUE de DAX, luego concateno estos valores y después realizo un SWITCH de DAX para comprobar los valores seleccionados.
Para cada combinación devuelvo la suma de la columna en concreto. Como se puede observar esta medida puede devolver hasta 6 columnas diferentes comprobando los filtros seleccionados.
Código:
Medida Condicional Comparativo =
var divisa_seleccionada = SELECTEDVALUE(Divisa[Divisa])
var comparativo_seleccionado = SELECTEDVALUE(Comparativo[Comparativo])
var concatenado = divisa_seleccionada & » – » & comparativo_seleccionado
return
SWITCH( concatenado;
«Local – Año anterior»; sum(Hoja1[importe_ano_anterior_local]);
«Local – Presupuesto»; sum(Hoja1[importe_presupuesto_local]);
«USD – Año anterior»; sum(Hoja1[importe_ano_anterior_usd]);
«USD – Presupuesto»; sum(Hoja1[importe_presupuesto_usd]);
«Local – «; SUM(Hoja1[importe_local]);
«USD – «; sum(Hoja1[importe_usd]) )
Esta medida es parecida a la anterior pero solo detecta los cambios en el filtro divisa. Además, solo puede devolver el USD o Local de las columnas “Importe” y obviando el presupuesto y año anterior.
Código:
Medida Condicional Importe =
var divisa_seleccionada = SELECTEDVALUE(Divisa[Divisa])
return
SWITCH( divisa_seleccionada;
«Local»; sum(Hoja1[importe_local]);
«USD»; sum(Hoja1[importe_usd]))
Esta medida sólo sirve para mostrar un Label con las opciones seleccionadas. Es el Label que está encima de la tabla.
Código:
Medida Condicional Seleccionado =
var divisa_seleccionada = SELECTEDVALUE(Divisa[Divisa])
var comparativo_seleccionado = SELECTEDVALUE(Comparativo[Comparativo])
var periodo_seleccionado = SELECTEDVALUE(Hoja1[periodo])
var concatenado = divisa_seleccionada & » – » & comparativo_seleccionado & «- » & periodo_seleccionado
return
concatenado
Descarga: http://datamanagement.es/Recursos/DAX_Medida_Dinamica.rar
Virgen del pilar nº4, ático H
03330 Crevillente (Alicante)
Francisco Rodriguez Alfaro