誕生日情報のNULLチェック、並びにその値の結果に基づくマッパー処理方法

「ASTERIA Warp」「ASTERIA 3」「ASTERIA On Demand」の
インストール・動作環境・パイプライン機能・フロー機能など全般について

誕生日情報のNULLチェック、並びにその値の結果に基づくマッパー処理方法

投稿記事by okosiyas » 2018年12月30日(日) 16:04

年末年始に大変申し訳ないのですが、現在フローの作成にて困っておりましてこちらに質問させてください。
CSVに誕生日の表記が下記の通りに存在し、そのNULLチェック、並びにアウトプットをマッパーでしようと思っています。
しかし、AsteriaWarpでのこの処理の再現方法が分からずおります。この場合どのように実現すれば良いでしょうか。

===============元の取込データここから===============
USERID,birth_year,birth_month,birth_day
0001,2000,01,21
0002,1980,,20
===============元の取込データここまで===============

===============表現条件ここから===============
この場合2つのユーザーが存在していて、それぞれ下記のような動作をAsteriaWarpに行わせたいと考えております。
(1)0001のユーザーは「2000年1月21日」になる為、誕生日のデータとして”問題ないデータ”であると判断し、そのままアウトプットしたい。
(2)0002のユーザーは「1980年月20日」になる為、誕生日のデータとして”問題がある(月が不明)データ"であると判断し、「birth_year」「birth_month」「birth_day」を共に全てブランクにして(整合性が取れないデータの為削除した上で)アウトプットしたい。
===============表現条件ここまで===============

===============処理後のデータここから===============
USERID,birth_year,birth_month,birth_day
0001,2000,01,21
0002,,,
===============処理後のデータここまで===============

何卒、よろしくおねがいします。
okosiyas
 
記事: 3
登録日時: 2018年11月16日(金) 18:02

Re: 誕生日情報のNULLチェック、並びにその値の結果に基づくマッパー処理方法

投稿記事by itete » 2019年1月08日(火) 12:36

私なら下記のようにします。
----------
DateTimeEx 関数で、年(field2)・月(field3)・日(field4) からDateTime型データを作る。
DateSplit 関数で、そのDateTime型データを再度、年・月・日 に分ける。
Equa 関数を3つ使用し、それぞれ下記の組み合わせで比較する。
  ・年(birth_year)と DateSplit から出力された年
  ・月(birth_month)と DateSplit から出力された月
  ・日(birth_day)と DateSplit から出力された日
AND 関数に、3つの Equa 関数の出力をつなぐ。
マッパー変数「check」を作成し、そこに AND 関数の出力を格納する(日付が正しい場合はtrueになる)。

レイヤー「レイヤー2」を追加し、条件式を $local.check=true とする。
ここでは、USERID,birth_year,birth_month,birth_day すべてを出力側へマッピングする。

レイヤー「レイヤー3」を追加し、条件式を $local.check=false とする。
ここでは、USERID のみを出力側へマッピングする。
----------

つまり、文字列からDateTimeを作り、また文字列に戻して、同じ文字になるかどうかで判断しています。
これによって、4/31 など実際のカレンダーに存在しない場合も空欄になります。
マッパー変数を使用することで、一つ目のレイヤーで判断した真偽値を元に、
以降の条件付きレイヤーで判断し、マッピング内容を変える材料として利用できます。
itete
 
記事: 157
登録日時: 2007年1月09日(火) 12:15


Return to 聞きたい、知りたい、教えます

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[16人]