ページの先頭行へ戻る
Interstage Data Effector V9.3.x 導入・運用ガイド
FUJITSU Software

7.3 別のマスタで続けて連結する例

連結コマンドを連続実行させて、以下の一連処理を実行します。

  1. 販売データより、A商品の売上データを生成します。

  2. A商品以外の売上データより、B商品の売上データを生成します。

  3. B商品以外の売上データより、C商品の売上データを生成します。

先頭の連結処理の結果、未連結のジャーナルレコードを未連結のジャーナルレコード用のディレクトリに出力します。その未連結のジャーナルレコードを次の連結処理の入力とすることで、複数のコマンドの処理を一連の処理として実行できます。


処理の概要を以下に示します。

図7.3 連結コマンドの連続処理の概要

ポイント

連結1の結果、入力マスタファイルにないデータは、replace用動作環境ファイルのExceptRecordFolderパラメタに指定したディレクトリに出力できます。
また、入力ファイルはディレクトリ単位で指定できるため、ExceptRecordFolderパラメタに指定したディレクトリを連結2の入力ジャーナルファイルとして指定します。

入力マスタファイルの内容が異なる場合などに利用できます。


本項で使用するデータは以下になります。

入力ジャーナルデータ

"日付","商品名","売上"
"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)

  2. 連結条件ファイルの記述(連結1)

  3. コマンドの実行1

  4. replace用動作環境ファイルの定義(連結2)

  5. 連結条件ファイルの記述(連結2)

  6. コマンドの実行2

  7. replace用動作環境ファイルの定義(連結3)

  8. 連結条件ファイルの記述(連結3)

  9. コマンドの実行3


(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
# 未連結レコード用のディレクトリ(注)
ExceptRecordFolder "..\exp1"

注)未連結レコード用のディレクトリを指定します。

(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の結果をフォルダ指定(注)
JnlFile Journal "..\exp1\"
# 入力ファイル(マスタファイル案1) MstFile { Master "..\data\B.csv"} # 出力ファイル OutFile "..\result\B商品_売上.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 "..\exp2"

注) 連結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