March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early bird discount ends December 31.
Register NowBe one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now
He pasado mucho tiempo tratando de resolver esto y he leído muchas preguntas similares, pero no he logrado resolver esto, aunque parece sencillo.
Tengo datos de "cliente" como este, con columnas startdate y stopdate:
cliente | fecha de inicio | stopdate |
as1 | 01/01/2017 | 23/08/2020 |
fg3 | 15/11/2018 | 05/03/2021 |
ty7 | 14/05/2020 | 23/02/2022 |
ty7 | 06/10/2019 | 15/07/2022 |
az1 | 01/01/20120 | 23/08/2022 |
df3 | 15/11/2018 | 05/03/2019 |
a7 | 14/05/2019 | 23/02/2021 |
Mi objetivo es contar la cantidad de clientes activos el 1er día de cada mes y luego trazarlo para crear un resultado como el siguiente (y tener el resultado filtrable, ya que mis datos reales tienen columnas adicionales y una rebanadora). Mi definición para activo es: startdate <= mth_start_date < stopdate.
He construido una tabla de fechas llamada "first_of_mth" que he creado una relación con el cliente[startdate]. first_of_mth tiene datos como este (pero que se ejecutan hasta la fecha actual):
mth_start_date |
01/01/2017 |
01/02/2017 |
01/03/2017 |
01/04/2017 |
01/05/2017 |
01/06/2017 |
01/07/2017 |
01/08/2017 |
01/09/2017 |
Lo más cerca que he estado de lograr lo que quiero con DAX es:
Activo =
CALCULAR (
COUNTROWS ( cliente ),
FILTRO (
Prod
max(first_of_mth[mth_start_date]) >= cliente[fecha de inicio]
&& max(first_of_mth[mth_start_date]) <= cliente[stopdate]
)
)
Pero lo que esto hace es contar el número de filas donde startdate = mth_start_date.
Tengo la impresión de que necesito hacer algo con ambas relaciones entre las tablas y DAX para que esto funcione. Gracias.
Solved! Go to Solution.
Hola @grindle ,
Ve a tu mesa first_of_mth y cuenta cada mes nbr cliente activo desde aquí:
Saludos
@philouduv - gracias por su respuesta. He probado 2 variaciones de tu sugerencia. Ambos mensajes de error generados - ver a continuación. ¿Puedes detectar lo que está mal?
nbr_custo = CALCULAR(CONTAR(cliente[cliente]),
FILTRO (todo (prod),
customer[startdate] <= first_of_mth[mth_start_date]
&&
customer[stopdate] > first_of_mth[mth_start_date]))
Mensaje de error: No se puede determinar un solo valor para la columna 'mth_start_date' en la tabla 'first_of_mth'...
nbr_custo = CALCULAR(CONTAR(cliente[cliente]),
FILTER(all(cliente),
cliente[fecha de inicio]. [Fecha] <= first_of_mth[mth_start_date]. [Fecha]
&&
cliente[stopdate]. [Fecha] > first_of_mth[mth_start_date]. [Fecha]))
Mensaje de error: La referencia de columna a 'startdate' en la tabla 'customer' no se puede usar con una variación 'Date' porque no tiene ninguna.
Hola @grindle,
En primer lugar, asegúrese de que su tabla con fecha tenga el formato correcto (el segundo punto de error este en la tabla cliente)
Tome de nuevo su primera fórmula, pero asegúrese de crear una columna en la tabla "first_of_mth"
nbr_custo = CALCULAR(CONTAR(cliente[cliente]),
FILTER(all(cliente),
cliente[fecha de inicio]. [Fecha] <= first_of_mth[mth_start_date]. [Fecha]
&&
cliente[stopdate]. [Fecha] > first_of_mth[mth_start_date]. [Fecha]))
El .[ Fecha] solo está disponible si tiene el formato bueno (Fecha)
Saludos
Gracias por este amitchandak - su primera publicación de blog hizo lo que quería. Muy servicial! Me mostró que necesitaba 2 relaciones inactivas y luego mi DAX funcionó 🙂
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!