PowerBI y el uso de las métricas condicionales

Introducción

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.

Solución

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.

Crear tablas auxiliares para el filtro

Para crear las tablas hay que especificar los datos manualmente ya que es una tabla auxiliar de la cual nos apoyaremos. Realizar lo siguiente.

Comparativo

La tabla Comparativo sirve para filtrar las columnas que tienen los importes en la medida comparativa que se quiere mostrar.

Divisa

La tabla divisa sirve para mostrar las columnas que tienen los importes en la divisa seleccionada

El objetivo

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.

  • Medida Condicional Comparativo
  • Medida Condicional Importe
  • Medida Condicional Seleccionado

Medida Condicional Comparativo

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]) )

Medida Condicional Importe

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]))

Medida Condicional Seleccionado

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 DEL MATERIAL

Descarga: http://datamanagement.es/Recursos/DAX_Medida_Dinamica.rar 

Enlaces de interés

Francisco Rodríguez Alfaro

Entradas recientes

Proyectos de Web Scraping, Integración de datos y big data

¿Qué es el web scraping? ¿Qué se puede obtener con él? ¿Por qué es interesante…

2 años hace

Proyectos de Web Scraping, Integración de datos y big data

¿Qué es el web scraping? ¿Qué se puede obtener con él? ¿Por qué es interesante…

2 años hace

La importancia de la Ingeniería de datos y el Big Data en el Marketing Digital

En un mundo cada vez más digitalizado las personas tendemos cada vez más a realizar…

3 años hace

Power BI Embedded en aplicaciones WEB

Introducción Ya utilizas powerBI de costumbre para analizar tu negocio y te gustaría ir un…

3 años hace

Obtener el valor anterior NO NULO con SQL Server, MySQL y PostgreSQL

Introducción En el desarrollo de proyectos de Business Intelligence, Big Data y Data Science la…

5 años hace

¿Código Python dentro de SQL Server?

  ¿Python en SQL Server?    Sí, desde la versión de SQL Server 2016 se…

5 años hace