指定日付時点の年齢を計算したい

Avatar
dstn

指定日付時点の年齢を計算したい

キーワード:Mapper,年齢の計算,指定日付

概要

指定日付時点の年齢を計算したい場合、年齢の計算ロジックを応用します。

サンプルプロジェクトの説明

入力ファイルの「生年月日」と「指定日付」をもとに「指定日付時点の年齢」を算出し、ファイルに出力します。

処理の流れ

サンプルプロジェクトの処理の流れは以下の通りです。
  1. CSVファイル読み取り処理」で入力ファイルを読み取ります。
  2. マッピング処理」で現在日付と指定日付の差異日数を算出します。
  3. 上記で算出した差異日数を生年月日から増減した日付を「年齢の計算ロジック」に渡します。
  4. CSVファイル書き込み処理」で出力ファイルに書き込みます。
実行結果のイメージについては、サンプルプロジェクトのサンプルデータ「年齢一覧.csv」を参照してください。

ポイントとなる機能

名前 説明 ツールパレット上の場所
年齢の計算ロジック 入力日時から年齢を返します。 「数値」-「日本」-「年齢の計算」

処理のポイント

年齢の計算ロジックは、生年月日を渡すと現在日付の年齢を返す仕様となっています。
現在日付を変更することはできないため、現在日付と指定日付の差異日数を生年月日から増減することで、年齢の計算ロジックを用いて指定日付時点の年齢を算出することができます。
  • 現在日付と指定日付の差異日数を算出します。

    現在日付 2014/07/10
    指定日付 2020/07/24
    差異日数 -2206

    指定日付が現在日付よりも未来の場合、負の値となります。

  • 生年月日から上記で算出した差異日数を増減します。

    生年月日 1980/03/14
    差異日数 -2206
    増減した結果 1974/02/28

  • 増減した結果を仮の生年月日とし、年齢の計算ロジックにて年齢を算出します。

    増減した結果 1974/02/28
    現在日付 2014/07/10
    年齢 40

    結果、1980年3月14日生まれの人は、2020年7月24日時点で40歳となります。

サンプルプロジェクトの使用方法

上記処理を実装したサンプルプロジェクトを用意しています。サンプルプロジェクトを使用する場合の手順は、以下の通りです。

サンプルプロジェクトのダウンロード 逆引きリファレンス シナリオ054のサンプルプロジェクト
  1. サンプルプロジェクトの展開
    サンプルプロジェクトファイル「rl_reference_054.zip」を展開します。

  2. プロジェクトのアップロード
    「rl_reference_054.zip」を展開後に作成される「rl_reference_054プロジェクト」ディレクトリがプロジェクトファイルとなります。
    DataSpider Studioを起動し、マイプロジェクトの画面から[ファイル]-[ローカルからアップロード]で展開したディレクトリ「rl_reference_054プロジェクト」をアップロードしてください。

  3. サンプルデータの準備
    「rl_reference_054.zip」を展開後に作成される「samples」ディレクトリがサンプルデータとなります。
    $DATASPIDER_HOME/server/samplesディレクトリに上書きしてください。

スクリプトの作成手順

プロセスフローおよびデータフローは、「 サンプルプロジェクトの説明」のスクリプト画像を参照して適宜設定してください。
  1. デザイナのツールパレット「ファイル」-「CSV」-「CSVファイル読み取り」から、CSVファイル読み取りをスクリプトキャンバスに配置します。
    • CSVファイル読み取り処理の設定は、以下のように行います。

      [必須設定]タブ

      [読み取り設定]タブ


  2. デザイナのツールパレット「変換」-「基本」-「マッピング」から、マッピング処理をスクリプトキャンバスに配置します。

  3. デザイナのツールパレット「ファイル」-「CSV」-「CSVファイル書き込み」から、CSVファイル書き込みをスクリプトキャンバスに配置します。
    • CSVファイル書き込み処理の設定は、以下のように行います。

      [必須設定]タブ

      [書き込み設定]タブ


  4. マッピング処理のMapperエディタを開き、「現在の年齢」と「指定日付時点の年齢」の算出を行う処理を作成します。
    • マッピングキャンバスは、以下のように設定します。

      マッピングキャンバス



      番号 ロジック名 説明 ツールパレット上の場所
      (1) 単純な繰り返し 指定したノードを繰り返します。 「繰り返し」-「基本」-「単純な繰り返し」
      (2) 現在日時 現在日時を出力します。 「日付」-「基本」-「現在日時」
      (3) 日時フォーマッティング 入力日時を指定したフォーマットで出力します。 「文字列」-「日付」-「日時フォーマッティング」
      (4) 日時のパース 入力文字列を指定フォーマットで日時にして出力します。 「日付」-「基本」-「日時のパース」
      (5) 年齢の計算 入力日時から年齢を返します。 「数値」-「日本」-「年齢の計算」
      (6) 日時のパース 入力文字列を指定フォーマットで日時にして出力します。 「日付」-「基本」-「日時のパース」
      (7) 現在日時 現在日時を出力します。 「日付」-「基本」-「現在日時」
      (8) 日時フォーマッティング 入力日時を指定したフォーマットで出力します。 「文字列」-「日付」-「日時フォーマッティング」
      (9) 日時のパース 入力文字列を指定フォーマットで日時にして出力します。 「日付」-「基本」-「日時のパース」
      (10) 日による期間 二つの入力日時の期間を日単位で返します。 「数値」-「期間」-「日による期間」
      (11) 日を増減 入力日時の日を増減して返します。 「日付」-「演算」-「日を増減」
      (12) 年齢の計算 入力日時から年齢を返します。 「数値」-「日本」-「年齢の計算」

      処理のポイント
      • 日による期間ロジックは、2つの日時の差を取って日単位より小さな単位が余った場合は切り捨てられます。
        場所
        1番目の入力ハンドラ 2010-08-11T04:00:00.000+0900
        2番目の入力ハンドラ 2010-08-13T03:59:59.000+0900
        ロジックの出力 1

        よって、日単位より小さな単位をクリアしてから日による期間ロジックを行います。
        場所
        1番目の入力ハンドラ 2010-08-11T00:00:00.000+0900
        2番目の入力ハンドラ 2010-08-13T00:00:00.000+0900
        ロジックの出力 2
        日による期間ロジックの詳細については、DataSpider Servistaヘルプの「日による期間」を参照してください。

  5. スクリプトを実行し、正常終了すれば成功です。

コメント

ログインしてコメントを残してください。

Powered by Zendesk