Crea tu primer dashboard en Power BI: Guía paso a paso
¿Te intimida la tarea de crear un dashboard en Power BI? Este sentimiento de incertidumbre frena a muchos profesionales antes de comenzar...
Olvida todo lo que sabías sobre análisis de datos, la llegada de DAX a Power BI ha cambiado totalmente las reglas y el sistema que conocías. En este artículo aprenderás los fundamentos para utilizar DAX tu sistema analítico y cómo esta herramienta puede hacer que tus datos te aporten ventajas competitivas que antes parecían inalcanzables.
Power BI se ha impuesto como una de las soluciones más destacadas para la toma de decisiones estratégicas basadas en datos, permitiéndonos aprovechar todos los beneficios de la inteligencia empresarial para extraer conocimiento de nuestros datos. Sin embargo, detrás de su interfaz intuitiva y su apariencia amigable, se oculta un motor analítico muy potente: el lenguaje DAX (Data Analysis Expressions). DAX tiene el poder de transformar datos crudos en insights valiosos, revelando patrones ocultos y tendencias significativas que impulsan el éxito empresarial.
En este articulo hablaremos sobre DAX y su papel en Power BI, revisando desde los conceptos más básicos hasta los conceptos más técnicos del análisis avanzado. Exploraremos su sintaxis y funciones a través de ejemplos prácticos y descubriremos las herramientas esenciales que todo analista de Power BI debe dominar. Si quieres saber más sobre Power BI o algunos de los conceptos que comentamos te son desconocidos, te invito a que leas nuestro artículo Qué es Power BI: Transformando datos en decisiones, el cual te ayudará a adquirir un conocimiento básico sobre esta solución de Business Intelligence.
Además, te mostraremos las mejores prácticas, de forma que aprenderás cómo escribir fórmulas DAX claras y eficientes que se ejecutan con una mayor rapidez. ¡Prepárate para conocer el poder de DAX y llevar tus habilidades analíticas a un nuevo nivel!
DAX (Data Analysis Expressions) es un lenguaje de fórmulas utilizado en Power BI para realizar cálculos, manipulaciones y análisis de datos dentro de los modelos de datos. Aquellos que habéis trabajado previamente con Excel estáis de suerte, ya que DAX es muy similar en su sintaxis y funcionalidad, pero está optimizado para trabajar con grandes volúmenes de datos y modelos relacionales en Power BI.
Una de las formas más comunes de utilizar DAX en Power BI es crear medidas. Las medidas son fórmulas que calculan agregaciones, como sumas, promedios o recuentos, y se pueden utilizar en visualizaciones para mostrar métricas clave. Por ejemplo, puedes crear una medida para calcular las ventas totales o el promedio de ventas por cliente. En próximos apartados exploraremos algunas de estas fórmulas mediante ejemplos.
Además, DAX también se puede utilizar para crear columnas calculadas en las tablas de datos. Estas columnas calculadas son similares a las columnas normales de una tabla, pero sus valores se calculan dinámicamente en función de una fórmula definida por el usuario. Esto puede ser útil para agregar datos adicionales o realizar cálculos basados en otras columnas de la tabla.
Dentro de las fórmulas de DAX tenemos una gran variedad de funciones para manipular texto y fechas en tus datos. Por ejemplo, puedes utilizar funciones como LEFT, RIGHT, MID para extraer partes de una cadena de texto, o funciones como YEAR, MONTH, DAY para extraer componentes de una fecha. Pero estas son solo algunas de ellas, si quieres conocerlas sigue leyendo el artículo, o también puedes visitar nuestro Curso de fundamentos de DAX, donde aprenderás a utilizarlas de manera más detallada.
En la siguiente imagen podéis observar un ejemplo de fórmula de DAX:
Esta fórmula contiene los siguientes elementos de sintaxis:
Puedes interpretar esta fórmula de la siguiente manera, para la medida llamada “Suma del importe de ventas”, calcule la suma de los valores de la columna [SalesAmount] de la tabla FactSales.
Pero SUM no es la única función disponible, las funciones DAX son la base del lenguaje y se utilizan para realizar cálculos y manipulaciones de datos. Las funciones pueden ser funciones de agregación (como SUM, AVERAGE), funciones matemáticas (como ROUND, ABS), funciones de texto (como LEFT, RIGHT), funciones de fecha y hora (como YEAR, MONTH) y muchas otras. A continuación, te mostramos algunas de las funciones más utilizadas, cada una de ellas junto con un ejemplo:
Esta función se utiliza para sumar los valores de una columna específica en una tabla.
Ejemplo: Total_Ventas = SUM(‘TablaVentas’[Importe])
Sirve para calcular la suma de los importes de ventas en la tabla ‘TablaVentas’.
Calcula el promedio de los valores en una columna específica.
Ejemplo: Promedio_Ventas = AVERAGE(‘TablaVentas’[Importe])
Calcula el promedio de los importes de ventas en la tabla ‘TablaVentas’.
Cuenta el número de filas en una tabla o el número de valores distintos en una columna.
Ejemplo: Cantidad_Productos = COUNT(‘TablaProductos’[ID])
Cuenta la cantidad de productos en la tabla ‘TablaProductos’ según su ID.
Devuelven el valor máximo y mínimo de una columna, respectivamente.
Ejemplo: Mayor_Venta = MAX(‘TablaVentas’[Importe])
Localiza el importe máximo de venta en la tabla ‘TablaVentas’.
Esta función se utiliza para realizar una evaluación condicional. Puedes utilizarla para devolver diferentes resultados basados en una condición.
Ejemplo: Estado_Venta = IF(‘TablaVentas’[Importe] > 1000, “Alta”, “Baja”)
Asigna el estado “Alta” si el importe de la venta es mayor que 1000, de lo contrario, asigna “Baja”.
Estas funciones se utilizan para realizar cálculos con fechas. DATEADD se utiliza para agregar un intervalo de tiempo a una fecha, mientras que DATEDIFF calcula la diferencia entre dos fechas.
Ejemplo: Fecha_Futura = DATEADD(‘TablaCalendario’[Fecha], 1, DAY)
Calcula la fecha que será un día después de la fecha presente en la columna ‘Fecha’ de la tabla ‘TablaCalendario’.
Otro ejemplo: Diferencia_Dias = DATEDIFF(‘TablaCalendario’[FechaInicio], ‘TablaCalendario’[FechaFin], DAY)
Calcula la diferencia en días entre las fechas de inicio y fin en la tabla ‘TablaCalendario’.
Retorna el número especificado de filas que tienen los valores más altos en una tabla o expresión.
Ejemplo: Top_5_Productos = TOPN(5, ‘TablaProductos’, ‘TablaProductos’[Ventas], DESC)
Devuelve los 5 productos con las ventas más altas en la tabla ‘TablaProductos’.
Esta función se utiliza para realizar una serie de comparaciones y devolver un valor correspondiente cuando se cumple una condición.
Ejemplo: Puntuacion_Evaluacion = SWITCH(‘TablaEvaluaciones’[Puntuacion], 1, “Malo”, 2, “Regular”, 3, “Bueno”, “Desconocido”)
Asigna un estado de evaluación (“Malo”, “Regular”, “Bueno” o “Desconocido”) según la puntuación de la evaluación en la tabla ‘TablaEvaluaciones’.
Por último, DAX permite la declaración y uso de variables para almacenar valores intermedios o complejos que se utilizarán en múltiples partes de una fórmula.
Ejemplo:
VAR Total_Ventas = SUM(‘TablaVentas’[Importe])
RETURN Total_Ventas * 0.1
Calcula el 10% del total de ventas almacenado en la variable ‘Total_Ventas’.
En esta sección vamos a hablar de dos conceptos fundamentales en DAX, el contexto de filtro y las relaciones. Estos tienen un gran impacto en cómo se realizan los cálculos en DAX. Además, revisaremos funciones que nos pueden ayudar a trabajar con ellos.
El contexto de filtro se refiere a las condiciones que se aplican a los datos en una fórmula DAX. Estas condiciones pueden provenir de las interacciones del usuario con los elementos visuales (como selecciones en un gráfico o segmentaciones) o pueden ser definidas explícitamente en la fórmula utilizando funciones de filtro como las que veremos en la siguiente sección.
El contexto de filtro puede ser de diferentes tipos, como el contexto de fila, el contexto de columna o el contexto de celda. Estos contextos determinan qué filas o columnas están consideradas para los cálculos en la fórmula de DAX que hemos definido.
Por ejemplo, si estás visualizando ventas por región en un gráfico y seleccionas una región específica, el contexto de filtro se aplica a los datos y los cálculos se realizan solo para esa región seleccionada.
Por otro lado, las relaciones definen cómo se conectan las tablas en el modelo de datos de Power BI. Estas relaciones se establecen utilizando campos comunes en las tablas y son fundamentales para realizar cálculos a través de tablas relacionadas. Cuando realizas un cálculo que involucra múltiples tablas relacionadas, el contexto de filtro se propaga a través de estas relaciones. Esto significa que las filas que cumplen las condiciones del filtro en una tabla también afectan los cálculos en las tablas relacionadas.
Por ejemplo, si tienes una tabla de ventas relacionada con una tabla de productos, y aplicas un filtro a la tabla de productos para mostrar solo ciertos productos, este filtro también se aplicará a los cálculos de ventas asociados con esos productos.
Cuando realizas un cálculo con dos tablas es importante asegurarse de que están relacionadas, ya que si no obtendrás resultados imprecisos o incorrectos. Esto se debe a que Power BI asume que las tablas están desconectadas y no puede establecer una relación entre ellas para realizar cálculos precisos. Por ejemplo, si intentas sumar una columna de una tabla con otra columna de una tabla no relacionada, Power BI no podrá correlacionar los datos de ambas tablas de manera significativa y simplemente agregará los valores de ambas columnas, lo que puede llevar a resultados incorrectos.
De esta manera, tenemos fórmulas que nos permiten la manipulación de contexto y las relaciones y que nos ayudan a controlar cómo se aplican los filtros y las interacciones entre las diferentes partes de nuestro informe. A continuación, vamos a ver las más utilizadas.
Esta es una de las funciones más poderosas para la manipulación de contexto. Permite modificar el contexto de evaluación de otras funciones dentro de su argumento. Podemos utilizar CALCULATE para aplicar filtros, cambiar el contexto de las relaciones, o modificar las interacciones de las slicers.
TotalVentasConDescuento =
CALCULATE(
SUM(Ventas[Monto]),
Ventas[Descuento] > 0
)
La función CALCULATE modifica el contexto de evaluación de SUM(Ventas[Monto]), aplicando un filtro adicional para sumar solo los valores para los que la columna Ventas[Descuento] es mayor que cero.
La función FILTER te permite aplicar un nuevo filtro a una tabla o una expresión de tabla. Esto puede ser útil cuando necesitas aplicar filtros específicos a una tabla en lugar de cambiar el contexto global de la visualización.
VentasMayoresA1000 =
FILTER(
Ventas,
Ventas[Monto] > 1000
)
En el ejemplo, se crea una nueva tabla filtrando solo las ventas cuyo monto es mayor a 1000.
Estas tres funciones en Power BI son fundamentales para manipular el contexto de los filtros aplicados a las columnas de las tablas en tus visualizaciones.
La función ALL elimina los filtros aplicados a una columna específica, devolviendo todos los valores de esa columna, sin importar los filtros aplicados en la visualización.
TotalVentasSinFiltro =
CALCULATE(
SUM(Ventas[Monto]),
ALL(Ventas[Monto])
)
En el ejemplo anterior, ALL(Ventas[Monto]) elimina todos los filtros aplicados a la columna “Monto” de la tabla “Ventas”, lo que significa que SUM(Ventas[Monto]) calculará la suma total de todas las ventas sin tener en cuenta los filtros aplicados a la columna “Monto”.
La función ALLEXCEPT se utiliza para eliminar todos los filtros aplicados a todas las columnas de una tabla, excepto a una o varias columnas especificadas.
TotalVentasSinFiltroExceptoProducto =
CALCULATE(
SUM(Ventas[Monto]),
ALLEXCEPT(Ventas, Ventas[Producto])
)
En el ejemplo ALLEXCEPT(Ventas, Ventas[Producto]), se eliminan todos los filtros aplicados a la tabla “Ventas”, excepto aquellos que se aplican a la columna “Producto”.
Esto significa que SUM(Ventas[Monto]) calculará la suma total de ventas, manteniendo los filtros aplicados a la columna “Producto”. Es útil cuando deseas mantener el filtro aplicado a una o varias columnas específicas, como “Producto”, mientras ignoras los filtros aplicados a otras columnas.
Por último, ALLSELECTED se utiliza para eliminar todos los filtros aplicados a una columna o a todas las columnas de una tabla, excepto aquellos filtros que provienen de la interacción del usuario.
TotalVentasSinFiltroExceptoInteraccionUsuario =
CALCULATE(
SUM(Ventas[Monto]),
ALLSELECTED(Ventas)
)
En el ejemplo ALLSELECTED(Ventas), se eliminan todos los filtros aplicados a la tabla “Ventas”, excepto aquellos que el usuario haya aplicado manualmente a través de las interacciones de la visualización. Esto significa que SUM(Ventas[Monto]) calculará la suma total de ventas, manteniendo los filtros que el usuario haya aplicado manualmente.
Estas funciones se utilizan para seguir relaciones entre tablas. RELATED devuelve el valor relacionado de una columna en una tabla relacionada, mientras que RELATEDTABLE devuelve una tabla relacionada.
La función RELATED se utiliza para obtener un valor relacionado de otra tabla basada en la relación establecida en el modelo de datos. Esta función se utiliza cuando quieres acceder a un valor relacionado de una sola fila en otra tabla.
Supongamos que tienes una tabla de ventas y una tabla de productos, donde cada venta está relacionada con un producto a través de una columna “ID Producto”. Quieres calcular las ventas totales para un producto específico, pero solo para las ventas que ocurrieron en un año determinado.
VentasProductoEnAnioEspecifico =
CALCULATE(
SUM(Ventas[Monto]),
FILTER(
Ventas,
YEAR(Ventas[Fecha]) = 2023
),
RELATED(Productos[IDProducto]) = “ProductoXYZ”
)
En este ejemplo, utilizamos la función RELATED para relacionar la tabla de ventas con la tabla de productos a través de la columna “ID Producto”, y luego calculamos la suma de las ventas solo para el producto específico (“ProductoXYZ”) que estamos interesados, pero limitando las ventas al año 2023.
Por otro lado, la función RELATEDTABLE se utiliza para obtener una tabla relacionada de otra tabla basada en la relación establecida en el modelo de datos. Esta función se utiliza cuando quieres acceder a una tabla de varias filas relacionadas de otra tabla.
Digamos que tienes una tabla de empleados y una tabla de ventas, donde cada venta está asociada a un empleado a través de una columna “ID Empleado”.
Quieres calcular las ventas totales realizadas por los empleados del mismo departamento que un empleado específico, pero solo para un período de tiempo determinado.
VentasEmpleadosMismoDepartamento =
CALCULATE(
SUM(Ventas[Monto]),
FILTER(
RELATEDTABLE(Empleados),
Empleados[Departamento] = RELATED(Ventas[IDEmpleado]).Departamento
),
Ventas[Fecha] >= DATE(2023, 1, 1) && Ventas[Fecha] <= DATE(2023, 12, 31)
)
En este ejemplo, utilizamos la función RELATED para relacionar la tabla de ventas con la tabla de empleados a través de la columna “ID Empleado”. Luego, filtramos los empleados del mismo departamento que el empleado relacionado con la venta actual y calculamos la suma de las ventas para ese grupo de empleados, pero limitando las ventas al año 2023.
Supongamos que tienes una tabla de ventas con una columna “Importe” y una tabla de calendario con una columna “Año” relacionada con la tabla de ventas. Puedes calcular las ventas totales por año utilizando el contexto de filtro y las relaciones de esta manera:
Ventas_por_Año = CALCULATE(SUM(‘TablaVentas’[Importe]), ‘TablaCalendario’[Año])
En este caso, el contexto de filtro se aplica a la columna “Año” de la tabla de calendario, lo que significa que el cálculo se realizará para cada año individual.
Ahora digamos que tienes una tabla de ventas con información sobre diferentes regiones geográficas, productos y fechas de venta. Quieres calcular las ventas totales para un producto específico, pero manteniendo el filtro aplicado a una región geográfica y a un año determinado.
VentasProductoEnRegionYAnioEspecifico =
CALCULATE(
SUM(Ventas[Monto]),
ALLEXCEPT(Ventas, Ventas[Producto]),
Ventas[Region] = “Región Norte”,
YEAR(Ventas[Fecha]) = 2023
)
Por último, si quieres calcular la diferencia de ventas entre dos años específicos, puedes hacerlo utilizando el contexto de filtro en la función CALCULATE de la siguiente manera:
Diferencia_Ventas =
CALCULATE(
SUM(‘TablaVentas’[Importe]),
‘TablaCalendario’[Año] = 2023
) -
CALCULATE(
SUM(‘TablaVentas’[Importe]),
‘TablaCalendario’[Año] = 2022
)
Aquí, el contexto de filtro se establece para cada año específico utilizando la columna “Año” de la tabla de calendario.
Estos son solo algunos ejemplos básicos de cómo se pueden realizar cálculos utilizando el contexto de filtro y las relaciones en Power BI mediante DAX. Dependiendo de tu conjunto de datos y tus necesidades específicas, podrás crear una variedad de cálculos personalizados utilizando estos conceptos.
En esta sección, se proporcionan consejos y técnicas para mejorar la eficiencia y claridad al escribir fórmulas en DAX, además revisaremos aspectos clave para optimizar el rendimiento y resolver problemas comunes en el desarrollo de modelos y cálculos en Power BI.
Antes de comenzar a escribir una fórmula, es fundamental que te asegures de comprender completamente tus datos y los requisitos específicos de tu análisis. Esto te ayudará a seleccionar las funciones adecuadas y a evitar errores lógicos. Te recomiendo además utilizar nombres claros y descriptivos para tus medidas y columnas calculadas. Esto facilitará la comprensión de la lógica de tus fórmulas para ti y para otros usuarios que trabajen en el mismo modelo de datos.
Por otro lado, si tienes fórmulas largas o complejas, considera dividirlas en partes más pequeñas y lógicas. Esto mejora la legibilidad y facilita la depuración de errores. Además, aunque DAX permite anidar funciones, un exceso de anidamiento puede hacer que las fórmulas sean difíciles de entender y mantener. Trata de mantener las fórmulas simples y modulares siempre que sea posible.
Las variables por otro lado te permiten almacenar valores intermedios dentro de una fórmula, lo que puede hacer que sea más fácil de entender y mantener. Además, pueden mejorar el rendimiento al evitar la repetición de cálculos costosos.
La función ALL puede eliminar los filtros aplicados a una tabla o columna, lo que puede resultar útil en ciertos casos, pero su uso excesivo puede afectar negativamente al rendimiento y a la precisión de tus cálculos, y si estás trabajando con grandes conjuntos de datos, evita realizar operaciones de cadena complejas dentro de tus fórmulas. Estas operaciones pueden tener un impacto significativo en el rendimiento.
Además de las expresiones, debes asegurarte de que tu modelo de datos esté bien diseñado y optimizado. Esto incluye definir correctamente las relaciones entre tablas, evitar la duplicación de datos innecesaria y utilizar el almacenamiento de columnas calculadas cuando sea apropiado.
Y, por último, antes de implementar tus fórmulas en producción, asegúrate de probarlas exhaustivamente y depurar cualquier error que encuentres. Utiliza herramientas de depuración disponibles en Power BI u otras plataformas para identificar y corregir problemas.
Vamos a mostrar a continuación una herramienta que nos pueden ayudar a solucionar problemas de rendimiento comunes, el Analizador de Rendimiento. Esta característica nos permite identificar cuellos de botella y optimizar el rendimiento de tus informes y dashboards.
Esta función es particularmente útil cuando trabajas con conjuntos de datos grandes o complejos, ya que te permite detectar qué elementos están consumiendo más recursos y tiempo de procesamiento.
Para utilizar el analizador de rendimiento, habilítalo en la pestaña Ver de la cinta de opciones y selecciona Iniciar grabación. Después de iniciar la grabación, realiza acciones en el informe. Por ejemplo, pasa de una pestaña de informe a la siguiente, selecciona un elemento de segmentación o interactúa con cualquiera de los objetos visuales.
Cualquier acción que se lleve a cabo en el informe se muestra y se registra en tiempo real en el panel del Analizador de rendimiento, en el mismo orden en el que Power BI carga el objeto visual. El analizador de rendimiento examina el tiempo necesario para que cada objeto visual consulte el modelo de datos y represente los resultados.
En el ejemplo anterior se realizaron tres acciones después de iniciar la grabación.
La información de cada registro de objetos visuales incluye el tiempo empleado (duración) para completar las diferentes tareas. Después de haber interactuado con los elementos del informe que deseamos medir podemos seleccionar el botón Detener.
Como has podido apreciar DAX es un lenguaje de fórmulas utilizado para realizar cálculos, manipulaciones y análisis dentro de los modelos de datos. Es similar en sintaxis y funcionalidad a Excel, pero está optimizado para trabajar con grandes volúmenes de datos y modelos relacionales.
Las medidas son una forma común de utilizar DAX para calcular agregaciones como sumas, promedios o recuentos, y se pueden utilizar en visualizaciones para mostrar métricas clave, pero además de las medidas, DAX también se puede utilizar para crear columnas calculadas en las tablas de datos, lo que puede ser útil para agregar datos adicionales o realizar cálculos basados en otras columnas de la tabla.
Uno de los conceptos fundamentales en DAX, es el contexto de filtro, este afecta a cómo se realizan los cálculos. Es importante comprender este concepto para garantizar la precisión y la coherencia en los análisis que realicemos. En este articulo hemos planteado su definición, pero si quieres profundizar en este y más aspectos te recomendamos los cursos de Power BI de cero a experto, con los que aprenderás a utilizar Power BI como un auténtico PRO.
Por último, recuerda que es fundamental seguir buenas prácticas al escribir fórmulas en DAX para garantizar la claridad, eficiencia y rendimiento óptimo. Esto incluye comprender tus datos, utilizar nombres descriptivos, evitar el exceso de anidamiento, utilizar variables cuando sea necesario, y optimizar el modelo de datos. Todo esto hará que te conviertas en un programador más eficiente y marcará la diferencia.
También te puede interesar
¿Te intimida la tarea de crear un dashboard en Power BI? Este sentimiento de incertidumbre frena a muchos profesionales antes de comenzar...