bipower两个⽇期挑较早的⽇期_在Power Pivot中⽤
DATEDIFF函数计算两。。。
经常有朋友问在Power Pivot中是否有类似Excel中的DATEDIF函数,⽤来计算2个⽇期之间的间隔。如果你⽤的是Excel
2016 或Office 365,或Power BI Desktop,
那么DAX中提供了新的DATEDIFF函数可以实现。如果你⽤的是Excel
2013,还没有这个DAX函数,就需要⽤其它组合函数来实现。
我们先来看⼀下Excel中DATEDIF的⽤法:
通过函数=DATEDIF(A2,B2,"Y")得到两个⽇期之间的年的间隔。如果把第三个参数"Y"换成"M"或"D",则分别对应⽉和⽇。
将数据导⼊到Power Pivot中,输⼊DATEDIFF(注意,是DATEDIFF,
Excel中是DATEDIF,差了⼀个F),DATEDIFF 需要3个参数,⽇期1,⽇期2,和间隔单位。
=DATEDIFF('测试'[开始⽇期],'测试'[结束⽇期],YEAR)
最终计算结果如下:
函数datedif是什么意思同理,如果我们把DATEDIFF的第三个参数改成Month和
Day,则可以获取2个⽇期之间间隔的⽉份数和天数。还可以得到季度、⼩时、分钟、秒数等。
使⽤DATEDIFF可以⽅便地计算⽇期时间间隔,但有⼀点需要注意,⼤家看下图中红圈的内容。Excel⾥的DATEDIF和DAX⾥的DATEDIFF 计算结果不⼀致:
当开始⽇期是6/30/2016,结束⽇期是6/29/2017时,Excel中DATEDIF(A2,B2,"Y")
公式的计算结果严格按照⽇期计算,没有到⼀年就算0,⽽DAX中DATEDIFF('测试'[开始⽇期],'测试'[结束⽇期],YEAR)
的计算则是按照两个⽇期所处的年份来计算,2017-2016=1年 。
所以如果你在Power
Pivot中不想要这样的计算⽅法,⽐如计算年龄的时候,想实现Excel中DATEDIF的计算⽅法,则可以
使⽤下⾯的公式:
=YEARFRAC('测试'[开始⽇期],'测试'[结束⽇期])
然后通过ROUNDDOWN向下取整实现Excel中DATEDIF整年的计算:
=ROUNDDOWN(YEARFRAC('测试'[开始⽇期],'测试'[结束⽇期]),0)
同理,如果我们⽤向上取整函数ROUNDUP则可以实现和DAX中DATEDIFF⼀样的计算结果。⽽这个函数组合也可以在Excel2013中使⽤,也就是没有DATEDIFF的情况下实现间隔年的计算。
【间隔⽉份的计算】
间隔⽉份也是⼯作中⽐较常见的计算,下⾯我们同样拿Excel中的公式:
=DATEDIF(A2,B2,"M")
和Power Pivot中的公式:
=DATEDIFF('测试'[开始⽇期],'测试'[结束⽇期],MONTH)
来进⾏对⽐
我们看到两个计算结果依然存在差异,Excel中的DATEDIF当⽇期没有满⼀个⽉的时候不计算,⽽Power
Pivot中计算(参考上图第⼀⾏数据)。
我们尝试⽤其它函数组合实现该计算(Excel2013的Power Pivot也可⽤):
=(YEAR('测试'[结束⽇期])-YEAR('测试'[开始⽇期]))*12+MONTH('测试'[结束⽇期])-MONTH('测试'[开始⽇期])
该计算的意思是先⽤两个⽇期间隔的年份数乘以12个⽉,然后加上[结束⽇期]中的⽉份数减去[开始⽇期]中的⽉份数,结果和DATEDIFF-DAX⼀样,忽略⽇期,直接⽤⽉份相减。
我们还是关注第⼀⾏数据,如果开始⽇期是6/30/2016,结束⽇期是6/29/2017,还差1天才满12个⽉,如果我们希望只计算间隔的整⽉,也就是计算结果为11,可以对公式进⼀步调整:
=IF(DAY('测试'[结束⽇期])>=DAY('测试'[开始⽇期]),0,-1)+(YEAR('测试'[结束⽇期])-YEAR('测试'[开始⽇期]))*12+MONTH('测试'[结束⽇期])-MONTH('测试'[开始⽇期])
通过判断2个⽇期之间⽇的区别,来决定是否计算:如果结束⽇期的⽇⼤于等于开始⽇期的⽇,则直接计算即可,否则在计算结果上-1,实现间隔整⽉的计算。
这个计算⽅法,不管是在Excel2013还是2016的Power Pivot中都可以使⽤。
【间隔⽇,⼩时、分钟、秒的计算】
剩下的间隔⽇、⼩时、分、秒就⽐较简单了。可以直接⽤DATEDIFF来实现
间隔⽇=DATEDIFF('测试'[开始⽇期],'测试'[结束⽇期],DAY)
间隔⼩时=DATEDIFF('测试'[开始⽇期],'测试'[结束⽇期],HOUR)
间隔分钟=DATEDIFF('测试'[开始⽇期],'测试'[结束⽇期],MINUTE)
间隔秒=DATEDIFF('测试'[开始⽇期],'测试'[结束⽇期],SECOND)
在Excel2013 Power Pivot中也可以直接⽤⽇期相减:
间隔⽇='测试'[结束⽇期]-'测试'[开始⽇期]
间隔⼩时=24*('测试'[结束⽇期]-'测试'[开始⽇期])
间隔分钟=24*60*('测试'[结束⽇期]-'测试'[开始⽇期])
间隔秒=24*60*60*('测试'[结束⽇期]-'测试'[开始⽇期])
这就是我们今天的分享内容,更多Power Pivot DAX函数的⽤法请参考我们的视频课程-Excel Power Pivot数据建模分析(基础篇)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论