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

5.6.1 抽出、連結および集計のコマンド組合せ例

抽出、連結および集計を組み合わせて、以下の一連処理を実行します。

  1. XML形式の従業員データより、勤務地が大阪の従業員情報を抽出します。

  2. 入力マスタファイルと連結して事業所情報を付け加えます。

  3. 勤務地ごとに集計します。

1つ目のコマンドの結果を標準出力に出力し、その出力を2つ目のコマンドの入力とすることで、複数のコマンドの処理を一連の処理として実行できます。


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

図5.8 抽出、連結および集計のコマンド組合せ処理の概要



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

従業員データ

"ENO","NAME","DEPARTMENT","POSITION","AREA","BLDG"
"070","田中","総務","課員","大阪","竹ビル"
"031","鈴木","総務","課員","大阪","竹ビル"
"003","高橋","総務","課長","東京","松ビル"
"009","渡辺","営業","課長","大阪","竹ビル"
"120","伊藤","総務","課長","大阪","竹ビル"
"055","山本","総務","課員","大阪","竹ビル"
"135","中村","営業","課長","東京","松ビル"
"095","小林","営業","課員","東京","松ビル"
"094","斎藤","営業","課員","東京","松ビル"
"085","加藤","営業","課員","大阪","竹ビル"
"033","佐藤","営業","課員","福岡","梅ビル"
"032","吉田","営業","課員","福岡","梅ビル"

従業員データ

<EMPLOYEE><ENO>070</ENO><NAME>田中</NAME><DEPARTMENT>総務</DEPARTMENT><POSITION>課員</POSITION><AREA>大阪</AREA><BLDG>竹ビル</BLDG></EMPLOYEE>
<EMPLOYEE><ENO>031</ENO><NAME>鈴木</NAME><DEPARTMENT>総務</DEPARTMENT><POSITION>課員</POSITION><AREA>大阪</AREA><BLDG>竹ビル</BLDG></EMPLOYEE>
<EMPLOYEE><ENO>003</ENO><NAME>高橋</NAME><DEPARTMENT>総務</DEPARTMENT><POSITION>課長</POSITION><AREA>東京</AREA><BLDG>松ビル</BLDG></EMPLOYEE>
<EMPLOYEE><ENO>009</ENO><NAME>渡辺</NAME><DEPARTMENT>営業</DEPARTMENT><POSITION>課長</POSITION><AREA>大阪</AREA><BLDG>竹ビル</BLDG></EMPLOYEE>
<EMPLOYEE><ENO>120</ENO><NAME>伊藤</NAME><DEPARTMENT>総務</DEPARTMENT><POSITION>課長</POSITION><AREA>大阪</AREA><BLDG>竹ビル</BLDG></EMPLOYEE>
<EMPLOYEE><ENO>055</ENO><NAME>山本</NAME><DEPARTMENT>総務</DEPARTMENT><POSITION>課員</POSITION><AREA>大阪</AREA><BLDG>竹ビル</BLDG></EMPLOYEE>
<EMPLOYEE><ENO>135</ENO><NAME>中村</NAME><DEPARTMENT>営業</DEPARTMENT><POSITION>課長</POSITION><AREA>東京</AREA><BLDG>松ビル</BLDG></EMPLOYEE>
<EMPLOYEE><ENO>095</ENO><NAME>小林</NAME><DEPARTMENT>営業</DEPARTMENT><POSITION>課員</POSITION><AREA>東京</AREA><BLDG>松ビル</BLDG></EMPLOYEE>
<EMPLOYEE><ENO>094</ENO><NAME>斎藤</NAME><DEPARTMENT>営業</DEPARTMENT><POSITION>課員</POSITION><AREA>東京</AREA><BLDG>松ビル</BLDG></EMPLOYEE>
<EMPLOYEE><ENO>085</ENO><NAME>加藤</NAME><DEPARTMENT>営業</DEPARTMENT><POSITION>課員</POSITION><AREA>大阪</AREA><BLDG>竹ビル</BLDG></EMPLOYEE>
<EMPLOYEE><ENO>033</ENO><NAME>佐藤</NAME><DEPARTMENT>営業</DEPARTMENT><POSITION>課員</POSITION><AREA>福岡</AREA><BLDG>梅ビル</BLDG></EMPLOYEE>
<EMPLOYEE><ENO>032</ENO><NAME>吉田</NAME><DEPARTMENT>営業</DEPARTMENT><POSITION>課員</POSITION><AREA>福岡</AREA><BLDG>梅ビル</BLDG></EMPLOYEE>

事務所データ

"LOCALE","BLDG","NEWBLDG","PHONE","CODE","ADDRESS"
"東京","松ビル","","7100","00001","東京都品川区東五反田"
"大阪","竹ビル","亀ビル","7200","00002","大阪府大阪市北区梅田"
"福岡","梅ビル","","7300","00008","福岡県福岡市博多区中州"


事務所データ

<INFO><LOCALE>東京</LOCALE><BLDG></BLDG><NEWBLDG></NEWBLDG><PHONE>7100</PHONE><CODE>00001</CODE><ADDRESS>東京都港区高輪</ADDRESS></INFO>
<INFO><LOCALE>大阪</LOCALE><BLDG>竹ビル</BLDG><NEWBLDG>亀ビル</NEWBLDG><PHONE>7200</PHONE><CODE>00002</CODE><ADDRESS>大阪府大阪市北区梅田</ADDRESS></INFO>
<INFO><LOCALE>福岡</LOCALE><BLDG>梅ビル</BLDG><NEWBLDG></NEWBLDG><PHONE>7300</PHONE><CODE>00008</CODE><ADDRESS>福岡県福岡市博多区博多駅</ADDRESS></INFO>


コマンドの実行例を以下に示します。

  1. select用動作環境ファイルの定義

  2. 入力定義ファイルの記述

  3. 検索定義ファイルの記述

  4. replace用動作環境ファイルの定義

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

  6. analyze用動作環境ファイルの定義

  7. 集計条件ファイルの記述

  8. コマンドの実行

(1)select用動作環境ファイル(select.cfg)の定義

WindowsWindowsの場合

# 文字コード
CharacterCode             SHIFT-JIS
# 入力ファイルタイプ
InFileType                      XML
# スキップキャラクタ
SkipChar              "¥s,¥n,¥t,¥S"
# 区切り文字
SeparateChar          "¥s,¥n,¥t"
# 半角英字の大文字・小文字の区別
ANKmix                0
# 全角英字の大文字・小文字の区別
KNJmix                0
# ログファイル
LogFile               "D:¥Shunsaku¥log¥Select.log"

SolarisLinuxLinux/Solarisの場合

# 文字コード
CharacterCode                   EUC
# 入力ファイルタイプ
InFileType                      XML
# スキップキャラクタ
SkipChar              "¥s,¥n,¥t,¥S"
# 区切り文字
SeparateChar          "¥s,¥n,¥t"
# 半角英字の大文字・小文字の区別
ANKmix                0
# 全角英字の大文字・小文字の区別
KNJmix                0
# ログファイル
LogFile                /home/shun/log/Select.log

(2)入力定義ファイル(selin.cfg)の記述

WindowsWindowsの場合

DataFile    "D:¥Shunsaku¥data¥Employee.xml"

SolarisLinuxLinux/Solarisの場合

DataFile     /home/shun/data/Employee.xml

(3)検索定義ファイル(selquery.cfg)の記述


1 /EMPLOYEE/AREA = '大阪'

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

WindowsWindowsの場合

# 入力ジャーナルファイル
JnlFile          Journal ""
# 入力マスタファイル
MstFile          {Master "D:¥Shunsaku¥data¥Company.xml"}
# ログファイル
LogFile           "D:¥Shunsaku¥log¥Replace.log"

SolarisLinuxLinux/Solarisの場合

# 入力ジャーナルファイル
JnlFile          Journal ""
# 入力マスタファイル
MstFile          {Master "/home/shun/data/Company.xml"}
# ログファイル
LogFile           /home/shun/log/Replace.log

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

WindowsWindowsの場合

# 文字コード
CharacterCode          SHIFT-JIS
# 入力ファイルタイプ
InFileType             XML
# 出力ファイルタイプ
OutFileType          CSV
# 入力項目定義
ListDef      {document(Journal){$JENO       /EMPLOYEE/ENO/text(),
                                $JNAME       /EMPLOYEE/NAME/text(),
                                $JDEPARTMENT /EMPLOYEE/DEPARTMENT/text(),
                                $JPOSITION   /EMPLOYEE/POSITION/text(),
                                $JAREA       /EMPLOYEE/AREA/text(),
                                $JBLDG       /EMPLOYEE/BLDG/text()
                               },
              document(Master){ $MLOCALE  /INFO/LOCALE/text(),
                                $MBLDG    /INFO/BLDG/text(),
                                $MNEWBLDG /INFO/NEWBLDG/text(),
                                $MPHONE   /INFO/PHONE/text()
                               }
               }
# 出力項目定義
OutputDef     { $JENO, $JNAME, $JDEPARTMENT, $JPOSITION, $JAREA, $MNEWBLDG, $MPHONE }
# 連結条件ファイル
Jcondition            { $JAREA == $MLOCALE }

SolarisLinuxLinux/Solarisの場合

# 文字コード
CharacterCode          EUC
# 入力ファイルタイプ
InFileType             XML
# 出力ファイルタイプ
OutFileType          CSV
# 入力項目定義
ListDef      {document(Journal){$JENO       /EMPLOYEE/ENO/text(),
                                $JNAME       /EMPLOYEE/NAME/text(),
                                $JDEPARTMENT /EMPLOYEE/DEPARTMENT/text(),
                                $JPOSITION   /EMPLOYEE/POSITION/text(),
                                $JAREA       /EMPLOYEE/AREA/text(),
                                $JBLDG       /EMPLOYEE/BLDG/text()
                               },
              document(Master){ $MLOCALE  /INFO/LOCALE/text(),
                                $MBLDG    /INFO/BLDG/text(),
                                $MNEWBLDG /INFO/NEWBLDG/text(),
                                $MPHONE   /INFO/PHONE/text()
                               }
               }
# 出力項目定義
OutputDef     { $JENO, $JNAME, $JDEPARTMENT, $JPOSITION, $JAREA, $MNEWBLDG, $MPHONE }
# 連結条件ファイル
Jcondition            { $JAREA == $MLOCALE }

(6)analyze用動作環境ファイル(analyze.cfg)の定義

WindowsWindowsの場合

# 出力ファイル
OutFile              "D:¥Shunsaku¥kekka01.csv"

SolarisLinuxLinux/Solarisの場合

# 出力ファイル
OutFile              /home/shun/kekka01.csv

(7)集計条件ファイル(anacond.cfg)の記述

WindowsWindowsの場合

# 文字コード
CharacterCode   SHIFT-JIS
# 入力ファイルタイプ
InFileType      CSV
# 出力ファイルタイプ
OutFileType     CSV
# グループ式
GCondition      } $JDEPARTMENT }, $JENO }
# 集計式
RCondition      $JNAME, $JPOSITION, $JAREA, $MNEWBLDG, $MPHONE, count() COUNT

SolarisLinuxLinux/Solarisの場合

# 文字コード
CharacterCode   EUC
# 入力ファイルタイプ
InFileType      CSV
# 出力ファイルタイプ
OutFileType     CSV
# グループ式
GCondition      } $JDEPARTMENT }, $JENO }
# 集計式
RCondition      $JNAME, $JPOSITION, $JAREA, $MNEWBLDG, $MPHONE, count() COUNT

(8)コマンドの実行

WindowsWindowsの場合

shunselect -s D:¥Shunsaku¥select.cfg  -i D:¥Shunsaku¥selin.cfg  -q D:¥Shunsaku¥selquery.cfg | ¥
shunreplace -s D:¥Shunsaku¥replace.cfg -j D:¥Shunsaku¥joincond.cfg | ¥
shunanalyze -s D:¥Shunsaku¥analyze.cfg -a D:¥Shunsaku¥anacond.cfg

SolarisLinuxLinux/Solarisの場合

shunselect -s /home/shun/select.cfg  -i /home/shun/selin.cfg  -q /home/shun/selquery.cfg | ¥
shunreplace -s /home/shun/replace.cfg -j /home/shun/joincond.cfg | ¥
shunanalyze -s /home/shun/analyze.cfg -a /home/shun/anacond.cfg

実行結果イメージ

"JDEPARTMENT","JENO","JNAME","JPOSITION","JAREA","MNEWBLDG","MPHONE","COUNT"
"営業","009","渡辺","課長","大阪","亀ビル","7200",1
"営業","085","加藤","課員","大阪","亀ビル","7200",1
"営業","-","渡辺","課長","大阪","亀ビル","7200",2
"総務","031","鈴木","課員","大阪","亀ビル","7200",1
"総務","055","山本","課員","大阪","亀ビル","7200",1
"総務","070","田中","課員","大阪","亀ビル","7200",1
"総務","120","伊藤","課長","大阪","亀ビル","7200",1
"総務","-","鈴木","課員","大阪","亀ビル","7200",4
"-","-","渡辺","課長","大阪","亀ビル","7200",6