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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
jeffgarlisch
Helper I
Helper I

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 1
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.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.