【BigQuery】誰でもできる!満年齢を算出する方法

【BigQuery】誰でもできる!満年齢を算出する方法

更新日:2024/06/06

この記事をシェア

  • X
  • Facebook
  • LINE
  • COPY LINK
クリップボードにコピーしました

はじめに

データ分析では満年齢を考慮しなければいけない場面があります。例えば、教育や健康に関するデータを分析する場合、わずかな年齢の違いが分析に大きな影響を及ぼすため、満年齢を用いることで、より詳細な傾向やパターンを識別できるようになります。

年齢の考え方

年齢とは今年と生まれ年の差ではない

年齢を求める際、真っ先に陥りがちな考え方として、下記の式のような『今年から生まれ年を引けばよい』かと思います。

DATE_DIFF(CURRENT_DATE(),birthday,Year)

ただ、このやり方ですと日付によって正しい値が取れません。

例)例 2000/04/20生まれのレコード(2024/04/26時点)

DATE_DIFF(CURRENT_DATE(),'2000-04-20',Year)

→24 正しい

例)例 2000/04/30生まれのレコード(2024/04/26時点)

DATE_DIFF(CURRENT_DATE(),'2000-04-30',Year)

→24 間違い

原因

DATE_DIFF(CURRENT_DATE(),birthday,Year)

DATE_DIFF関数では、単純な年の引き算の結果を出してるため、満年齢を算出することができない。

満年齢を算出する関数

では満年齢を算出するにはどうしたらいいでしょうか。それには下記を使用します。

CAST(TRUNC((CAST(FORMAT_DATE('%Y%m%d', CURRENT_DATE()) as INT64) - CAST(FORMAT_DATE('%Y%m%d', birthday) AS INT64)) / 10000) AS INT64)

中身を分解して解説します。

・現在日時(西暦)

CAST(FORMAT_DATE('%Y%m%d', CURRENT_DATE()) as INT64)

→20240626

・誕生日(西暦)例 2000/04/30生まれのレコード

CAST(FORMAT_DATE('%Y%m%d',birthday) AS INT64)

→20000430

・(現在日時(西暦) – 誕生日(西暦)) / 10000

(CAST(FORMAT_DATE('%Y%m%d', CURRENT_DATE()) as INT64) - CAST(FORMAT_DATE('%Y%m%d','2000-04-30') AS INT64)) / 10000

→24.0196

・小数点以下切捨て

TRUNC((CAST(FORMAT_DATE('%Y%m%d', CURRENT_DATE()) as INT64) - CAST(FORMAT_DATE('%Y%m%d', '2000-04-30') AS INT64)) / 10000

→24

最後にCAST AS INT64で囲むことで整数にします。『24.0→24』

注意点

BigQueryでINTへCASTを行う場合、[最も近い整数値を返します。]ので要注意。
詳しくはコチラ

SELECT CAST(22.9989 as INT64)

→23

まとめ

(現在日時(西暦) – 誕生日(西暦)) / 10000から小数点以下を切り捨てることで満年齢を導けるので、もし他の言語で年齢の計算に行き詰まったら参考にしてください!

データ活用でお困りの方へ

私たちDX-Accelerator事業では、データ活用についての様々なスキルを持った人材が常駐でデータ活用支援を行うサービスを提供しています。
当事業はローンチから約3年(24年9月時点)ですが、これまでに様々な業界・業種のお客さまのお手伝いをさせていただいております。

少しでも興味を持ってくださったり、すでにご相談をしたいことがある方はお気軽にご相談ください。現在あなたの組織のフェーズがどこにあるかは関係ありません。まずはお話をしましょう。

もう少しサービスについて知りたい方はサービス紹介資料もご用意しています。

この記事をシェア

  • X
  • Facebook
  • LINE
  • COPY LINK
クリップボードにコピーしました

関連記事

DX-Acceleratorについて
より詳しく知りたい方!

DX-Accelerator データ人材常駐支援サービス

即戦力の
アナリティクスエンジニアが
常駐支援!
まずはお気軽にご相談ください。

DX-Acceleratorについて
より詳しく知りたい方!