Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

contar filas basadas en varias fechas

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:

clientefecha de iniciostopdate
as101/01/201723/08/2020
fg315/11/201805/03/2021
ty714/05/202023/02/2022
ty706/10/201915/07/2022
az101/01/2012023/08/2022
df315/11/201805/03/2019
a714/05/201923/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.

grindle_0-1650982816932.png

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.

1 ACCEPTED SOLUTION
5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Hola @grindle ,

Ve a tu mesa first_of_mth y cuenta cada mes nbr cliente activo desde aquí:

nbr_custo = CALCULAR(CONTAR(datasource[cliente]),
FILTRO(todo(fuente de datos),
datasource[fecha de inicio].[Fecha] <= fuente de datos[mth_start_date].[Fecha]
&&
datasource[stopdate].[Fecha] > fuente de datos[mth_start_date].[Fecha]))


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ó 🙂

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.