生年月日のデータを元に年齢を自動算出する方法について

皆様、はじめまして。初めて道場に投稿します。

 

今回ですが、DataSet上に存在する社員テーブルの生年月日を元に現在の年齢を自動算出したいです。

 

DataFlowを新規作成しまして、下記のような変換ロジックで無理くり年齢算出を試みようと思ったのですが、

変換の手動実行では上手く動くものの、何故かDataFlowの自動実行では該当箇所でエラーになります。

 

変換例: (YEAR(CURDATE()) - YEAR(生年月日)) - (RIGHT(CURDATE(), 5) < RIGHT(生年月日, 5))

 

代替案として、BeastModeでも年齢算出も考えましたが下記の計算サンプル内に年齢の算出方法が存在しませんでした。

 

http://wiki.domo.com/confluence/pages/viewpage.action?pageId=76316983

 

どなたかご存じの方がいらっしゃいましたらご教示いただけますと幸いです。

ご協力のほど、よろしくお願いいたします。

Comments

  • 私の手元で試してみたら特にエラーが起こらず実行できました。実際に書いたSQLとエラーメッセージを共有していただくことは可能でしょうか?また、関係ないかもしれませんが「生年月日」というマルチバイトのカラム名を扱う場合は`生年月日`のようにバッククォートでそのカラム名を囲う必要があります。

  • kennyさん、早速のコメントありがとうございます。
     
    やはり、エラーが発生せず普通に実行出来ましたか。
     
    生年月日のカラムにつきましては、2000-01-01のような日付形式でデータ値が入っております。
     
    これは今更気が付いた事ですが、一部レコードで生年月日が未入力のレコードが存在しており、
    一括実行でエラーが発生する原因もこちらの未入力が起因ではないかと感じてきました。
     
    エラーメッセージは、DATAFLOW-5200:SQL action execution error [message=com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '' MaestroSQLException{device='ec2-transformdb-03', sql='CREATE TABLE transform_data_2 AS select(以降、略)というようなエラー内容でした。

     

    変換の手動実行でエラーにならない理由は、DataFlow内の対象レコードが1万件マックスになっているため、
    上記の生年月日が未入力データが含まれていなかっただけかもしれません。
     
    まずは、私の方で未入力の値を変換して再度試してみます!