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

函数名目的语法返回值
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作为年度截止日期

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/635825.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s 部署 kube-prometheus监控

一、Prometheus监控部署 1、下载部署文件 # 使用此链接下载后解压即可 wget https://github.com/prometheus-operator/kube-prometheus/archive/refs/heads/release-0.13.zip2、根据k8s集群版本获取不同的kube-prometheus版本部署 https://github.com/prometheus-operator/k…

Unity实现动态数字变化

最近的项目需要动态显示数字&#xff0c;所以使用Text组件&#xff0c;将数字进行变化操作过程记录下来。 一、UI准备 1、新建一个Text组件 2、新建C#脚本 3、将Text挂载到脚本上 二、函数说明 1、NumberChange 方法 NumberChange 方法接收四个参数&#xff1a;初始数字 in…

页面动态滑动事件如何实现?锚点如何实现?

在提交材料、页面互动时候&#xff0c;锚点是一个常用的东西&#xff0c;实现: 应用场景测试场景测试源码 应用场景 测试场景 当点击submit时候&#xff0c;即可滑动到对应的id标签 测试源码 <!DOCTYPE html> <html lang"en"> <head><meta …

云架构(五)BBF模式

BFF模式&#xff08;Backends for Frontends pattern&#xff09;- https://learn.microsoft.com/en-us/azure/architecture/patterns/backends-for-frontends。 创建单独的后台服务用以提供给特定的前端或者接口。当你希望避免为多个接口定制单独的后台时&#xff0c;此模…

Jenkins和gitlab实现CICD

1 背景 在开发TracerBackend服务的时候&#xff0c;每次更改代码之后需要推送到gitlab&#xff0c;然后ssh登录到Ubuntu的服务器上部署新的代码。服务成功启动之后&#xff0c;在本地执行测试用例&#xff0c;觉得这一套操作流程还是挺复杂的。想起公司的代码发布流程&#xf…

黑马程序员Linux简单入门学习笔记

Linux介绍 内核提供系统最核心的功能&#xff0c;如: 调度CPU、调度内存、调度文件系统、调度网络通讯、调度等系统级应用程序&#xff0c;可以理解为出厂自带程序&#xff0c;可供用户快速上手操作系统&#xff0c;如:文件管理器、任务管理器、图片查看、音乐播放等 目录结构 …

【Java网络编程】网络编程中的基本概念及实现UDP、TCP客户端服务器程序

目录 一、什么是网络编程&#xff1f; 二、网络编程中的基本概念 1. 客户端和服务器 2. 请求和响应 三、Socket套接字 UDP数据报套接字编程 1. DatagramSocket 2. DatagramPacket 3. UDP回显客户端服务器程序 4. UDP字典客户端服务器程序 TCP流套接字编程 1. Serve…

嵌入式linux中利用QT控制蜂鸣器方法

大家好,今天给大家分享一下,如何控制开发板上的蜂鸣器。 第一:开发板原理图 从原理图中可以得出,当引脚输出低电平的时候,对应的蜂鸣器发出响声。 第二:QT代码详细实现 设置一个按钮,点击即可控制BEEP状态发生反转。 #ifndef MAINWINDOW_H #define MAINWINDOW_H#in…

从0到1实现RPC | 接入Apollo配置中心

一、代码实现 添加依赖 添加apollo客户端的依赖和spring配置相关依赖 添加监听器 通过实现ApplicationContextAware接口&#xff0c;获取Spring上下文。 使用ApolloConfigChangeListener注解监听命名空间rpc-demo-provider.yaml和默认的application.properties。 监听逻辑…

STL的map:ALV树和红黑树

ALV树 平衡因子的几种情况 单旋 双旋 红黑树 三种情况 第二种情况变种&#xff1a;不同的是折线要双旋 总结&#xff1a;

Python编程玩转二维码

文章目录 Python编程玩转二维码第一部分&#xff1a;背景介绍第二部分&#xff1a;qrcode库是什么&#xff1f;第三部分&#xff1a;如何安装这个库&#xff1f;第四部分&#xff1a;库函数使用方法第五部分&#xff1a;场景应用第六部分&#xff1a;常见Bug及解决方案第七部分…

Oracle使用内部包自定义创建表空间和用户

如果之前有类似的表空间,可以使用dbms自动生成对应的表空间和数据文件 select dbms_metadata.get_ddl(TABLESPACE,ts.tablespace_name) from dba_tablespaces ts; 可以使用类似的 SQL> set echo off SQL> spool /data/logs/create_tablespace.log SQL> select dbms…