Forum Discussion
Dynamic count between dates. Total customers
Hi there.
My fact table includes StartDate (FechaSalida) and EndDate (FechaRetorno), I need to count the total clients with an active service based on the selected date (filtered slicer)
I have a TableDate in relationship with StartDate.
This is a sample
This is what I'm trying but this is only filtering those who started on the selected date
Contratos Activos =
CALCULATE(
[Total Contratos],
FILTER(
Contrato,
Contrato[FechaSalida] <= SELECTEDVALUE( DateTable[Date] ) &&
Contrato[FechaRetorno] >= SELECTEDVALUE( DateTable[Date] )
)
)
The expected output is the total active clients by the selected date, that should include those who started the service before the selected date.
This is a representation of the total # I'm looking for:
Thanks in advanced.
Could you try these: (Ignore what I said before to use ALL)
1. Create a duplicate table of date as below (you can refine the columns if needed later, once you get the solution) and make sure in the model it is not connected to the transaction table "Contrato".
Date Table 2 = DateTable2. Add the date range slicer using Date column for the "Date Table 2"
3. Add this measure into your group
Contratos Activos 2 = VAR _Min_FilterDate = MIN('Date Table 2'[Date]) VAR _Max_FilterDate = Max('Date Table 2'[Date]) RETURN CALCULATE( COUNTROWS(Contrato), Contrato[FechaSalida] <= _Max_FilterDate, Contrato[FechaRetorno] >= _Min_FilterDate, REMOVEFILTERS('Date Table 2') )4. Add the table visual ( I added dummy date range visual to show the selected date range, which is not your requirement though)
ā
See if this helps!
Also, if what you are doing is inflight events or events in progress pattern.
then check this article for more details too: https://www.daxpatterns.com/events-in-progress/
I don't know spanish, have to google and understand the column names meaning.
12 Replies
- Ashish_MathurSuper User
- AnonymousNot applicable
Thanks for the replies from sevenhills and Ashish_Mathur.
Hi dustdaniel ,
Did you get your problem solved, based on your description I created simple data and got the expected result, hope this will fulfill your requirement, here is the sample data:
1.Create a measure:
Measure = VAR _max=MAX('date'[Date]) VAR _min=MIN('date'[Date]) RETURN CALCULATE( COUNTROWS('Table'), FILTER(ALL('Table'),'Table'[StartDate]>=_min&&'Table'[EndDate]<=_max))2.Since you don't want past customer information, create a new measure for filtering:
Measure2 = VAR _min=MIN('date'[Date]) VAR _max=MAX('date'[Date]) RETURN if(MIN('Table'[StartDate])>=_min&&MAX('Table'[EndDate])<=_max,1,0)3.The final result is as follows:
Best Regards,
Zhu
Community Support TeamIf there is any post helps, then please consider Accept it as the solution to help the other members find it more quickly.
- dustdanielHelper II
Hi Zhu,
I tried what you suggested but I couldn't make it work, would you take a look to the sample I posted recently?
- sevenhillsSuper User
Try this:
Contratos Activos = var _paramDt = SELECTEDVALUE( DateTable[Date] ) RETURN CALCULATE( [Total Contratos], FILTER( ALLSELECTED(Contrato), Contrato[FechaSalida] <= _paramDT && Contrato[FechaRetorno] >= _paramDT ) )... if not use ALL in place of ALLSELECTED
- dustdanielHelper II
Thankyou sevenhills
It looks good, I just need to validate if this is correct, but I guess because it includes the ALL funtion in filter, in the matirx on the right is not listing the 859 selected. any thoughts how I could confirm?
Active clients normaly are no longer than 30 days periods, so clientes from 2022 shouldn't be listed
PD: didn't work with ALLSELECTED, I used ALL instead as you recommended.
Thanks
- sevenhillsSuper User
pls. could you share the screenshot of the model linked between tx table and date table; and the formula used for the measure [Total Contratos]