【Tableau Prep & Alteryx】生年月日から年齢計算する方法

【Tableau Prep & Alteryx】生年月日から年齢計算する方法 | Tableau-id Press -タブロイド-
Tableau Prep

今回はAlteryxとTableau Prepで生年月日から年齢計算してみたいと思います。
どちらも似たような日付関数を持っているので全く同じやり方でできるかと思いきや、そうではなかったのでこの場でご紹介したいと思います!

サンプルデータ

氏名と生年月日を持ったデータです。

本日は「2022年1月24日」という前提で話を進めます

Alteryx

Alteryxには日付の差分を求めるDateTimeDiffという関数があるのでそれを使います。

DateTimeDiff(DateTimeToday(),[生年月日],’year’)

とし本日と生年月日の差分を年単位(’year’)で求めれば年齢が出ます。

簡単に出せましたね!

Tableau Prep

TableauにもDATEDIFFという日付の差分を求める関数があります。
なのでAlteryxと同じようにやればできるでしょ?と思っていたのですが・・・
DATEDIFF(‘year’, [生年月日], TODAY())

生年月日が2020年1月25日の人の年齢が22歳になってしまいました・・・。まだ誕生日が来ていないので21歳が正しいです。
Alteryxと似たような関数ですが、date_partで指定した単位部分の差分が取られており、仕様が異なるようです。
(本年と誕生年の差分で見ると、生年月日が2020年1月25日の人も2022-2000で22になってしまいます)

そこで、1ステップ加えて正しい年齢にします。

①まず「本年と誕生年の差分」を求める
DATEDIFF(‘year’, [生年月日], TODAY())

②今年誕生日を迎えたかどうかにより年齢を求める
・今年誕生日を迎えていない→「本年と誕生年の差分」-1を年齢とする
・今年誕生日を迎えた→「本年と誕生年の差分」を年齢とする
IIF(DATEADD(‘year’, [本年と誕生年の差分], [生年月日]) > TODAY(), [本年と誕生年の差分]-1, [本年と誕生年の差分])

「今年まだ誕生日を迎えていない」かどうかは、生年月日に「本年と誕生年の差分」を足した日付が本日より後であるか?
で判定できます。

2020年1月25日 + 2年(本年と誕生年の差分)= 2022年1月25日
2022年1月25日は本日2022年1月24日より後 → 誕生日をまだ迎えていない

正しい年齢が出せました!


いかがでしたでしょうか?同じような関数でも仕様が違うので要注意ですね!

本当はPower Queryの年齢計算もご紹介したかったのですが、Power QueryにはDateDiff関数はないようで、自分で頑張って書くしかないようです・・・(DAXにはあります)。

こちらも機会があればまた紹介したいなと思います!