In Power BI DAX, both TOTALYTD and DATESYTD functions are used for year-to-date calculations, but they serve slightly different purposes and are used in different contexts. Here’s a detailed comparison along with examples.
1. TOTALYTD
The TOTALYTD function is used to calculate the year-to-date total for a given measure or expression. It simplifies the process of accumulating values from the start of the year to a specified date.
Syntax:
DAX
TOTALYTD(<expression>, <dates>, [<filter>], [<year_end_date>])
<expression>: The measure or expression to aggregate.<dates>: A column containing date values.[<filter>]: (Optional) Any additional filters to apply.[<year_end_date>]: (Optional) The end date of the fiscal year. Defaults to December 31 if not specified.
Example: Suppose you have a Sales table with a column Sales[SalesAmount] and a Date table with a column Date[Date]. To calculate the year-to-date sales amount, you can use:
DAX
YTD Sales = TOTALYTD(SUM(Sales[SalesAmount]), Date[Date])
2. DATESYTD
The DATESYTD function returns a table that contains a column of dates from the start of the year up to a specified date. It is usually used within other DAX functions that operate over a table of dates.
Syntax:
DAX
DATESYTD(<dates>, [<year_end_date>])
<dates>: A column containing date values.[<year_end_date>]: (Optional) The end date of the fiscal year. Defaults to December 31 if not specified.
Example: To create a calculated column or measure that filters the dates for year-to-date calculations, you can use DATESYTD within the CALCULATE function.
DAX
YTD Sales = CALCULATE(
SUM(Sales[SalesAmount]),
DATESYTD(Date[Date])
)
Key Differences:
- Usage Context:
TOTALYTDis a specialized function specifically designed to simplify the creation of year-to-date calculations for measures.DATESYTDreturns a table of dates and is used within functions that require a table expression, likeCALCULATE.
- Simplicity vs. Flexibility:
TOTALYTDis simpler to use for straightforward year-to-date aggregations as it directly takes a measure and date column.DATESYTDprovides more flexibility and can be used in more complex scenarios where a table of dates is needed.
- Parameter Requirements:
TOTALYTDdirectly takes an expression to aggregate, whileDATESYTDreturns a table of dates that you use within another function.
Examples with Dataset:
Let’s consider a Sales table and a Date table with the following data:
Sales Table:
| SalesID | SalesAmount | Date |
|---|---|---|
| 1 | 1000 | 2024-01-01 |
| 2 | 1500 | 2024-02-05 |
| 3 | 2000 | 2024-03-10 |
| 4 | 800 | 2024-04-15 |
| 5 | 1200 | 2024-05-20 |
| 6 | 3000 | 2024-06-25 |
Date Table:
| Date | Year | Month | Day |
|---|---|---|---|
| 2024-01-01 | 2024 | 1 | 1 |
| 2024-02-05 | 2024 | 2 | 5 |
| 2024-03-10 | 2024 | 3 | 10 |
| 2024-04-15 | 2024 | 4 | 15 |
| 2024-05-20 | 2024 | 5 | 20 |
| 2024-06-25 | 2024 | 6 | 25 |
Using TOTALYTD:
DAX
YTD Sales = TOTALYTD(SUM(Sales[SalesAmount]), Date[Date])
Using DATESYTD:
DAX
YTD Sales = CALCULATE(
SUM(Sales[SalesAmount]),
DATESYTD(Date[Date])
)
In both cases, the measure YTD Sales would produce the same result, but TOTALYTD is more straightforward for simple year-to-date calculations, while DATESYTD offers more flexibility for more complex scenarios.

Ankit Srivastava is an IT trainer, technology educator, and digital skills mentor with expertise in programming, data analytics, AI, and software development. He has successfully trained thousands of learners, with more than 10,000 student enrollments on Udemy. His practical teaching approach empowers students and professionals to build in-demand technical skills. Colorstech channel where Ankit posts video tutorials has more than 8000 Subscribers.


