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

如何使用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精确计算年龄

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址