Forum Discussion

jeffgarlisch's avatar
jeffgarlisch
Helper I
7 years ago

DATESBETWEEN Not calculating Correctly

Hello All,

 

Im developing a dashboard and i need to calc a YTD distinct count of IDs created this year VS Last Year

e.g 2019-01-01 to 2019-02-01 AND 2018-01-01 to 2018-02-01,


Data is structured like so :

 

I have a fact table with ID numbers and the day they were created,

 

with a Many to One relationship with a date dimension table. 

 

Measures and Variables listed below.

 

 

 

 

All Variables and measures calculating correctly,vetted them multiple times. 

All measures have identical variables

VARIABLES: 

VAR TotalApps = CALCULATE(DISTINCTCOUNT(PLASFL[MERCHANT_APPLICATION_ID]),DateCodeMSTR[FullDate])
Var CYear = YEAR(TODAY())
Var PrevYear = CYear - 1
VAR StartDate = CALCULATE(FIRSTDATE(ALLSELECTED(DateCodeMSTR[FullDate])),YEAR(DateCodeMSTR[FullDate]) = CYear)
VAR EndDate = CALCULATE(LASTDATE(ALLSELECTED(DateCodeMSTR[FullDate])),YEAR(DateCodeMSTR[FullDate]) = CYear)
VAR StartDatePY = CALCULATE(FIRSTDATE(DateCodeMSTR[FullDate]),Year(DateCodeMSTR[FullDate]) = PrevYear)
VAR EndDatePY = CALCULATE(LASTDATE(DateCodeMSTR[FullDate]),Year(DateCodeMSTR[FullDate]) = PrevYear)


Measures: 


This Year Calc = 

[Calculates Correctly, numbers line up with Database.]

RETURN 
CALCULATE(DISTINCTCOUNT(PLASFL[MERCHANT_APPLICATION_ID]),DATESBETWEEN(DateCodeMSTR[FullDate],StartDate,EndDate))




Last Year Calc = 

[Calculates incorrectly, 23,000 Returned VS. 1921 Actual in DB.]

VAR TotalApps = CALCULATE(DISTINCTCOUNT(PLASFL[MERCHANT_APPLICATION_ID]),DateCodeMSTR[FullDate])
Var CYear = YEAR(TODAY())
Var PrevYear = CYear - 1
VAR StartDate = CALCULATE(FIRSTDATE(ALLSELECTED(DateCodeMSTR[FullDate])),YEAR(DateCodeMSTR[FullDate]) = CYear)
VAR EndDate = CALCULATE(LASTDATE(ALLSELECTED(DateCodeMSTR[FullDate])),YEAR(DateCodeMSTR[FullDate]) = CYear)
VAR StartDatePY = CALCULATE(FIRSTDATE(DateCodeMSTR[FullDate]),Year(DateCodeMSTR[FullDate]) = PrevYear)
VAR EndDatePY = CALCULATE(LASTDATE(DateCodeMSTR[FullDate]),Year(DateCodeMSTR[FullDate]) = PrevYear)

RETURN 
CALCULATE(DISTINCTCOUNT(PLASFL[MERCHANT_APPLICATION_ID]),DATESBETWEEN(DateCodeMSTR[FullDate],StartDatePY,EndDatePY))



Thanks in advance!

1 Reply

  • AmanBedwal's avatar
    AmanBedwal
    Frequent Visitor

    You can use time intelligence functions available in Power BI (provided you have continuous DateTable).
    For YTD IDs use the below measure.

    IDs YTD =

    TOTALYTD (

        DISTINCTCOUNT ( PLASFL[MERCHANT_APPLICATION_ID] ),

        DATESYTD ( DateCodeMSTR[FullDate] )

    )

    For previous year numbers, I am assuming that you have a date field in PLASFL table. Replace "PLASFL[Date]" with the actual date field in PLASFL table.

     

    IDs PY =

    VAR MaxDataDate =

        CALCULATE ( MAX ( PLASFL[Date] ), ALL ( PLASFL ) )

    RETURN

        CALCULATE (

            [IDs YTD],

            SAMEPERIODLASTYEAR (

                INTERSECT (

                    VALUES ( DateCodeMSTR[FullDate] ),

                    DATESBETWEEN ( DateCodeMSTR[FullDate], BLANK (), MaxDataDate )

                )

            )

        )

    Hope this is helpful.