从数据到信息
从信息到洞察

如何使用DAX精确计算年龄

计算日期差值是数据分析的一个高频应用,本文以年龄计算为例,演示如何在DAX中计算日期差值。

IN EXCEL

Excel中通常使用DATEDIF函数计算年龄,它的写法是

DATEDIF([起始日期],[结束日期],”Y”)

以今天2017/1/16作为结束日期,开始日期大于2016/1/16的计算结果都显示为0,表示不满一年,这符合我们惯常的逻辑。

IN DAX

DAX里有一个DATEDIFF函数,可以实现类似功能

DATEDIFF([起始日期],[结束日期],year)

但它在计算开始日期为2016/1/16至2016/12/31之间的日期时,结果都为1,也就是说,这个函数只考虑年份之间的差值,忽略月份和日期。通常这并不是我们想要的结果,不确定这是否是一个bug,但是我们还有其他解决方案。

方案1:构造条件判断,在月份和日期的组合符合要求时使用DATEDIFF,否则-1.

=IF(
 (MONTH(TODAY())=MONTH('表2'[日期])
 &&
 DAY(TODAY())>DAY('表2'[日期]))
 ||
 MONTH(TODAY())>MONTH('表2'[日期]),
 DATEDIFF('表2'[日期],TODAY(),YEAR),
 DATEDIFF('表2'[日期],TODAY(),YEAR)-1
 )

 

方案2:YEARFRAC函数 返回精确值

其实,这个函数才是DAX中最适合用来计算年龄的,它返回两个日期之间的完整天数占全年天数的比例,可以返回精确到小数点的年份间隔。

YEARFRAC([起始日期],[结束日期],2)
如何使用DAX精确计算年龄

原创内容 转载请联系作者授权:PowerBI极客 » 如何使用DAX精确计算年龄

1
说点什么

1000
  
smilegrinwinkmrgreenneutraltwistedarrowshockunamusedcooleviloopsrazzrollcryeeklolmadsadexclamationquestionideahmmbegwhewchucklesillyenvyshutmouth
1 评论数
0 被回复的评论
1 订阅评论的人数
 
查看最近回复
查看最热评论
  订阅本文评论  
最新 最旧 得票最多
提醒
游客
okgo

66666