7. DAX 时间函数-- DATE 日期--TOTALMTD、TOTALQTD、TOTALYTD

本文详细介绍了ExcelDAX函数中TOTALMTD,TOTALQTD,和TOTALYTD的使用方法,通过实例演示如何计算当前月份至今、季度至今和年度至今的销售额,以及这些函数在处理测试数据时的具体应用和过滤规则。
摘要由CSDN通过智能技术生成

函数名目的语法返回值
TOTALMTD计算当前上下文中该月份至今的表达式的值 。TOTALMTD ( <表达式>, <日期列>, [<筛选器>] )标量 表示表达式的标量值,在“日期”中给定日期,计算当前月份至今的日期 。
TOTALQTD计算当前上下文中该季度至今的日期的表达式的值 。TOTALQTD ( <表达式>, <日期列>, [<筛选器>] )返回表示“表达式”的标量值,该值计算到目前为止当前季度中的所有日期(假定当前日期处于“日期”) 。
TOTALYTD计算当前上下文中该季度至 [截止日期] 的表达式的值 。TOTALYTD ( <表达式>, <日期列>, [<筛选器>], [截止日期] )表示表达式的标量值,计算年初至今的日期 。

一:准备测试数据

        我喜欢用数据说话,还是使用之前的测试数据,这套数据横跨 4 年,从 2024 年到 2026 年,每天都不停歇,最早日期是 2024-02-01,最晚日期是 2026-07-11,销售额第一天是 1,第二天是 2,依次到2026-07-11 是 892。

二: 实践出真知

        在前面几章的讲解下,大家应该比较熟悉DAX 函数中类似的使用场景了。如果没有看过,可以点击下面的列表:

1. DAX 时间函数--生成日期表_dax今天所在的周-CSDN博客

2. DAX 时间函数--围绕着 DATE 日期格式的那部分_dax函数怎么取上个自然周数据-CSDN博客

3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物_dax date函数-CSDN博客 

4. DAX 时间函数-- DATE 日期--START/END OF MONTH/QUARTER/YEAR-CSDN博客

5. DAX 时间函数-- DATE 日期--PREVIOUS/NEXT DAY/MONTH/QUARTER/YEAR-CSDN博客 

6. DAX 时间函数-- DATE 日期--FIRSTDATE \LASTDATE\DATESMTD\DATESQTD\DATESYTD-CSDN博客

 1)准备代码
TOTALMTD = TOTALMTD(SUM('测试数据'[销售额]),'测试数据'[Date],'测试数据'[Date].[日]=1)
TOTALQTD = TOTALQTD(SUM('测试数据'[销售额]),'测试数据'[Date],'测试数据'[Date].[日]=2)
TOTALYTD = TOTALYTD(SUM('测试数据'[销售额]),'测试数据'[Date],'测试数据'[Date].[日]=2)
TOTALYTD 1101 = TOTALYTD(SUM('测试数据'[销售额]),'测试数据'[Date],'测试数据'[Date].[日]=2,"11/01")
2)测试数据

 

3)TOTALMTD 函数
TOTALMTD = TOTALMTD(SUM('测试数据'[销售额]),'测试数据'[Date],'测试数据'[Date].[日]=1)

此处用 TOTALMTD 上述语句,其含义是:统计该月份至今'测试数据'中的[销售额],过滤条件日期为 1 日。
首先过滤器左值如何变化不影响测试结果,只有过滤器右值才影响结果。

测试数据从 2024-09-14 到 2025-03-16 时候,TOTALMTD  为 395

测试数据从 2025-08-19 到 2025-11-26 时候, TOTALMTD 为 640

分析:过滤器右值为  2025-03-16 时候,符合条件的只有 2025-03-01 的值,即 395

2025/3/1 0:00395

过滤器右值为  2025-11-26 时候,符合条件的只有 2025-11-01 的值,即 640

2025/11/1 0:00640

 大家明白了啦?

4)TOTALQTD 函数
TOTALQTD = TOTALQTD(SUM('测试数据'[销售额]),'测试数据'[Date],'测试数据'[Date].[日]=2)

此处用 TOTALQTD 上述语句,其含义是:统计该季度至今'测试数据'中的[销售额],过滤条件日期为 2 日。
首先过滤器左值如何变化不影响测试结果,只有过滤器右值才影响结果。

测试数据从 2024-09-14 到 2025-03-16 时候,TOTALQTD  为 1101

测试数据从 2025-08-19 到 2025-11-26 时候, TOTALQTD 为 1251

分析:过滤器右值为  2025-03-16 时候,符合条件的只有 2025-01-02、2025-01-02、2025-03-02 的值,即 1101=337+368+396

2025/1/2 0:00337
2025/2/2 0:00368
2025/3/2 0:00396

        过滤器右值为  2025-11-26 时候,符合条件的只有 2025-10-02、2025-11-02、 ( 之所以没有 2025-12-02,是因为 2025-12-02 > 2025-11-26,不符合至今的要求)的值,即 1251=610+641

2025/10/2 0:00610
2025/11/2 0:00641
5)TOTALYTD 函数
TOTALYTD = TOTALYTD(SUM('测试数据'[销售额]),'测试数据'[Date],'测试数据'[Date].[日]=2)
TOTALYTD 1101 = TOTALYTD(SUM('测试数据'[销售额]),'测试数据'[Date],'测试数据'[Date].[日]=2,"11/01")

此处用 TOTALYTD 上述语句,其含义是:统计该年度至今'测试数据'中的[销售额],过滤条件日期为 2日。

TOTALYTD  1101 ,其含义是:统计该年度至今'测试数据'中的[销售额],过滤条件日期为 2日,且截止日期为 11-01
首先过滤器左值如何变化不影响测试结果,只有过滤器右值才影响结果。

测试数据从 2024-09-14 到 2025-03-16 时候,TOTALYTD 为 1101,TOTALYTD  1101 为 1683 

测试数据从 2025-08-19 到 2025-11-26 时候,TOTALYTD 为 5371,TOTALYTD  1101 为 664

分析:过滤器右值为  2025-03-16 时候,

          针对 TOTALYTD  符合条件的只有 2025-01-02、2025-01-02、2025-03-02 的值,即 1101=337+368+396

2025/1/2 0:00337
2025/2/2 0:00368
2025/3/2 0:00396

        针对 TOTALYTD  1101 符合条件的有 2024-11-02、2024-12-02、2025-01-02、2025-01-02、2025-03-02 、 的值,即 1683 =276+306+337+368+396;因为此时是以 11/01作为年度截止日期,所以上一年度日期还应该包括2024-11-02、2024-12-02。这个关系有点绕,请大家一定要注意。

2024/11/2 0:00276
2024/12/2 0:00306
2025/1/2 0:00337
2025/2/2 0:00368
2025/3/2 0:00396

   过滤器右值为  2025-11-26 时候

        针对 TOTALYTD  符合条件的只有 2025-01-02、2025-01-02、2025-03-02 、2025-04-02、2025-05-02、2025-06-02、2025-07-02、2025-08-02、2025-09-02、2025-09-02 的值,即 5371,

        针对 TOTALYTD  1101 符合条件的只有 2025-11-02、即 641;因为此时是以 11/01作为年度截止日期

~~~~~~~~~~~~~~~博客写得累,麻烦点个赞或者收藏再走吧!谢谢同学!还可以加个关注!~~~~~~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江南野栀子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值