网站的模板怎么做,品牌营销型网站建设策划,it互联网培训机构排名,赣州吾往矣网络科技有限公司在数据分析过程中#xff0c;经常需要从一个数据推到另外一个数据#xff0c;日期数据也是如此#xff0c;需要从一个日期推到另外一个相关的日期#xff0c;或者从一群日期推到另外一个相关的日期/一群相关的日期。这一期说的就是日期之间彼此推衍的函数#xff0c;会比之…在数据分析过程中经常需要从一个数据推到另外一个数据日期数据也是如此需要从一个日期推到另外一个相关的日期或者从一群日期推到另外一个相关的日期/一群相关的日期。这一期说的就是日期之间彼此推衍的函数会比之前复杂不少。
第一部分 先用 1. DAX 时间函数--生成日期表_monthno是什么函数-CSDN博客 中提到的 CALENDAR 函数生成日期表。 1) DATEADD 函数
返回一个单列的日期表将当前筛选上下文中的日期按指定的间隔向未来或者过去平移。
该函数一看是一个非常有用的函数事实上它非常鸡肋非常鸡肋。 语法DATEADD ( 日期列, 偏移量, 偏移单位 )
日期列 DATE 格式的数据列请注意网上有一句话 :如果日期列中的数据不是连续间隔则函数回返回错误What这么设计是为啥我完全不明白 现实世界的数据没有这么完美的 以上是微软官方网站的解释不死心的我决定直接试试我生成了一个不连续的数据表 sheet1待会我们试试。 偏移量 偏移的数量是一个数字标量。 指定了正数则日期列中的日期向未来推移如果指定的数字为负数则日期列中的日期向过去推移 。
偏移单位可以是年 YEAR、月 MONTH、季度 QUARTER、日 DAY 但是请一定注意下面的用法是错误的因为 DATEADD 返回的是表 DATEADD 返回的是表DATEADD 返回的是表不能产生新列 这么设计是为啥我也完全不明白 生成列比生成表好用多了。 好了现在我们来试试那个微软官方注释是否正确吧。结果真的让我莫名其妙 看官们看出来了没有面对不连续的数据DATEADD没有报错啊那个微软官方解释造谣可是我仔细看了下更悲伤了因为数据丢了原来sheet1中提供了 7 条日期数据但是新生成的表格中只有 5 条数据why难道我一开始的理解有重大误区。你还别说是的
我重新试了很多种数据组合搭配 DATEADD大家瞪大眼睛看吧。第一种sheet1数据如下
第二种sheet1数据如下
总结
1日期列数据不连续不会报错但是会对日期列重新排序
2DATEADD 不是如我希望的那样把日期列数据依次推迟或推前它是在现有数据中进行筛选现有数据中如果有符合日期要求的留下来不符合日期要求的剔除。怎么算符合日期要求呢有一个逻辑首先使用日期列中最早的那个日期使用上偏移量, 偏移单位 得到一个新的日期新日期。
比如sheet1第二部分数据中日期列 最早的日期是20240120当偏移量, 偏移单位是 2DAY 时候得到 新日期 即 20240122那么原来的日期列中大于等于20240122的日期则形成了新表。
当偏移量, 偏移单位是 1QUARTER 时候得到 新日期 即 202404请注意是202404即只要大于等于20240401即可而不是一定要大于202420那么原来的日期列中大于等于20240401的日期则形成了新表。
当偏移量, 偏移单位是 1MONTH 时候得到 新日期 即 202402那么原来的日期列中大于等于202404的日期则形成了新表。
说实话我觉得这个用法好奇特后来我想明白了DATEADD 这个名字起错了如果使用 DATEFILTER 或者 DATECHOOSE感觉就会好多了。
2) DATEDIFF 函数返回两个日期之间指定的间隔数。
语法DATEDIFF ( 日期 1, 日期 2, 间隔单位 )
日期 1, 日期 2, 都是日期格式的数据间隔单位 则是有YEAR、MONTH、DAY、QUARTER、WEEK、HOUR、MINUTE、SECOND 8 个枚举变量。 我准备了一组数据分别使用了这个8个枚举变量结果如下
总结一下详细用法
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 ( 日期列, 起始日期, 截止日期 )
给大家看一个用法
4) DATESINPERIOD 函数
返回一个表此表包含一列日期日期以指定的开始日期开始并按照指定的日期间隔一直持续到指定的数字。
DATESINPERIOD ( 日期列, 起始日期, 偏移量, 间隔单位
这个函数又一次伤到了我它和DATEADD函数非常类似也是筛选日期区别在于它增加了一个起始日期使逻辑更加复杂或者说高效。但是在计算新日期时候两者有很大区别DATEADD 是按照自然月、年等来计算而 DATESINPERIOD 是按照周期月、年来计算。
总结一下用法
a如果偏移量是正值
首先要在日期列 找出大于等于 起始日期 的所有值 如没有则返回空表结束。
接着在找到的值中寻找出最早的日期值最早日期值然后根据偏移量, 间隔单位得到一个新的日期值最晚日期值
比如偏移量, 间隔单位是2DAY从下面的数据中筛选出最早日期值20240225和最晚日期值 20240226
比如偏移量, 间隔单位是1MONTH从下面的数据中筛选出最早日期值20240225和最晚日期值 20240324
最后使用最早日期值和 最晚日期值来筛选区间内的日期值。 b如果偏移量是负值
首先要在日期列 找出小于等于 起始日期 的所有值 如没有则返回空表结束。
接着在找到的值中寻找出最晚的日期值最晚日期值然后根据偏移量, 间隔单位得到一个新的日期值最早日期值
比如偏移量, 间隔单位是 -4DAY从下面的数据中筛选出最早日期值20240328和最晚日期值 20240325
比如偏移量, 间隔单位是-1MONTH从下面的数据中筛选出最早日期值20240228和最晚日期值 20240127
最后使用最早日期值和 最晚日期值来筛选区间内的日期值。
5) DATESMTD 函数
返回一个表此表包含当前上下文中该月份至今的一列日期。 语法DATESMTD ( 日期列 )
还用下面语句生成的日期表
日期表 CALENDAR( DATE( 2024 , 2, 25) ,DATE( 2024 , 5 , 10 ) ) 此时可以看出它是找出最晚的一个月的所有日期表。
6) DATESQTD 函数
函数返回一个表此表包含当前上下文中该季度至今的一列日期。
语法DATESQTD ( 日期列 )这个从月换成季度不再赘述
7) DATESYTD 函数
函数返回一个表其中包含当前筛选上下文中当前年份至今的所有日期。
语法DATESYTD ( 日期列 , [年截止日期] )
这个和DATESMTD、DATESQTD的区别在于新增了一个可选的参数[年截止日期] 有了这个[年截止日期] 则不是默认筛选出来整年的日期而是到了[年截止日期] 就可以了。
8) LASTDATE 函数
返回指定日期列在当前上下文中的最后一个非空日期。
语法LASTDATE ( 日期列 )
还用该语句生成日期表 CALENDAR( DATE( 2024 , 2, 25) ,DATE( 2024 , 5 , 10 ) )
9) FIRSTDATE 函数
返回指定日期列在当前上下文中的最前一个非空日期。
语法FIRSTDATE ( 日期列 )
还用该语句生成日期表 CALENDAR( DATE( 2024 , 2, 25) ,DATE( 2024 , 5 , 10 ) )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·~~~~~~这篇博客写了 3 天麻烦点个赞或者收藏再走吧谢谢同学~~~~~~~~~~~~~~~~