Close Menu
    Trending
    • Why Every Company Should Have a 90-Day Cash Flow Buffer
    • 10 Practical SQL interview Questions I failed to answer during an interview!! | by The Analyst’s Edge | May, 2025
    • My Small Business Started on Facebook and Makes $500k a Year
    • How to Evaluate LLMs and Algorithms — The Right Way
    • Automate invoice and AP management
    • Unlocking Automation: A Comprehensive Guide to N8n for Streamlined Workflows | by Pratik Abnave | May, 2025
    • Why We Keep Spending Even When We Know We Shouldn’t
    • Focus on Your Health — or Your Startup Won’t Survive
    Finance StarGate
    • Home
    • Artificial Intelligence
    • AI Technology
    • Data Science
    • Machine Learning
    • Finance
    • Passive Income
    Finance StarGate
    Home»Artificial Intelligence»About Calculating Date Ranges in DAX
    Artificial Intelligence

    About Calculating Date Ranges in DAX

    FinanceStarGateBy FinanceStarGateMay 23, 2025No Comments8 Mins Read
    Share Facebook Twitter Pinterest LinkedIn Tumblr Reddit Telegram Email
    Share
    Facebook Twitter LinkedIn Pinterest Email


    When growing Time Intelligence Measures with Energy BI or in Material in Semantic Fashions, it may be essential to create a date vary to calculate the end result for a particular timeframe.

    To be exact, nearly all the Time Intelligence capabilities in Dax create an inventory of dates for a date vary.

    However generally we should create a customized date vary on account of particular necessities.

    DAX presents us two capabilities for this process:

    Each capabilities take a Begin Date as a parameter.
    However for the Finish Date, the conduct is totally different.

    Whereas DATESINPERIOD() takes Intervals (Days, Months, Quarters, Years), DATESBETWEEN() takes a specified Date used because the Finish Date.

    In distinction, DATEADD() makes use of the present Filter Context to get the Begin Date and to calculate the Finish Date.

    However we wish to go a Begin Date, which might differ from the Date(s) within the present Filter Context.

    That is when one of many capabilities talked about above comes into play.

    On the finish of this text, I’ll present you a sensible instance utilizing the strategies proven right here.

    Instruments and situation

    Like in lots of different articles, I exploit DAX Studio to write down DAX Queries and analyze the outcomes.

    If you’re not acquainted with writing DAX queries, learn my piece on easy methods to study to write down such queries:

    This time, I exploit the Information mannequin just for the Date desk.

    I wish to calculate a date vary ranging from Could 5. 2025 and both 25 days or 2 Months into the long run.

    To set the beginning date, I exploit this expression:

    DEFINE
        VAR StartDate = "2025-05-05"
    
    EVALUATE
           { StartDate }

    That is the end in DAX Studio:

    Determine 1 – Question and end in DAX Studio (Determine by the Writer)

    I outline a Variable and assign the results of the date expression for the next queries.

    One other solution to outline the beginning date is to create a date worth utilizing DATE(2025, 05, 05).

    The end result would be the identical.

    The distinction between these two approaches is that the primary returns a string, however the second returns a correct date.

    The DAX capabilities used right here can work with each.

    Utilizing DATESINPERIOD()

    Let’s begin with DATEINPERIOD().

    I’ll use this perform to get a date vary string from the Begin Date and 25 days into the long run:

    DEFINE
        VAR StartDate = "2025-05-05"
        
    EVALUATE
        DATESINPERIOD('Date'[Date]
                        ,StartDate
                        ,25
                        ,DAY)

    The result’s a desk with 25 rows for the times ranging from Could 05, 2025, to Could 29, 2025:

    Determine 2 – 25 Days calculated with DATESINPERIOD() (Determine by the Writer)

    Now, let’s barely change the question to get an inventory of all dates from the Begin Date to 2 Months into the long run:

    DEFINE
        VAR StartDate = "2025-05-05"
        
    EVALUATE
        DATESINPERIOD('Date'[Date]
                        ,StartDate
                        ,2
                        ,MONTH)

    The question returns 61 rows ranging from Max 05, 2025, till July 04, 2025:

    Determine 3 – 2 Months of dates generated with DATESINPERIOD() (Determine by the Writer)

    I can go the interval with an arbitrary variety of days (e.g., 14, 28, 30, or 31 days), and the perform mechanically calculates the date vary.

    After I go destructive numbers, the date vary goes to the previous, beginning with the beginning date.

    Utilizing DATESBETWEEN()

    Now, let’s take a look at DATESBETWEEN().

    DATESBETWEEN() takes a Begin- and an Finish-Date as parameters.

    This implies I have to calculate the top date earlier than utilizing it.

    After I wish to get a date vary from Could 05 to Could 29, 2025, I have to use the next question:

    DEFINE
        VAR StartDate = "2025-05-05"
        
        VAR EndDate = "2025-05-25"
        
    EVALUATE        
        DATESBETWEEN('Date'[Date]
                        ,StartDate
                        ,EndDate)

    The end result is identical as with DATESINPERIOD().

    Nonetheless, there’s one essential level: The tip date is included within the end result.

    This implies I can write one thing like this to get a date vary over two months from Could 05 to July 05, 2025:

    DEFINE
        VAR StartDate = "2025-05-05"
        
        VAR EndDate = "2025-07-05"
        
    EVALUATE        
        DATESBETWEEN('Date'[Date]
                        ,StartDate
                        ,EndDate)

    The result’s similar to the one utilizing DATESINPERIOD() and month because the interval, however with one row extra:

    Determine 4 – Consequence for a date vary over two months, plus one row (Determine by the Writer)

    This offers me extra flexibility to create the date ranges, as I can pre-calculate the top date in line with my wants.

    Use in Measures – a sensible instance.

    I can use these strategies to calculate a operating complete in a Measure.

    However we should take care to make use of the 2 capabilities in the correct manner

    For instance, to calculate the operating complete monthly for 25 days.

    Take a look at the next code, the place I outline two Measures utilizing the 2 capabilities:

    DEFINE
        MEASURE 'All Measures'[25DayRollingTotal_A] =
            VAR DateRange =
                DATESINPERIOD('Date'[Date]
                                ,MIN ( 'Date'[Date] )
                                ,25
                                ,DAY)
            
            RETURN
                CALCULATE ( [Sum Online Sales]
                            , DateRange )
    
        MEASURE 'All Measures'[25DayRollingTotal_B] =
            VAR DateRange =
                DATESBETWEEN ( 'Date'[Date]
                                ,MIN ( 'Date'[Date] )
                                ,MIN ( 'Date'[Date] ) + 25 )
            
            RETURN
                CALCULATE ( [Sum Online Sales]
                            , DateRange )
    
    EVALUATE
    CALCULATETABLE (
        SUMMARIZECOLUMNS (
            'Date'[Year]
            ,'Date'[Month]
            ,"Gross sales", [Sum Online Sales]
            ,"25DayRollingTotal_A", [25DayRollingTotal_A]
            ,"25DayRollingTotal_B", [25DayRollingTotal_B]
            )
            ,'Date'[Date] >= DATE(2023, 01, 01) && 'Date'[Date] 

    That is the end result:

    Determine 5 – Results of the operating complete over 25 days with the 2 capabilities (Determine by the Writer)

    Discover the distinction between the 2 outcomes.

    It’s because DATESBETWEEN() consists of the top date within the end result, whereas DATESINPERIOD() provides the variety of intervals to the beginning date however consists of the beginning date.

    Attempt it out with the next question:

    DEFINE
        VAR StartDate = DATE(2025,05,05)
        
        VAR EndDate = StartDate + 25
        
    EVALUATE
        DATESINPERIOD('Date'[Date]
                        ,StartDate
                        ,25
                        ,DAY)
        
    EVALUATE        
        DATESBETWEEN('Date'[Date]
                        ,StartDate
                        ,EndDate)

    The primary returns 25 rows (Could 05 – Could 29, 2025) and the second returns 26 rows (Could 05 – Could 30, 2025).

    Due to this fact, I have to change one of many two Measures to get the identical end result.

    On this case, the calculation definition is: Begin from the primary date and go 25 into the long run.

    The corrected logic is that this:

    DEFINE
        MEASURE 'All Measures'[25DayRollingTotal_A] =
            VAR DateRange =
                DATESINPERIOD('Date'[Date]
                                ,MIN ( 'Date'[Date] )
                                ,25
                                ,DAY)
            
            RETURN
                CALCULATE ( [Sum Online Sales]
                            , DateRange )
    
        MEASURE 'All Measures'[25DayRollingTotal_B] =
            VAR DateRange =
                DATESBETWEEN ( 'Date'[Date]
                                ,MIN ( 'Date'[Date] )
                                ,MIN ( 'Date'[Date] ) + 24 )  // 24 as an alternative of 25 days
            
            RETURN
                CALCULATE ( [Sum Online Sales]
                            , DateRange )
    
    EVALUATE
    CALCULATETABLE (
        SUMMARIZECOLUMNS (
            'Date'[Year]
            ,'Date'[Month]
            ,"Gross sales", [Sum Online Sales]
            ,"25DayRollingTotal_A", [25DayRollingTotal_A]
            ,"25DayRollingTotal_B", [25DayRollingTotal_B]
            )
            ,'Date'[Date] >= DATE(2023, 01, 01) && 'Date'[Date] 

    Now, each measures return the identical end result:

    Determine 6 – Results of the corrected Measures (Determine by the Writer)

    I examined the efficiency of each capabilities for a similar calculation (Rolling complete over 25 days), and the outcomes had been equal. There was no distinction in efficiency or effectivity between these two.

    Even the execution plan is identical.

    Because of this DATEINPERIOD() is a shortcut perform for DATESBETWEEN().

    Conclusion

    From a performance standpoint, each of the proven capabilities are nearly equal.

    The identical applies from the efficiency standpoint.

    They differ in the way in which the top date is outlined.

    DATESINPERIOD() is predicated on calendar intervals, like days, months, quarters, and years.
    This perform is used when the date vary have to be calculated primarily based on the calendar.

    However when we now have a pre-defined finish date or should calculate the date vary between two pre-defined dates, the DATESBETWEEN() perform is the perform to make use of.

    For instance, I exploit DATESBETWEEN() when performing Time Intelligence calculations for weeks.

    You’ll be able to learn this piece to study extra about weekly calculations:

    As you’ll be able to learn, I retailer the beginning and finish dates of the week for every row within the knowledge desk.

    This manner, I can simply search for every date’s begin and finish dates.

    So, once we should choose between these two capabilities, it’s not a matter of performance however of necessities outlined by the stakeholders of the brand new studies or the wanted knowledge evaluation.

    Learn this text to discover ways to gather and interpret Efficiency knowledge with DAX Studio:

    Like in my earlier articles, I exploit the Contoso pattern dataset. You’ll be able to obtain the ContosoRetailDW Dataset totally free from Microsoft here.

    The Contoso Information will be freely used underneath the MIT License, as described in this document. I modified the dataset to shift the information to modern dates.



    Source link

    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Previous ArticleUnlocking Insights Through Excel: A Dive into Real-World Dashboards | by Shivani Sharma | May, 2025
    Next Article How Young Workers Are Creating a New Opportunity for Unions
    FinanceStarGate

    Related Posts

    Artificial Intelligence

    How to Evaluate LLMs and Algorithms — The Right Way

    May 23, 2025
    Artificial Intelligence

    Multiple Linear Regression Analysis | Towards Data Science

    May 23, 2025
    Artificial Intelligence

    Google’s AlphaEvolve: Getting Started with Evolutionary Coding Agents

    May 22, 2025
    Add A Comment
    Leave A Reply Cancel Reply

    Top Posts

    Japanese-Chinese Translation with GenAI: What Works and What Doesn’t

    March 27, 2025

    Investors Pay Attention to This Before Even Looking at Your Business

    February 25, 2025

    Show and Tell | Towards Data Science

    February 4, 2025

    Top ABBYY FlexiCapture alternatives for document processing

    February 4, 2025

    ChatGPT Is Fixing Its ‘Annoying’ New Personality

    May 1, 2025
    Categories
    • AI Technology
    • Artificial Intelligence
    • Data Science
    • Finance
    • Machine Learning
    • Passive Income
    Most Popular

    Efficient Graph Storage for Entity Resolution Using Clique-Based Compression

    May 15, 2025

    Statistics Unveiled: Where Numbers Tell Stories, and Data Speaks Human | by Abu Abdul | Feb, 2025

    February 1, 2025

    Update Your Team’s Productivity Suite to Office 2021 for Just $49.97

    May 10, 2025
    Our Picks

    How AI and Machine Learning Are Revolutionizing Video Streaming Platforms | by Fathima Parvin | Feb, 2025

    February 26, 2025

    Optimasi Model Machine Learning. Optimalkan model machine learning… | by Yasun Studio | May, 2025

    May 11, 2025

    How AI Agents Are Changing the Way We Learn

    May 12, 2025
    Categories
    • AI Technology
    • Artificial Intelligence
    • Data Science
    • Finance
    • Machine Learning
    • Passive Income
    • Privacy Policy
    • Disclaimer
    • Terms and Conditions
    • About us
    • Contact us
    Copyright © 2025 Financestargate.com All Rights Reserved.

    Type above and press Enter to search. Press Esc to cancel.