El error más común al aprender DAX es memorizar funciones sueltas. El camino correcto es construir, ejemplo a ejemplo, las medidas que de verdad se necesitan en escenarios reales de negocio. En este artículo repasamos diez ejemplos prácticos de DAX.
01. Total de ventas
La medida más básica: Total Sales = SUM(Sales[Amount]). Si la define como medida, responderá a los filtros; si la añade como columna, se quedará estática.
02. Crecimiento interanual (YoY)
YoY Growth % = DIVIDE([Total Sales] - CALCULATE([Total Sales], SAMEPERIODLASTYEAR(Date[Date])), CALCULATE([Total Sales], SAMEPERIODLASTYEAR(Date[Date]))). Esta medida da el porcentaje de crecimiento frente al año anterior.
03. Acumulado del año (YTD)
YTD Sales = CALCULATE([Total Sales], DATESYTD(Date[Date])). Ventas acumuladas desde el inicio del año. Crítico en los informes mensuales.
04. Media móvil de 7 días
7d MA = AVERAGEX(DATESINPERIOD(Date[Date], LASTDATE(Date[Date]), -7, DAY), [Total Sales]). Ideal para suavizar las tendencias de corto plazo.
05. Top N de clientes
Top 10 Customers = RANKX(ALL(Customer[Name]), [Total Sales]). Añadiendo un filtro de <=10 se obtienen los diez primeros clientes.
06. Porcentaje de contribución
Contribution % = DIVIDE([Total Sales], CALCULATE([Total Sales], ALLSELECTED())). Da el peso sobre el total dentro del filtro seleccionado.
07. Total acumulado
Running Total = CALCULATE([Total Sales], FILTER(ALLSELECTED(Date[Date]), Date[Date] <= MAX(Date[Date]))). Para el gráfico de acumulado.
08. Parámetros de hipótesis
New Target = SELECTEDVALUE(TargetParam[Value]) * [Base Value]. Permite que el usuario cambie el escenario con un control deslizante.
09. Valor de hoy
Today Sales = CALCULATE([Total Sales], Date[Date] = TODAY()). Necesario para los indicadores en tiempo real.
10. Control de valores vacíos
Safe Divide = DIVIDE([Numerator], [Denominator]). No da error al dividir por cero: devuelve un valor vacío. Una función pequeña que salva muchos informes.
Explore nuestra solución de Power BI
Puede reservar una consultoría gratuita para obtener información detallada.