3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物

这篇具有很好参考价值的文章主要介绍了3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在数据分析过程中,经常需要从一个数据推到另外一个数据,日期数据也是如此,需要从一个日期推到另外一个相关的日期,或者从一群日期推到另外一个相关的日期/一群相关的日期。这一期说的就是日期之间彼此推衍的函数,会比之前复杂不少。

第一部分

3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi

先用 1. DAX 时间函数--生成日期表_monthno是什么函数-CSDN博客 中提到的 CALENDAR 函数生成日期表。

3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi

1) DATEADD 函数:          

返回一个单列的日期表,将当前筛选上下文中的日期按指定的间隔向未来或者过去平移。

该函数一看是一个非常有用的函数,事实上它非常鸡肋,非常鸡肋。                                         

 语法:DATEADD ( <日期列>, <偏移量>, <偏移单位> )     

日期列: DATE 格式的数据列,请注意网上有一句话 :"如果日期列中的数据不是连续间隔,则函数回返回错误"???What,这么设计是为啥,我完全不明白!  现实世界的数据没有这么完美的!  以上是微软官方网站的解释,不死心的我决定直接试试,我生成了一个不连续的数据表 sheet1,待会我们试试。                                                   

      3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi 

偏移量: 偏移的数量,是一个数字标量。 指定了正数,则日期列中的日期向未来推移;如果指定的数字为负数,则日期列中的日期向过去推移 。

偏移单位:可以是年 YEAR、月 MONTH、季度 QUARTER、日  DAY

  但是请一定注意,下面的用法是错误的,因为 DATEADD 返回的是表!!!  DATEADD 返回的是表!!!DATEADD 返回的是表!!!,不能产生新列!

 这么设计是为啥,我也完全不明白! ,生成列比生成表好用多了。      

3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi

好了,现在我们来试试那个微软官方注释是否正确吧。结果真的让我莫名其妙! 3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi

 看官们看出来了没有,面对不连续的数据,DATEADD没有报错啊,那个微软官方解释造谣?!可是我仔细看了下,更悲伤了,因为数据丢了!原来sheet1中提供了 7 条日期数据,但是新生成的表格中只有 5 条数据!why?!!!难道我一开始的理解有重大误区。你还别说,是的!       

我重新试了很多种数据组合,搭配 DATEADD,大家瞪大眼睛看吧。第一种sheet1数据如下:                                                                                                                                             3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi                                                               3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi                      3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi                 3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi                                             

第二种sheet1数据如下:                                                                              3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi   3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi          3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi                                     

总结:                                                                                                                                       

1)日期列数据不连续不会报错!但是会对<日期列>重新排序                                             

2)DATEADD 不是如我希望的那样把日期列数据依次推迟或推前,它是在现有数据中进行筛选,现有数据中如果有符合日期要求的留下来,不符合日期要求的剔除。怎么算符合日期要求呢?有一个逻辑:首先使用<日期列>中最早的那个日期,使用上<偏移量>, <偏移单位> 得到一个新的日期<新日期>。 

比如sheet1第二部分数据中<日期列> 最早的日期是20240120,当<偏移量>, <偏移单位>是 2,DAY 时候,得到  <新日期> 即 20240122,那么原来的<日期列>中大于等于20240122的日期则形成了新表。

<偏移量>, <偏移单位>是 1,QUARTER 时候,得到  <新日期> 即 202404,请注意是202404,即只要大于等于20240401即可,而不是一定要大于202420,那么原来的<日期列>中大于等于20240401的日期则形成了新表。

<偏移量>, <偏移单位>是 1,MONTH 时候,得到  <新日期> 即 202402,那么原来的<日期列>中大于等于202404的日期则形成了新表。

说实话,我觉得这个用法好奇特!后来我想明白了,DATEADD 这个名字起错了,如果使用 DATEFILTER 或者 DATECHOOSE,感觉就会好多了。                                                                                         

2) DATEDIFF 函数:返回两个日期之间指定的间隔数。          

语法:DATEDIFF ( <日期 1>, <日期 2>, <间隔单位> )          

<日期 1>, <日期 2>,      都是日期格式的数据,<间隔单位> 则是有YEAR、MONTH、DAY、QUARTER、WEEK、HOUR、MINUTE、SECOND 8 个枚举变量。3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi                                    我准备了一组数据,分别使用了这个8个枚举变量,结果如下:                                                                                                                                            3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi   

总结一下详细用法:

a) 针对  YEAR、MONTH、DAY、QUARTER、WEEK、HOUR、MINUTE、SECOND 8 个枚举变量,DATEDIFF 比较的是其枚举量对应的值,如 YEAR,只比较年份,比如 20240528 和 20250109, 实际时间不到半年,但是DATEDIFF的结果是1。

b) <日期 1>早于 <日期 2>,则值为正值,相等为 0,反之为负值。

这个函数挽救了我被 DATEADD 伤害到的脆弱心灵。                                                                                                

3) DATESBETWEEN 函数

返回一个表,返回一个包含一列日期的表,这些日期以指定开始日期,一直持续到指定的结束日期。其实这就是一种筛选,这次名字起得比较好,比 DATEADD 强多了。

语法:DATESBETWEEN ( <日期列>, <起始日期>, <截止日期> )                                           

给大家看一个用法:                                                   3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi   3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi   

4) DATESINPERIOD 函数  

返回一个表,此表包含一列日期,日期以指定的开始日期开始,并按照指定的日期间隔一直持续到指定的数字。

DATESINPERIOD ( <日期列>, <起始日期>, <偏移量>, <间隔单位>       

这个函数又一次伤到了我!它和DATEADD函数非常类似,也是筛选日期,区别在于它增加了一个<起始日期>,使逻辑更加复杂(或者说高效?)。但是在计算新日期时候两者有很大区别,DATEADD 是按照自然月、年等来计算,而 DATESINPERIOD 是按照周期月、年来计算。

总结一下用法:

a)如果<偏移量>是正值,

首先要在<日期列> 找出大于等于  <起始日期> 的所有值, 如没有则返回空表,结束。

接着在找到的值中寻找出最早的日期值<最早日期值>,然后根据<偏移量>, <间隔单位>得到一个新的日期值<最晚日期值>;

比如<偏移量>, <间隔单位>是2,DAY,从下面的数据中,筛选出<最早日期值>20240225和<最晚日期值> 20240226;

比如<偏移量>, <间隔单位>是1,MONTH,从下面的数据中,筛选出<最早日期值>20240225和<最晚日期值> 20240324;

最后使用<最早日期值>和 <最晚日期值>来筛选区间内的日期值。                                                                  3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi       3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbib)如果<偏移量>是负值,

首先要在<日期列> 找出小于等于  <起始日期> 的所有值, 如没有则返回空表,结束。

接着在找到的值中寻找出最晚的日期值<最晚日期值>,然后根据<偏移量>, <间隔单位>得到一个新的日期值<最早日期值>;

比如<偏移量>, <间隔单位>是 -4,DAY,从下面的数据中,筛选出<最早日期值>20240328和<最晚日期值> 20240325;

比如<偏移量>, <间隔单位>是-1,MONTH,从下面的数据中,筛选出<最早日期值>20240228和<最晚日期值> 20240127;

最后使用<最早日期值>和 <最晚日期值>来筛选区间内的日期值。   3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi                      

5) DATESMTD 函数  

返回一个表,此表包含当前上下文中该月份至今的一列日期。

 语法:DATESMTD ( <日期列> )             

还用下面语句生成的日期表

日期表 = CALENDAR( DATE( 2024 , 2, 25) ,
           DATE( 2024 , 5 , 10 ) 
         )

3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi   

此时可以看出它是找出最晚的一个月的所有日期表。

6) DATESQTD  函数 

函数返回一个表,此表包含当前上下文中该季度至今的一列日期。

语法:DATESQTD ( <日期列> ),这个从月换成季度,不再赘述

7) DATESYTD 函数

函数返回一个表,其中包含当前筛选上下文中当前年份至今的所有日期。

语法:DATESYTD ( <日期列> , [年截止日期] ); 

这个和DATESMTD、DATESQTD的区别在于新增了一个可选的参数[年截止日期] ;有了这个[年截止日期] 则不是默认筛选出来整年的日期,而是到了[年截止日期] 就可以了。

8) LASTDATE 函数 

返回指定日期列在当前上下文中的最后一个非空日期。

语法:LASTDATE ( <日期列> )    

还用该语句生成:日期表 = CALENDAR( DATE( 2024 , 2, 25) ,DATE( 2024 , 5 , 10 ) )3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi

9) FIRSTDATE 函数       

返回指定日期列在当前上下文中的最前一个非空日期。

语法:FIRSTDATE ( <日期列> )            

还用该语句生成:日期表 = CALENDAR( DATE( 2024 , 2, 25) ,DATE( 2024 , 5 , 10 ) ) 3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物,DAX 函数,数据分析,powerbi

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·~~~~~~这篇博客写了 3 天,麻烦点个赞或者收藏再走吧!谢谢同学!~~~~~~~~~~~~~~~~文章来源地址https://www.toymoban.com/news/detail-851361.html

到了这里,关于3. DAX 时间函数-- DATE 日期--一生二,二生三,三生万物的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java中Date、Calendar、LocalDateTime时间戳转换日期

    时间戳是指格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒 ( 北京时间 1970 年 01 月 01 日 08 时 00 分 00 秒 ) 起至现在的总毫秒数,本质是一个long 类型的整数,表示日期对象。 以下时Java中Date、Calendar、LocalDateTime与时间戳转换日期 Date类时间戳转换日期: Calendar类时间戳转换日

    2024年02月11日
    浏览(45)
  • el-date-picker(日期时间选择)那些事

    用于记录工作和学习中遇到的问题 vue3+element-plus 日期时间格式转换 组件默认的格式:2024-02-01T16:00:00.000Z 需要转换成:YYYY-MM-DD HH:mm:ss

    2024年02月22日
    浏览(44)
  • Java中的日期时间类详解(Date、Calendar、DateFormat)

    Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍Java时间的几种常见方法以及部分理论知识 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主收将持续更新学习记录获,友友们有任何问题可以在评论区留言 在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不

    2024年02月05日
    浏览(38)
  • Linux :: 时间日历指令【2】:date 指令 与 时间戳(及日期与时间戳的相互转换)

    前言:本篇是 Linux 基本操作篇章的内容! 笔者使用的环境是基于腾讯云服务器:CentOS 7.6 64bit。 学习集: C++ 入门到入土!!!学习合集 Linux 从命令到网络再到内核!学习合集 目录索引: 1. 时间戳的认识 2. Linux 下获取时间戳方式:date +%s 3. 时间 = 时间戳 4. 时间戳 = 时间:

    2024年02月15日
    浏览(47)
  • element-ui 日期时间选择器el-date-picker 设置禁止选择日期

    使用日期选择器时,有的时候需要禁止选择一些日期,我们可以通过快捷选项 picker-options 对象中的禁用日期属性 disabledDate 来设置。

    2024年02月11日
    浏览(51)
  • antdesginVue a-date-picker(日期时间选择器)禁用当前时间之前的时间,包含时分秒

    话不多说直接上效果 1、禁用当前时间和之前的时间 2、禁用当前时间和之后的时间

    2024年02月11日
    浏览(56)
  • 【Java 基础篇】Java Date 类详解:日期和时间操作的利器

    在 Java 编程中,处理日期和时间是一项常见但复杂的任务。Java 提供了许多用于日期和时间操作的类,其中 java.util.Date 类是最早的日期和时间类之一。然而,它存在一些问题,因此 Java 8 引入了 java.time 包,其中包含了 java.time.LocalDate 、 java.time.LocalTime 和 java.time.LocalDateTime 等

    2024年02月09日
    浏览(43)
  • MySQL DTAETIME、TIMESTAMP、DATE、TIME、YEAR(日期和时间类型)

    MySQL 中有多处表示日期的数据类型: YEAR 、 TIME 、 DATE 、 DTAETIME 、 TIMESTAMP 。当只记录年信息的时候,可以只使用 YEAR 类型。 每一个类型都有合法的取值范围,当指定确定不合法的值时,系统将“零”值插入数据库中。 下表中列出了 MySQL 中的日期与时间类型。 类型名称 日

    2023年04月14日
    浏览(44)
  • 一文带你看透前端世界里的日期时间,对就是Date

       很高兴我们能够通过不同空间,不同时间,通过这篇博客相识,那一定是一种缘分,一种你和狗哥的缘分。今天我希望通过这篇博客对我所熟知的前端世界里的日期时间做一个汇总,不止是代码上的汇总哦! 目录 一、时区 1. 时区产生的原因  2. 本初子午线 3. 日不落帝国

    2024年02月02日
    浏览(42)
  • Linux中关于日期和时区的操作(date命令、ntp程序自动校准时间)

    语法: date [-d] [+格式化字符串] -d 按照给定的字符串显示日期,一般用于 日期计算 格式化字符串:通过特定的字符串标记,来控制显示的日期格式 %Y 年          %y 年份后两位数字 (00..99) %m 月份 (01..12) %d 日 (01..31) %H 小时 (00..23) %M 分钟 (00..59) %S 秒 (00..60) %s 自 1970-01-01

    2024年01月16日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包