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

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

5
说点什么

1000
 
鼓掌微笑开心憧憬爱你色并不觉得吃瓜doge二哈喵喵思考笑哭捂脸悲伤大哭抓狂汗偷笑打脸捂眼黑线问号晕拜拜闭嘴衰咒骂ok作揖
2 评论数
3 被回复的评论
2 订阅评论的人数
 
查看最近回复
查看最热评论
  订阅本文评论  
最新 最旧 得票最多
提醒
游客
Baiyssy

DATEDIFF似乎不考虑小数,比如计算年的时候就不考虑月份,直接把两个年数相减;计算月就不考虑日期,直接把年份相减*12+月份相减。

游客
okgo

66666