Ventas y Comportamiento de Compra
Evolución de ingresos, volumen de pedidos, ticket promedio y patrones de compra en el tiempo. Permite detectar tendencias de crecimiento, estacionalidad y cambios en la demanda para anticipar decisiones comerciales con datos concretos.
Medidas DAX 8
Ingreso Total
Suma del subtotal de todos los detalles de pedidos. Se usa detalle_pedidos en lugar de pedidos[total] para que los filtros por categoría y producto funcionen correctamente.
Ingreso Total = SUM(detalle_pedidos[subtotal])
Cantidad de Pedidos
Cuenta el total de filas en la tabla pedidos, es decir, el número absoluto de pedidos realizados.
Cantidad de Pedidos = COUNTROWS(pedidos)
Ticket Promedio
Ingreso total dividido por la cantidad de pedidos. Indica cuánto gasta en promedio cada cliente por compra.
Ticket Promedio =
DIVIDE(
SUM(detalle_pedidos[subtotal]),
COUNTROWS(pedidos),
BLANK()
) Ingreso del Mes Anterior
Calcula el ingreso total retrocediendo un mes en DimFecha. Sirve de base para comparar meses consecutivos.
Ingreso del Mes Anterior =
CALCULATE(
SUM(detalle_pedidos[subtotal]),
PREVIOUSMONTH(DimFecha[Date])
) % Crecimiento MoM
Porcentaje de crecimiento del ingreso entre el mes actual y el mes anterior (Month-over-Month). Variables DAX para aislar los rangos de fecha.
% Crecimiento MoM =
VAR UltimoConDatos =
CALCULATE(
MAX(pedidos[fecha_pedido]),
REMOVEFILTERS(DimFecha)
)
VAR InicioMesActual =
DATE(YEAR(UltimoConDatos), MONTH(UltimoConDatos), 1)
VAR InicioMesAnterior =
EOMONTH(InicioMesActual, -2) + 1
VAR FinMesAnterior =
EOMONTH(InicioMesActual, -1)
VAR IngresoActual =
CALCULATE(
[Ingreso Total],
DimFecha[Date] >= InicioMesActual
)
VAR IngresoAnterior =
CALCULATE(
[Ingreso Total],
DimFecha[Date] >= InicioMesAnterior,
DimFecha[Date] <= FinMesAnterior
)
RETURN
DIVIDE(IngresoActual - IngresoAnterior, IngresoAnterior) Unidades Vendidas
Suma de la cantidad de productos vendidos según el detalle de pedidos.
Unidades Vendidas = SUM(detalle_pedidos[cantidad])
Precio Promedio por Producto
Promedio del precio unitario de los productos vendidos.
Precio Promedio por Producto = AVERAGE(detalle_pedidos[precio_unitario])
Desviación vs Promedio
Diferencia entre las unidades vendidas de un producto y el promedio de unidades del catálogo seleccionado. Útil para Top 10 productos.
Desviacion vs Promedio =
VAR PromedioTotal =
CALCULATE(
AVERAGEX(VALUES(productos[id_producto]), [Unidades Vendidas]),
ALLSELECTED(productos)
)
RETURN [Unidades Vendidas] - PromedioTotal Emprendedores y Proceso de Curaduría
Rendimiento del ecosistema emprendedor: mide la tasa de aprobación de perfiles, el tiempo promedio de evaluación, la distribución por estado y el desempeño de cada curador. Una radiografía operativa del proceso de selección.
Medidas DAX 11
Total Emprendedores
Cuenta el total de emprendedores registrados en la plataforma.
Total Emprendedores = COUNTROWS(perfiles_emprendedor)
Emprendedores Aprobados
Filtra y cuenta los emprendedores cuyo estado es 'aprobado'.
Emprendedores Aprobados =
CALCULATE(
COUNTROWS(perfiles_emprendedor),
perfiles_emprendedor[estado] = "aprobado"
) Tasa de Aprobación
Porcentaje de emprendedores aprobados sobre el total. Indica la selectividad del proceso de curaduría.
Tasa de Aprobación =
DIVIDE(
[Emprendedores Aprobados],
[Total Emprendedores],
BLANK()
) Emprendedores Rechazados
Filtra y cuenta los emprendedores cuyo estado es 'rechazado'.
Emprendedores Rechazados =
CALCULATE(
COUNTROWS(perfiles_emprendedor),
perfiles_emprendedor[estado] = "rechazado"
) Emprendedores Pendientes
Filtra y cuenta los emprendedores que aún están en estado 'pendiente' de evaluación.
Emprendedores Pendientes =
CALCULATE(
COUNTROWS(perfiles_emprendedor),
perfiles_emprendedor[estado] = "pendiente"
) Total Evaluaciones
Cuenta el total de evaluaciones de curaduría registradas.
Total Evaluaciones = COUNTROWS(evaluaciones_curaduria)
Evaluaciones por Curador
Cuenta evaluaciones desglosadas por curador. Se usa con la dimensión usuarios[nombre] en el visual.
Evaluaciones por Curador = COUNTROWS(evaluaciones_curaduria)
Productos por Emprendedor
Promedio de productos publicados por cada emprendedor activo.
Productos por Emprendedor =
DIVIDE(
COUNTROWS(productos),
DISTINCTCOUNT(perfiles_emprendedor[id_emprendedor]),
BLANK()
) Ingreso por Emprendedor
Promedio de ingresos generados por cada emprendedor. Usa detalle_pedidos[subtotal] para que el filtro por emprendedor funcione.
Ingreso por Emprendedor =
DIVIDE(
SUM(detalle_pedidos[subtotal]),
DISTINCTCOUNT(perfiles_emprendedor[id_emprendedor]),
BLANK()
) Aprobaciones por Mes
Cuenta aprobaciones activando la relación inactiva entre DimFecha y fecha_aprobacion con USERELATIONSHIP.
Aprobaciones por Mes =
CALCULATE(
COUNTROWS(perfiles_emprendedor),
perfiles_emprendedor[estado] = "aprobado",
USERELATIONSHIP(DimFecha[Date], perfiles_emprendedor[fecha_aprobacion])
) FlujoCuraduria (tabla calculada)
Tabla calculada que construye un embudo de 3 etapas: Registrados → Evaluados → Aprobados. Se usa en un visual de embudo.
FlujoCuraduria =
VAR Total = COUNTROWS(perfiles_emprendedor)
VAR Evaluados =
CALCULATE(
COUNTROWS(perfiles_emprendedor),
perfiles_emprendedor[estado] IN {"aprobado", "rechazado"}
)
VAR Aprobados =
CALCULATE(
COUNTROWS(perfiles_emprendedor),
perfiles_emprendedor[estado] = "aprobado"
)
RETURN
UNION(
ROW("Etapa", "① Registrados", "Cantidad", Total, "Orden", 1),
ROW("Etapa", "② Evaluados", "Cantidad", Evaluados, "Orden", 2),
ROW("Etapa", "③ Aprobados", "Cantidad", Aprobados, "Orden", 3)
) Productos e Inventario
Radiografía completa del catálogo: distribución por categoría y subcategoría, productos en riesgo de quiebre de stock, estados de aprobación y rotación de inventario. Apoya las decisiones de abastecimiento y curaduría de portafolio.
Medidas DAX 12
Total Productos
Cuenta el total de productos en el catálogo.
Total Productos = COUNTROWS(productos)
Productos Aprobados
Filtra y cuenta los productos con estado 'aprobado'.
Productos Aprobados =
CALCULATE(
COUNTROWS(productos),
productos[estado] = "aprobado"
) Tasa de Aprobación de Productos
Porcentaje de productos aprobados sobre el total del catálogo.
Tasa de Aprobación de Productos =
DIVIDE(
[Productos Aprobados],
[Total Productos],
BLANK()
) Stock Total
Suma de la cantidad de unidades disponibles en inventario.
Stock Total = SUM(inventario[cantidad])
Productos bajo Stock Mínimo
Cuenta los productos cuyo stock actual es menor o igual al stock mínimo definido.
Productos bajo Stock Mínimo =
CALCULATE(
COUNTROWS(inventario),
inventario[cantidad] <= inventario[stock_minimo]
) % Productos en Riesgo de Quiebre
Porcentaje del catálogo que está en riesgo de quiebre de stock.
% Productos en Riesgo de Quiebre =
DIVIDE(
[Productos bajo Stock Mínimo],
COUNTROWS(inventario),
BLANK()
) Precio Promedio del Catálogo
Promedio del precio de todos los productos del catálogo.
Precio Promedio del Catálogo = AVERAGE(productos[precio])
Unidades Vendidas
Suma de cantidades vendidas desde el detalle de pedidos.
Unidades Vendidas = SUM(detalle_pedidos[cantidad])
Rotación de Inventario
Unidades vendidas divididas por stock disponible. Valores mayores a 1 indican alta rotación.
Rotación de Inventario =
DIVIDE(
SUM(detalle_pedidos[cantidad]),
SUM(inventario[cantidad]),
BLANK()
) Stock Actual (columna calculada)
Trae el stock actual desde la tabla inventario usando RELATED. Alternativa con LOOKUPVALUE si RELATED no funciona.
Stock Actual = RELATED(inventario[cantidad])
-- Alternativa:
Stock Actual =
LOOKUPVALUE(
inventario[cantidad],
inventario[id_producto],
productos[id_producto]
) Stock Mínimo (columna calculada)
Trae el stock mínimo desde inventario. Misma lógica que Stock Actual.
Stock Minimo = RELATED(inventario[stock_minimo])
-- Alternativa:
Stock Minimo =
LOOKUPVALUE(
inventario[stock_minimo],
inventario[id_producto],
productos[id_producto]
) Alerta Stock
Medida de formato condicional: devuelve 1 si el stock actual es menor o igual al mínimo, 0 en caso contrario.
Alerta Stock =
IF(
[Stock Actual] <= [Stock Minimo],
1,
0
) Pagos y Métodos de Pago
Análisis financiero de transacciones: distribución por método de pago, tasa de aprobación y rechazo, ingresos por canal, y comportamiento de reembolsos. Revela de inmediato qué métodos funcionan mejor y dónde hay fricción.
Medidas DAX 10
Monto Total Pagado
Suma del monto de todas las transacciones de pago.
Monto Total Pagado = SUM(pagos[monto])
Cantidad de Transacciones
Cuenta el total de transacciones registradas en la tabla pagos.
Cantidad de Transacciones = COUNTROWS(pagos)
Ticket Promedio por Pago
Monto total dividido por la cantidad de transacciones. Valor promedio por operación.
Ticket Promedio por Pago =
DIVIDE(
[Monto Total Pagado],
[Cantidad de Transacciones],
BLANK()
) Pagos Aprobados
Cuenta las transacciones cuyo estado es 'aprobado'.
Pagos Aprobados =
CALCULATE(
[Cantidad de Transacciones],
pagos[estado] = "aprobado"
) Tasa de Aprobación de Pagos
Porcentaje de transacciones aprobadas sobre el total.
Tasa de Aprobación de Pagos =
DIVIDE(
[Pagos Aprobados],
[Cantidad de Transacciones],
BLANK()
) Pagos Rechazados
Cuenta las transacciones cuyo estado es 'rechazado'.
Pagos Rechazados =
CALCULATE(
[Cantidad de Transacciones],
pagos[estado] = "rechazado"
) Tasa de Rechazo
Porcentaje de transacciones rechazadas sobre el total.
Tasa de Rechazo =
DIVIDE(
[Pagos Rechazados],
[Cantidad de Transacciones],
BLANK()
) Monto Reembolsado
Suma del monto de las transacciones con estado 'reembolsado'.
Monto Reembolsado =
CALCULATE(
SUM(pagos[monto]),
pagos[estado] = "reembolsado"
) Tasa de Reembolso
Porcentaje del monto reembolsado sobre el monto total pagado.
Tasa de Reembolso =
DIVIDE(
[Monto Reembolsado],
[Monto Total Pagado],
BLANK()
) Transacciones por Método de Pago
Cuenta transacciones desglosadas por método de pago. Se usa con pagos[metodo_pago] como dimensión.
Transacciones por Método de Pago = COUNTROWS(pagos)
Geografía de Clientes y Ventas
Mapa de penetración regional: identifica qué regiones, ciudades y comunas concentran los ingresos y la base de clientes, dónde hay mayor densidad de ventas y qué zonas representan oportunidades de expansión territorial.
Medidas DAX 10
Ingreso Total
Suma del subtotal de detalles de pedidos. Permite filtrar por región, ciudad o comuna correctamente.
Ingreso Total = SUM(detalle_pedidos[subtotal])
Clientes Únicos
Cuenta los usuarios distintos que han realizado pedidos.
Clientes Únicos = DISTINCTCOUNT(usuarios[id_usuario])
Pedidos por Región
Cuenta pedidos, se desglosa automáticamente al usar direcciones[region] como dimensión.
Pedidos por Región = COUNTROWS(pedidos)
Ticket Promedio por Ciudad
Ingreso total dividido por pedidos en cada ciudad.
Ticket Promedio por Ciudad =
DIVIDE(
SUM(detalle_pedidos[subtotal]),
COUNTROWS(pedidos),
BLANK()
) Densidad de Clientes
Cuenta clientes únicos por comuna. Se usa con direcciones[comuna] como dimensión.
Densidad de Clientes = DISTINCTCOUNT(usuarios[id_usuario])
% del Ingreso Nacional
Contribución porcentual de cada región al ingreso nacional. Usa ALL(direcciones) para remover el filtro de región y obtener el total.
% del Ingreso Nacional =
DIVIDE(
SUM(detalle_pedidos[subtotal]),
CALCULATE(
SUM(detalle_pedidos[subtotal]),
ALL(direcciones)
),
BLANK()
) Región #1
Nombre de la región con mayor ingreso, usando TOPN y CONCATENATEX.
Región #1 =
CONCATENATEX(
TOPN(
1,
VALUES(direcciones[region]),
[Ingreso Total],
DESC
),
direcciones[region],
", "
) Ingreso Región #1
Monto de ingreso de la región líder, usando TOPN y MAXX.
Ingreso Región #1 =
MAXX(
TOPN(
1,
VALUES(direcciones[region]),
[Ingreso Total],
DESC
),
[Ingreso Total]
) Regiones con Ventas
Cuenta cuántas regiones distintas tienen ventas registradas.
Regiones con Ventas = DISTINCTCOUNT(direcciones[region])
Ciudades con Ventas
Cuenta cuántas ciudades distintas tienen ventas registradas.
Ciudades con Ventas = DISTINCTCOUNT(direcciones[ciudad])