Data Effectorのコマンドでは、以下に示す拡張的な使い方もできます。
CPUやメモリなどの資源に余裕があり、入力ファイルを分散配置できる環境下では、大量のファイルを高速に処理する業務要件があります。このように、入力ファイルが複数の場合、同時に処理する数を指定することで、処理を高速化できます。
並列数は、各動作環境ファイルのParallelNumパラメタで設定します。
以下に、並列処理の概要を示します。
図5.2 並列処理の概要
抽出機能を使って結果を複数ファイルに仕分けして、その結果をそれぞれ集計するなどの処理を組み合わせてファイルを受け渡す場合、入出力ファイルに名前付きパイプを使用すると、受渡し時に中間ファイルを使用せず効率的に実行できます。
ポイント
名前付きパイプとは、プログラム同士がデータをやり取りできるようにした、プロセス間通信の1手法です。
名前付きパイプの指定例については、“7.4 名前付きパイプを指定する例”を参照してください。
以下に、名前付きパイプの概要を示します。
図5.3 名前付きパイプの概要
名前付きパイプは、入出力ファイルの先頭に“pipe@”を記述することで、使用できます。
注意
スキーマ情報ファイルおよび入力マスタファイルには、名前付きパイプを指定できません。ファイル名の先頭に"pipe@"を記述してもファイル名の一部と認識します。
以下に、入力定義ファイルでの名前付きパイプの指定例を示します。
## 入力定義ファイル SchemaFile /home/shunsaku/data/schema.csv DataFile pipe@/home/shunsaku/data/named_pipe_data |
ポイント
入出力ファイルが1つの場合は、標準入出力で処理可能です。
標準入出力の例については、“7.1 抽出結果を連結して集計する例”または“7.2 抽出結果をソートする例”を参照してください。
統合コマンド(deexコマンド)では、基本コマンドの機能を統括的に制御できます。
実行したい処理の内容は、「統合定義ファイル」と呼ばれるXML形式のファイルに定義します。
抽出した結果を連結して、集計する、という3つの処理を連続して実行したい場合は、統合定義ファイル内の「シナリオ」と呼ばれる定義部に、その処理順に定義します。統合コマンド実行時にそのシナリオ名を指定すると、3つの処理が順番に実行されます。
これにより、処理が増えるたびに増加していた定義ファイルは1つに集約されて、実行する複数の処理を1つの業務として制御できます。
以下に、統合コマンドの概要を示します。
図5.4 統合コマンドの概要
参照
統合コマンドの利用例については“5.6 統合コマンドを使う”を参照してください。
deexコマンドの詳細については、“リファレンス集”を参照してください。
抽出、連結、集計、ソート処理をコマンドで利用する場合、変換機能ごとの条件を各種定義ファイルに指定します。その定義ファイルに指定するパラメタには、実行時に変わるもの(入力ファイル名や、抽出条件式のキーワードに実行日時を指定するなど)があり、そのたびに定義ファイルを編集し直す必要があります。
そこで、定義ファイル内の変動パラメタを「可変項目」として定義して、コマンド実行時に値を渡す機能を提供します。
これにより、コマンド実行時に変更する項目が存在する場合でも、定義ファイルを編集する必要がなく、処理が実行できます。
以下に、可変項目の概要を示します。
図5.5 可変項目の概要
以下に、shunreplaceコマンドでの可変項目の指定例を示します。
replace用動作環境ファイル /home/shunsaku/cfg/Replace.cfg
(JnlFileパラメタとOutFileパラメタを可変項目とした場合)
# 入力ファイル(入力ジャーナルファイル) JnlFile Journal @JFILE@ # 入力ファイル(入力マスタファイル) MstFile { Master1 /home/master/master_1.csv, Master2 /home/master/master_2.csv } # 出力ファイル OutFile @OUTFILE@ |
連結条件ファイル /home/shunsaku/cfg/JoinCond.cfg
# 文字コード CharacterCode EUC # 入力ファイルタイプ InFileType XML # 入力項目定義 ListDef {document(Journal) ・・・ }, document(Master1){ ・・・ }, document(Master2){ ・・・ } } # リターン式 OutputDef {・・・} # 連結条件式 Jcondition {join(Journal,Master1,$JA == $MA,"LEFT OUTER"), join(Journal,Master2,$JB == $MC,"LEFT OUTER") } # 数値演算式における空の扱い SubstituteZeroForEmpty NO |
shunreplaceコマンドの指定例
shunreplace -s /home/shunsaku/cfg/Replace.cfg -j /home/shunsaku/cfg/JoinCond.cfg JFILE=/home/data/jounal_20100401.csv |
参照
各コマンドの可変項目の指定方法については、“リファレンス集”の“コマンドリファレンス”を参照してください。
統合コマンドで可変項目を使用する例については、“7.5.3 可変項目指定を利用して実行時にパラメタを指定する例”を参照してください。