Search code examples
powerbidaxpowerbi-desktop

How to find the last date of each quarter in DAX


How to find the last date of each quarter When fiscal year starts from May, in DAX.

Expected Answer 
Friday January 26,2024
Friday April 26,2024

enter image description here

FiscalYear  Quarter month   fy   wk    amount   expected answer
fy24        Q3      jan     fy24 WK38   60  
fy24        Q3      jan     fy24 WK39   61      61
fy24        Q4      feb     fy24 WK40   63  
fy24        Q4      feb     fy24 WK41   66  
fy24        Q4      feb     fy24 WK42   66  
fy24        Q4      feb     fy24 WK43   67  
fy24        Q4      mar     fy24 WK44   68  
fy24        Q4      mar     fy24 WK45   66  
fy24        Q4      mar     fy24 WK46   70  
fy24        Q4      mar     fy24 WK47   71  
fy24        Q4      mar     fy24 WK48   72  
fy24        Q4      apr     fy24 WK49   66  
fy24        Q4      apr     fy24 WK50   70  
fy24        Q4      apr     fy24 WK51   71  
fy24        Q4      apr     fy24 WK52   75       75
fy25        Q1      may     fy25 WK1    80  
fy25        Q1      may     fy25 WK2    60  
fy25        Q1      may     fy25 WK3    50  
fy25        Q1      may     fy25 WK4    40       40

Solution

  • You need to have a separate dimension containing the dates where you apply the fiscal logic using columns like below :

    Calendar = 
    ADDCOLUMNS (
        CALENDAR (DATE(2023, 5, 1), DATE(2024, 12, 31)),
        "Year", YEAR ( [Date] ),
        "Month", MONTH ( [Date] ),
        "Day", DAY ( [Date] ),
        "Fiscal Year", 
            IF (
                MONTH ( [Date] ) >= 5,
                YEAR ( [Date] ),
                YEAR ( [Date] ) - 1
            ),
        "Fiscal Quarter", 
            SWITCH (
                TRUE(),
                MONTH ( [Date] ) >= 5 && MONTH ( [Date] ) <= 7, 1,
                MONTH ( [Date] ) >= 8 && MONTH ( [Date] ) <= 10, 2,
                MONTH ( [Date] ) >= 11 && MONTH ( [Date] ) <= 1, 3,
                MONTH ( [Date] ) >= 2 && MONTH ( [Date] ) <= 4, 4
            ),
        "Quarter Label",
            "Q" & 
            SWITCH (
                TRUE(),
                MONTH ( [Date] ) >= 5 && MONTH ( [Date] ) <= 7, 1,
                MONTH ( [Date] ) >= 8 && MONTH ( [Date] ) <= 10, 2,
                MONTH ( [Date] ) >= 11 && MONTH ( [Date] ) <= 1, 3,
                MONTH ( [Date] ) >= 2 && MONTH ( [Date] ) <= 4, 4
            ) & " " &
            IF (
                MONTH ( [Date] ) >= 5,
                YEAR ( [Date] ) + 1,
                YEAR ( [Date] )
            )
    )
    

    Case for 01/05/2024 :

    enter image description here

    Case for 31/07/2023 and 31/10/2023 which are the end of the 1st and 2nd fiscal quarters :

    enter image description here