Dashboard de Ventas Contoso en Power BI
Análisis de estructura
Modelo fuente: Contoso Sales Sample para Power BI Data Model
A primera vista, podría asumirse que SalesAmount es igual a UnitPrice × SalesQuantity.
Verificación SalesAmount = CALCULATE(SUM(‘Product’[UnitPrice])*SUM(Sales[SalesQuantity]))
Sin embargo, al probar esta lógica, el resultado excede el valor real de SalesAmount, lo que sugiere que los descuentos ya están considerados. Esto implica que SalesAmount representa el ingreso neto después de aplicar DiscountAmount.
SalesAmount Cal = [Check SalesAmount]-Sum(Sales[DiscountAmount])
Análisis de métricas en Excel
📘 Glosario de métricas – Dashboard de Ventas Contoso
Este glosario define las métricas clave utilizadas en el análisis de ventas de Contoso. Cada entrada incluye una descripción, una fórmula sugerida y un ejemplo de implementación en DAX para Power BI.
🧮 Métricas base (Medidas explícitas)
Esta sección define las métricas fundamentales utilizadas en el Dashboard de Ventas Contoso. Todas las métricas están implementadas como medidas explícitas en DAX para asegurar compatibilidad con los Calculation Groups y mantener claridad en las visualizaciones.
| Métrica | Descripción | Fórmula sugerida | Ejemplo DAX |
|---|---|---|---|
| UnitPrice | Precio unitario del producto. Recuperado de la tabla Product para consistencia. |
(Product[UnitPrice]) |
UnitPrice = SUM('Product'[UnitPrice]) |
| UnitCost | Costo unitario del producto. Recuperado de la tabla Product. |
(Product[UnitCost]) |
UnitCost = SUM(Product[UnitCost]) |
| SalesQuantity | Cantidad total de productos vendidos. Definida como una medida explícita. | SUM(Sales[SalesQuantity]) |
SalesQuantity = SUM(Sales[SalesQuantity]) |
| ReturnQuantity | Cantidad total de productos devueltos. | SUM(Sales[ReturnQuantity]) |
ReturnQuantity = SUM(Sales[ReturnQuantity]) |
| DiscountAmount | Monto total de descuentos aplicados a las ventas. | SUM(Sales[DiscountAmount]) |
DiscountAmount = SUM(Sales[DiscountAmount]) |
| DiscountQuantity | Cantidad de productos vendidos con descuento aplicado. | SUM(Sales[DiscountQuantity]) |
DiscountQuantity = SUM(Sales[DiscountQuantity]) |
🧠 Notas
- Todas las métricas anteriores están definidas como medidas explícitas en DAX para asegurar compatibilidad con los Calculation Groups y la lógica avanzada de Time Intelligence.
- Evita usar columnas sin procesar directamente en visualizaciones o cálculos cuando se requiera lógica dinámica (ej. YTD, YoY).
- Estas medidas sirven como base para métricas derivadas como ingresos, costos y rentabilidad.
💰 Métricas de ingresos y costos
| Métrica | Descripción | Fórmula sugerida | Ejemplo DAX |
|---|---|---|---|
| NetSales | Ingreso bruto antes de descuentos. | UnitPrice × SalesQuantity |
NetSales = [SalesAmount]+[DiscountAmount] |
| SalesAmount | Ingreso neto después de descuentos. | SUM(Sales[SalesAmount]) |
SalesAmount = SUM(Sales[SalesAmount] |
| ReturnAmount | Valor monetario de los productos devueltos. | SUM(Sales[ReturnAmount] |
ReturnAmount = SUM(Sales[DiscountAmount] |
| TotalCost | Costo total de los productos vendidos (excluyendo devoluciones). | SUM(Sales[TotalCost] |
TotalCost = (SUM(Sales[TotalCost] |
📊 Métricas de rentabilidad
| Métrica | Descripción | Fórmula sugerida | Ejemplo DAX |
|---|---|---|---|
| GrossProfit | Ganancia bruta antes de devoluciones. | SalesAmount - TotalCost |
GrossProfit = [SalesAmount] - [TotalCost] |
| NetProfit | Ganancia neta después de devoluciones. | SalesAmount - TotalCost - ReturnAmount |
NetProfit = [SalesAmount] - [TotalCost] - [ReturnAmount] |
| GrossMargin % | Margen bruto como porcentaje de las ventas. | GrossProfit / SalesAmount |
GrossMargin % = DIVIDE([GrossProfit], [SalesAmount]) |
| NetMargin % | Margen neto como porcentaje de las ventas. | NetProfit / SalesAmount |
NetMargin % = DIVIDE([NetProfit], [SalesAmount]) |
📉 Métricas de descuentos y devoluciones
| Métrica | Descripción | Fórmula sugerida | Ejemplo DAX |
|---|---|---|---|
| DiscountRate % | Porcentaje de descuento aplicado sobre NetSales. | DiscountAmount / NetSales |
DiscountRate % = DIVIDE([DiscountAmount], [NetSales]) |
| ReturnRate % | Porcentaje de devoluciones sobre la cantidad vendida. | ReturnQuantity / SalesQuantity |
ReturnRate % = DIVIDE([ReturnQuantity], [SalesQuantity]) |
⏱️ Grupo de cálculos de inteligencia temporal
Esta sección define transformaciones reutilizables basadas en tiempo usando Calculation Groups en Power BI. Estas permiten aplicar dinámicamente lógica (YTD, MTD, YoY, etc.) a cualquier medida utilizando SELECTEDMEASURE().
| Elemento de cálculo | Descripción | Fórmula sugerida | Ejemplo DAX |
|---|---|---|---|
| YTD | Total acumulado desde el 1 de enero hasta la fecha actual. | TOTALYTD(SELECTEDMEASURE(), 'Date'[Date]) |
YTD = TOTALYTD(SELECTEDMEASURE(), 'Calendar'[DateKey]) |
| MTD | Total acumulado desde el inicio del mes hasta la fecha actual. | TOTALMTD(SELECTEDMEASURE(), 'Date'[Date]) |
MTD = TOTALMTD(SELECTEDMEASURE(), 'Calendar'[DateKey]) |
| QTD | Total acumulado desde el inicio del trimestre hasta hoy. | TOTALQTD(SELECTEDMEASURE(), 'Date'[Date]) |
QTD = TOTALQTD(SELECTEDMEASURE(), 'Calendar'[DateKey]) |
| YoY | Mismo periodo del año anterior. | CALCULATE(SELECTEDMEASURE(), SAMEPERIODLASTYEAR('Date'[Date])) |
YoY = CALCULATE(SELECTEDMEASURE(), SAMEPERIODLASTYEAR('Calendar'[DateKey])) |
| Previous Month | Mismo periodo del mes anterior. | CALCULATE(SELECTEDMEASURE(), PREVIOUSMONTH('Date'[Date])) |
PreviousMonth = CALCULATE(SELECTEDMEASURE(), PREVIOUSMONTH('Calendar'[DateKey])) |
| YoY % Change | Cambio porcentual año contra año. | (Current - LastYear) / LastYear |
YoY % = DIVIDE(SELECTEDMEASURE() - [YoY], [YoY]) |
| MoM % Change | Cambio porcentual mes contra mes. | (Current - PreviousMonth) / PreviousMonth |
MoM % = DIVIDE(SELECTEDMEASURE() - [PreviousMonth], [PreviousMonth]) |
Notas técnicas
- Las métricas se calculan utilizando datos de las tablas
ProductySales.- Asegurar consistencia entre
UnitPriceyUnitCosten todas las tablas.- Las fórmulas son adaptables a DAX, SQL u otros entornos de BI.
Diseño del Dashboard y Storytelling
KPI´s que pueden brindarnos una visión general simple del estado de ventas de la compañía.
Tabla anual para tener una mejor perspectiva de las métricas comparadas a lo largo del tiempo.
Histograma de Ventas 2013 vs LY (año anterior).
Grupo de medidas de Inteligencia Temporal con YTD.
YOY muestra Ventas 2012 vs 2011.
YOY% desactiva los KPI´s y la tabla, pero proporciona una línea comparativa para Ventas 2012 vs 2013 en la visualización del histograma.
Gráfico de barras de Ventas por Canal, Categoría y Subcategoría con filtros interactivos para el resto del dashboard.
Mapa de burbujas con desglose por Continente/País, interactivo para el resto del dashboard.
Productos más rentables, interactivos con el resto del dashboard.
La historia aquí es que los KPI´s muestran un desempeño saludable en 2013 con un NetMargin de 55.79%, acompañado de una baja tasa de devoluciones (ReturnRate) y un bajo monto de descuentos (DiscountAmount).
Pero si observamos más de cerca la tabla de datos, podemos notar que el YOY% SalesAmount disminuyó -15.96% en 2012, y la tendencia negativa fue contenida en 2013 hasta -3.33%.
Aunque los márgenes cayeron, no es un porcentaje significativo a considerar. Lo mismo ocurre con la tasa de descuentos (DiscountRate) y la tasa de devoluciones (ReturnRate), que también son más bajas.
En conclusión, las ventas cayeron significativamente frente al año anterior en 2012, y la tendencia fue contenida en 2013.