Data Effectorで日時データを扱った事例について、説明します。
例として以下の文書があるものとします。
入力データ
商品名 | 入荷日 | 産地 | 発送日 | 発送数 |
---|---|---|---|---|
オレンジ | 2008-01-01 | アメリカ | TUE DEC 25 2007 | 10,000 |
バナナ | 2008-08-20 | フィリピン | MON AUG 18 2008 | 50,000 |
グレープ | 2008-11-05 | フランス | WED OCT 29 2008 | 30,000 |
メロン | 2008-01-15 | イタリア | FRI JAN 11 2008 | 10,000 |
パイナップル | 2008-07-20 | シンガポール | SAT JUL 19 2008 | 100,000 |
ライチ | 2008-10-01 | 香港 | TUE SEP 30 2008 | 20,000 |
ピーチ | 2007-11-30 | カナダ | SUN NOV 25 2007 | 70,000 |
チェリー | 2008-03-10 | アメリカ | FRI MAR 7 2008 | 10,000 |
ジャーナルデータ
商品コード | 入荷日 | 産地 | 発送日 | 発送数 |
---|---|---|---|---|
0001 | 2008-01-01 | アメリカ | TUE DEC 25 2007 | 10,000 |
0002 | 2008-08-20 | フィリピン | MON AUG 18 2008 | 50,000 |
0003 | 2008-11-05 | フランス | WED OCT 29 2008 | 30,000 |
0004 | 2008-01-15 | イタリア | FRI JAN 11 2008 | 10,000 |
0005 | 2008-07-20 | シンガポール | SAT JUL 19 2008 | 100,000 |
0006 | 2008-10-01 | 香港 | TUE SEP 30 2008 | 20,000 |
0007 | 2007-11-30 | カナダ | SUN NOV 25 2007 | 70,000 |
0008 | 2008-03-10 | アメリカ | FRI MAR 7 2008 | 10,000 |
商品マスタデータ
コード | 名前 |
---|---|
0001 | オレンジ |
0002 | バナナ |
0003 | グレープ |
0004 | メロン |
0005 | パイナップル |
0006 | ライチ |
0007 | ピーチ |
0008 | チェリー |
以下に、各機能での日時関数の使用例を示します。
抽出処理の例
入力データ中で、発送日が2008年以降の商品のうち、入荷日が1月の商品データを検索する業務要件があるとします。
発送日を2008年1月1日と比較するため、検索式に標準形式に変換するconvert_date関数を指定します。
さらに、入荷日の月を1と比較するため、検索式に標準日付形式から月の値を取り出すextract_date関数を指定します。
検索条件
検索式 | convert_date($発送日, "DY MON DD YYYY") >= date("2008-01-01") AND extract_date($入荷日, "MONTH") = 1 |
結果
商品名 | 入荷日 | 産地 | 発送日 | 発送数 |
---|---|---|---|---|
メロン | 2008-01-15 | イタリア | FRI JAN 11 2008 | 10,000 |
連結処理の例
ジャーナルデータと商品マスタを連結して、「名前、コード、入荷月および発送日」を一元管理する業務要件があるとします。
ジャーナルデータの商品名と、商品マスタの名前を連結します。
つぎに、入荷日から“月”の値を取り出すため、リターン式にextract_date関数を指定します。
さらに、入荷日を標準形式に変えるため、リターン式にconvert_date関数を指定します。
連結条件
入力項目定義 | { document(Journal){$商品コード 商品コード, $入荷日 入荷日, $産地 産地, $発送日 発送日, $発送数 発送数 }, document(Master){ $コード コード, $名前 名前 } } |
連結条件式 | { join (Journal,Master,$商品コード == $コード,"INNER" ) } |
リターン式 | { $名前 名前, $コード コード,extract_date($入荷日,"MONTH") 入荷月, convert_date($発送日,"DY MON DD YYYY") 発送日 } |
結果
名前 | コード | 入荷月 | 発送日 |
---|---|---|---|
オレンジ | 0001 | 1 | 2007-12-25 |
バナナ | 0002 | 8 | 2008-08-18 |
グレープ | 0003 | 11 | 2008-10-29 |
メロン | 0004 | 1 | 2008-01-11 |
パイナップル | 0005 | 7 | 2008-07-19 |
ライチ | 0006 | 10 | 2008-09-30 |
ピーチ | 0007 | 11 | 2007-11-25 |
チェリー | 0008 | 3 | 2008-03-07 |
集計処理の例
入力データの入荷日を四半期ごとにまとめて、その期間内の発送数の合計と平均を計算する業務要件があるとします。入荷日に対して四半期でグループ化するため、グループ式に標準日付形式から四半期で切り捨てるtrunc_date関数を指定します。
集計条件
グループ式 集計式 | trunc_date($入荷日, "QUARTER") 四半期 sum($発送数) 合計, avg($発送数) 平均 |
結果
四半期 | 合計 | 平均 |
---|---|---|
2008-01-01 | 20,000 | 10,000 |
2008-04-01 | 10,000 | 10,000 |
2008-07-01 | 150,000 | 75,000 |
2008-10-01 | 120,000 | 40,000 |
ソート処理の例
入力データの入荷日を早い順にソートし、商品名、入荷日、および発送日を出力したい業務要件があるとします。ただし、発送日は、標準日付形式でします。
まず、入荷日をソート式に指定します。
次に、発送日を標準形式に変えて出力するために、リターン式にconvert_date関数を指定します。
ソート条件
ソート式 リターン式 | $入荷日 $商品名, $入荷日, convert_date($発送日, "DY MON DD YYYY") 発送日 |
結果
商品名 | 入荷日 | 発送日 |
---|---|---|
ピーチ | 2007-11-30 | 2007-11-25 |
オレンジ | 2008-01-01 | 2007-12-25 |
メロン | 2008-01-15 | 2008-01-11 |
チェリー | 2008-03-10 | 2008-03-07 |
パイナップル | 2008-07-20 | 2008-07-19 |
バナナ | 2008-08-20 | 2008-08-18 |
ライチ | 2008-10-01 | 2008-09-30 |
グレープ | 2008-11-05 | 2008-10-29 |