連結コマンドを連続実行させて、以下の一連処理を実行します。
販売データより、A商品の売上データを生成します。
A商品以外の売上データより、B商品の売上データを生成します。
B商品以外の売上データより、C商品の売上データを生成します。
先頭の連結処理の結果、未連結のジャーナルレコードを未連結のジャーナルレコード用のディレクトリに出力します。その未連結のジャーナルレコードを次の連結処理の入力とすることで、複数のコマンドの処理を一連の処理として実行できます。
処理の概要を以下に示します。
図7.3 連結コマンドの連続処理の概要
ポイント
本項で使用するデータは以下になります。
入力ジャーナルデータ
"日付","商品名","売上" "20110601","B101","240" "20110601","C52","282" "20110601","A123","950" "20110602","B102","400" "20110602","A123","110" "20110602","C53","160" "20110603","C55","120" "20110603","A234","770" "20110604","B104","360" "20110604","A123","210" "20110605","B101","110" "20110605","A456","88" |
A商品マスタ
"コード","単価" "A012","1500" "A123","3000" "A234","4100" "A345","4600" "A456","5000" |
B商品マスタ
"番号","コード01","単価" "BAA","B101","2000" "BBB","B102","2200" "BCC","B103","2500" "BDD","B104","2550" |
C商品マスタ
"型番","コード","価格" "C52","yyy","2000" "C53","xyz","3000" "C54","yyx","3500" "C55","zzz","4000" |
ここでは、Windowsでの実行例を示します。
コマンドの実行例を以下に示します。
(1)replace用動作環境ファイル(1_rep.cfg)の定義
# 入力ファイル(ジャーナルファイル) JnlFile Journal "..\data\Journal.csv" # 入力ファイル(マスタファイル案1) MstFile { Master "..\data\A.csv"} # 出力ファイル OutFile "..\result\A商品_売上.csv" # ログファイル LogFile "..\log\Replace.log" # 作業ディレクトリ WorkFolder "..\tmp\" # 入力ジャーナルファイルの見出し行読飛ばし:なし SkipHeader 0 # 入力マスタファイルの見出し行読飛ばし:なし MstSkipHeader 0 # CSV形式の引用符の指定:あり QuotationMarkMode 0 # CSV形式の区切り文字 FieldSeparator "\," # CSV形式の連続した区切り文字の扱い FieldSeparatorMode 0 # エラーデータ出力ファイル ErrFile "..\err\err.csv" 10 # ジョイン警告:正常終了 JoinAlert 0 # 未連結レコード用のディレクトリ(注) |
注)未連結レコード用のディレクトリを指定します。
(2)連結条件ファイル(1_join.cfg)の定義
# 文字コード CharacterCode SHIFT-JIS # 入力項目定義 ListDef { document(Journal){ $Jdate 日付, $Jgoods 商品名, $Jsales 売上 }, document(Master){ $Mcode コード, $Mvalue 単価 } } # リターン式 OutputDef {$Jdate 日付, $Jgoods 商品型番, val($Jsales) * val($Mvalue) 売上 } # 連結条件(注) Jcondition { join (Journal,Master,$Jgoods == $Mcode, "INNER") } # 利用可能メモリサイズ MemorySize 1500 |
(3)コマンドの実行1
shunreplace -s D:\Shunsaku\1_rep.cfg -j D:\Shunsaku\1_join.cfg |
(4)replace用動作環境ファイル(2_rep.cfg)の定義
# 入力ファイル(処理1の結果をフォルダ指定)(注) |
注) 連結1で指定した未連結レコード用のディレクトリを入力ファイルに指定します。
(5)連結条件ファイル(2_join.cfg)の定義
# 文字コード CharacterCode SHIFT-JIS # 入力項目定義 ListDef { document(Journal){ $Jdate 日付, $Jgoods 商品名, $Jsales 売上 }, document(Master){ $Mcode コード01, $Mvalue 単価 } } # リターン式 OutputDef {$Jdate 日付, $Jgoods 商品型番, val($Jsales) * val($Mvalue) 売上 } # 連結条件 Jcondition { join (Journal,Master,$Jgoods == $Mcode, "INNER") } # 利用可能メモリサイズ MemorySize 1500 |
(6)コマンドの実行2
shunreplace -s D:\Shunsaku\2_rep.cfg -j D:\Shunsaku\2_join.cfg |
(7)replace用動作環境ファイル(3_rep.cfg)の定義
# 入力ファイル(処理2の結果をフォルダ指定)(注) JnlFile Journal "..\exp2\" # 入力ファイル(マスタファイル案1) MstFile { Master "..\data\C.csv"} # 出力ファイル OutFile "..\result\C商品_売上.csv" # ログファイル LogFile "..\log\Replace.log" # 作業ディレクトリ WorkFolder "..\tmp\" # 入力ジャーナルファイルの見出し行読飛ばし:なし SkipHeader 0 # 入力マスタファイルの見出し行読飛ばし:なし MstSkipHeader 0 # CSV形式の引用符の指定:あり QuotationMarkMode 0 # CSV形式の区切り文字 FieldSeparator "\," # CSV形式の連続した区切り文字の扱い FieldSeparatorMode 0 # エラーデータ出力ファイル ErrFile "..\err\err.csv" 10 # ジョイン警告:正常終了 JoinAlert 0 # 未連結レコード用のディレクトリ ExceptRecordFolder "..\exp3" |
注) 連結2で指定した未連結レコード用のディレクトリを入力ファイルに指定します。
(8)連結条件ファイル(3_join.cfg)の定義
# 文字コード CharacterCode SHIFT-JIS # 入力項目定義 ListDef { document(Journal){ $Jdate 日付, $Jgoods 商品名, $Jsales 売上 }, document(Master){ $Mcode 型番, $Mvalue 価格 } } # リターン式 OutputDef {$Jdate 日付, $Jgoods 商品型番, val($Jsales) * val($Mvalue) 売上 } # 連結条件) Jcondition { join (Journal,Master,$Jgoods == $Mcode, "INNER") } # 利用可能メモリサイズ MemorySize 1500 |
(9)コマンドの実行3
shunreplace -s D:\Shunsaku\3_rep.cfg -j D:\Shunsaku\3_join.cfg |
実行結果イメージ
A商品の売上データ(A商品_売上.csv)
"日付","商品型番","売上" "20110601","A123",2850000 "20110602","A123",330000 "20110603","A234",3157000 "20110604","A123",630000 "20110605","A456",440000 |
B商品の売上データ(B商品_売上.csv)
"日付","商品型番","売上" "20110601","B101",480000 "20110602","B102",880000 "20110604","B104",918000 "20110605","B101",220000 |
C商品の売上データ(C商品_売上.csv)
"日付","商品型番","売上" "20110601","C52",564000 "20110602","C53",480000 "20110603","C55",480000 |