Buen día. Espero se encuentren bien. Tal vez sea muy simple la respuesta y ya se haya visto en alguna clase pero aún no doy con ella, espero explicarme de la forma correcta para darme a entender.
Tengo varias tablas: * Base - Contiene la base de clientes * Ventas - Contiene solamente el número de cliente, el día y la venta de ese día * Días - Contiene el día del mes y la semana que se le asigno manualmente (esto se hace porque la semana no se considera de forma natural), * Contacto - Contiene la base de los clientes que tuvieron contacto y los que no (1,0)
Lo que quiero mostrar son cuantos clientes tuvieron compra y cuantos se contactaron por semana. y al final un acumulado.
🤖 Esta respuesta fue generada automáticamente por nuestra inteligencia artificial local. Es un
intento único de ayudarte al instante. No responderá a mensajes posteriores en este hilo.
Hola, gracias por tu consulta y por compartir tu experiencia.
Entiendo que estás trabajando en un reporte donde necesitas calcular la cantidad de clientes que realizaron una compra y cuántos fueron contactados, esto por semana, y además necesitas un acumulado. Mencionas que al crear una medida para contar los contactos, todos te aparecen iguales, y sospechas que podría ser por cómo se relacionan las tablas o la configuración de la fecha.
Basándome en la información y los fragmentos de texto proporcionados, aquí hay una explicación y una posible solución:
Problema: Contar Clientes con Compra y Clientes Contactados
El problema de que todos te aparezcan iguales al contar clientes con contacto, y no se refleje el filtro por semana, probablemente se deba a cómo se está aplicando el contexto de filtro en tus medidas.
Cuando quieres contar los clientes que cumplieron dos condiciones (tuvieron compra Y fueron contactados), necesitas asegurarte de que tu medida DAX esté evaluando estas condiciones correctamente dentro del contexto de la semana.
Solución con DAX: Medidas para Clientes con Compra y Clientes Contactados
Para lograr lo que necesitas, deberás crear medidas DAX que cuenten los clientes únicos que cumplen ambas condiciones (compraron Y fueron contactados) para cada semana.
Asumiendo que tienes:
Una tabla `Ventas` con `[CustomerID]` y `[Fecha]`
Una tabla `Contactos` con `[CustomerID]` y `[FechaContacto]` (o alguna columna que indique el contacto)
Una tabla `d_Calendario` relacionada con ambas tablas por la fecha.
Aquí hay un ejemplo de cómo podrías crear estas medidas:
1. Medida para Clientes con Compra:
Esto cuenta los clientes únicos que tienen al menos una venta en el contexto de filtro (ej. la semana actual).
Clientes con Compra =
COUNTROWS(
VALUES(Ventas[CustomerID]) // Cuenta los clientes únicos de la tabla Ventas
)
2. Medida para Clientes Contactados:
Esto cuenta los clientes únicos que tuvieron algún tipo de contacto.
Clientes Contactados =
COUNTROWS(
VALUES(Contactos[CustomerID]) // Cuenta los clientes únicos de la tabla Contactos
)
3. Medida para Clientes con Compra Y Contacto (la más relevante para tu duda):
Aquí es donde `CALCULATE` se vuelve crucial para aplicar ambos filtros al mismo tiempo.
Clientes con Compra Y Contacto =
CALCULATE(
[Clientes con Compra], // O puedes usar COUNTROWS(Ventas) directamente aquí
FILTER(
ALL('d_Calendario'[MesAño]), // Quita el filtro de mes si solo quieres el total general, o ajusta según tu necesidad
NOT ISBLANK('Contactos'[CustomerID]) // Asegura que el cliente tenga un registro de contacto
)
)
Explicación de la medida de Clientes con Compra Y Contacto:
`CALCULATE`: Es la función que nos permite modificar el contexto.
`[Clientes con Compra]`: La expresión que queremos evaluar.
`FILTER(ALL('d_Calendario'[MesAño]), NOT ISBLANK('Contactos'[CustomerID]))`: Este es el filtro. `ALL('d_Calendario'[MesAño])` quita cualquier filtro aplicado al mes en el contexto actual (si lo quisieras para el total general), y luego `FILTER` asegura que solo se consideren los clientes que tienen un contacto registrado. Si tu tabla `Contactos` solo tiene un registro para cada cliente contactado, `NOT ISBLANK` funciona bien. Si necesitas que el contacto haya ocurrido en un período específico, deberías refinar este filtro para incluir la fecha de contacto.
Para contar el Acumulado:
Si quieres un acumulado (por ejemplo, acumulado hasta la fecha o hasta el mes actual), usarías funciones de inteligencia de tiempo como `TOTALYTD`, `TOTALQTD`, `TOTALMTD`, o construirías una lógica similar con `CALCULATE` y `DATEADD`.
Por ejemplo, un acumulado de clientes con compra hasta la fecha:
Clientes con Compra Acumulado =
TOTALYTD(
[Clientes con Compra],
d_Calendario[Fecha]
)
Espero que esto te sea de ayuda. La correcta relación de tus tablas (Ventas, Contactos, Empleados y Calendario) es fundamental para que estas medidas funcionen como esperas.
Puede que este mostrando el mismo valor para todas las semanas porque ambas tablas no se encuentren seleccionadas. También te comparto como quedaría la medida: