Data Effectorの抽出機能には、以下に示すいろいろな抽出方法があります。これらを組み合わせることで、多種多様な業務要件に対応できます。
データベースのエクスポート機能などを使って抜き出したCSV形式のファイルには、見出し行(項目名)が付加されていない場合があります。このようなデータだけのファイルも、そのままData Effectorで抽出できます。
見出し行だけのファイルをスキーマ情報ファイルとして別に定義しておけば、データファイルと合わせて処理します。
例
1つのスキーマ情報ファイルと、3つのCSV形式のデータファイルを入力ファイルとして定義します。
Windowsの場合
SchemaFile "D:¥Shunsaku¥schema¥schema.csv" DataFile "D:¥Shunsaku¥indata¥data001.csv" DataFile "D:¥Shunsaku¥indata¥data002.csv" DataFile "D:¥Shunsaku¥indata¥data003.csv" |
Linux/Solarisの場合
SchemaFile /home/shunsaku/schema/schema.csv DataFile /home/shunsaku/data/data1.csv DataFile /home/shunsaku/data/data2.csv DataFile /home/shunsaku/data/data3.csv |
コマンド利用時は、入力定義ファイルにスキーマ情報ファイルを指定します。
C API利用時は、AsisSetSchemaSelect関数にスキーマ情報ファイルを指定します。
参照
スキーマ情報ファイルの内容については、“2.1.1 CSV形式の場合”を参照してください。
スキーマ情報ファイルの指定方法については、以下を参照してください。
コマンド利用時は“B.1.2 入力定義ファイル”
C API利用時は“C.1.5 AsisSetSchemaSelect”
抽出結果を書き出す出力ファイルがすでに存在する場合、出力時の処理モードを以下から選択できます。
ファイルに上書きする
ファイルに追記する
コマンド利用時は、出力定義ファイルで指定します。
C API利用時は、AsisAddQuerySelect関数のWModeパラメタに指定します。
コマンド利用時、出力定義ファイルを指定した例を以下に示します。
検索番号1の結果を、kekka1.xmlに上書きします。
検索番号2の結果を、kekka2.xmlに上書きします。
検索番号3の結果を、kekka3.xmlに追記します。
検索番号4の結果を、kekka4.xmlに追記します。
Windowsの場合
例
1> D:¥Shunsaku¥outdata¥kekka1.xml 2> D:¥Shunsaku¥outdata¥kekka2.xml 3>> D:¥Shunsaku¥outdata¥kekka3.xml 4>> D:¥Shunsaku¥outdata¥kekka4.xml |
Linux/Solarisの場合
例
1> /home/shunsaku/outdata/kekka1.xml 2> /home/shunsaku/outdata/kekka2.xml 3>> /home/shunsaku/outdata/kekka3.xml 4>> /home/shunsaku/outdata/kekka4.xml |
参照
指定書式の詳細については、以下を参照してください。
コマンド利用時は“B.1.4 出力定義ファイル”
C API利用時は“C.1.3 AsisAddQuerySelect”
注意
上書きを選択した場合、既存データを消去してしまうので注意してください。
抽出条件に一致した項目の中から、出力したい項目だけを指定できます。
コマンド利用時は、検索定義ファイルにリターン式を指定します。
C API利用時は、AsisAddQuerySelect関数のReturnパラメタにリターン式を指定します。
例として以下の文書があるものとします。
文書A
"empno","name","date","expense","area","train","taxi" "19980120","鈴木太郎","2007年06月30日","15700円","東京都千代田区","7200円","" : |
文書B
"empno","name","date","expense","area","train","taxi" "20012111","佐藤花子","2007年07月01日","16020円","大阪府大阪市阿倍野区","14200円","1820円" : |
文書C
"empno","name","date","expense","area","train","taxi" "19980120","鈴木太郎","2007年07月02日","2400円","神奈川県横浜市港北区","2400円","" : |
文書D
<doc> <ID>1234567</ID> <Name>FujitsuTaro</Name> <Birthday>19700310</Birthday> <Career> <License> <Name>情報処理 <Kind>2種</Kind> </Name> <Date>20020101</Date> </License> <License> <Name>英語検定 <Kind>1級</Kind> </Name> <Date>20030901</Date> </License> </Career> </doc> |
以下に、検索定義ファイルにリターン式を指定した例を示します。
例
交通費(expense)が10000円より安い(小さい)人の従業員番号(empno)および出張日(date)を、1つのファイルに抽出します。
1 {$empno,$date} $expense < 10000 |
結果:
"empno","date" "19980120","2007年07月02日" |
例
氏名(Name)がFujitsu Taroの、氏名(Name)と資格(License)を、1つのファイルに抽出します。
1 {/doc/Name,/doc/Career/License/Name} /doc/Name = 'Fujitsu Taro' |
結果:
<doc> <Name>FujitsuTaro</Name> <Career> <License> <Name>情報処理 <Kind>2種</Kind> </Name> </License> <License> <Name>英語検定 <Kind>1級</Kind> </Name> </License> </Career> </doc> |
参照
指定書式の詳細については、以下を参照してください。
コマンド利用時は“B.1.3 検索定義ファイル”
C API利用時は“C.1.3 AsisAddQuerySelect”
Data Effectorの処理結果をデータベースに格納する場合など、見出し行(項目名)が不要なときがあります。このようなデータ行だけの出力もData Effectorで指定できます。
コマンド利用時は、出力定義ファイルにスキーマ情報ファイルとデータファイルを別々に指定します。
C API利用時は、AsisAddQuerySelect関数のOutFileパラメタに指定します。
以下に、コマンド利用時、出力定義ファイルを指定した例を示します。
検索番号2および3の結果は、見出し行とデータ行を分けて出力します。
Windowsの場合
例
1> D:¥Shunsaku¥outdata¥kekka1.csv 2> D:¥Shunsaku¥outdata¥kekka2_header.csv;D:¥Shunsaku¥outdata¥kekka2_data.csv 3> D:¥Shunsaku¥outdata¥kekka3_header.csv;D:¥Shunsaku¥outdata¥kekka3_data.csv |
Linux/Solarisの場合
例
1> /home/shunsaku/outdata/kekka1.csv 2> /home/shunskau/outdata/kekka2_header.csv;/home/shunsaku/outdata/kekka2_data.csv 3> /home/shunsaku/outdata/kekka3_header.csv;/home/shunsaku/outdata/kekka3_data.csv |
出力ファイルの例
kekka1.csv
"empno","name","date","expense","area","train","taxi" "19980120","鈴木太郎","2007年06月30日","15700円","東京都千代田区","7200円","" : |
kekka2_header.csv(スキーマ情報ファイルだけの例)
"empno","name","date","expense","area","train","taxi" |
kekka2_data.csv(データファイルだけの例)
"20012111","佐藤花子","2007年07月01日","16020円","大阪府大阪市阿倍野区","14200円","1820円" : |
kekka3_header.csv(スキーマ情報ファイルだけの例)
"empno","name","date","expense","area","train","taxi" |
kekka3_data.csv(データファイルだけの例)
"19980120","鈴木太郎","2007年07月02日","2400円","神奈川県横浜市港北区","2400円","" : |
参照
指定書式の詳細については、以下を参照してください。
コマンド利用時は“B.1.4 出力定義ファイル”
C API利用時は“C.1.3 AsisAddQuerySelect”
例えば、データベースから抽出されたデータには、各カラムの文字数にあわせ、データの後ろに空白文字が含まれることがあります。
このような、桁あわせのために付加されたデータの後方空白を取り除く場合、検索式にrtrim関数を指定します。
例として以下の文書があるものとします。
文書
"empno","name","date","expense" "19980120","鈴木△太郎△△","2007年06月30日","15700円" "20012111","佐藤山△佳代子","2007年07月01日","16020円" "19980120","鈴木△太郎△△","2007年07月02日","2400円" |
△は空白文字を表します。
例
従業員氏名(name)が“鈴木△太郎”と一致するデータを抽出します(検索定義ファイルの指定例)。この場合、検索式の左辺にrtrim関数を指定することで、従業員氏名の後方空白が取り除かれます。
1 rtrim($name) == "鈴木△太郎" |
結果
"empno","name","date","expense" "19980120","鈴木△太郎△△","2007年06月30日","15700円" "19980120","鈴木△太郎△△","2007年07月02日","2400円" |
注意
上記例では、検索時にデータの後方空白を取り除いているだけです。
抽出結果として、後方の空白を取り除いたデータは出力できません。
参照
rtrim関数の指定方法の詳細については、“A.8.2 rtrim関数”を参照してください。