ページのトップに戻る
Interstage Data Effector ユーザーズガイド

4.1.5 日時関数の使用例

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関数を指定します。

図4.1 日時関数を使った抽出処理の例

検索条件

検索式
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