Data Effectorの集計機能には、以下に示すいろいろな集計方法があります。これらを組み合わせることで、多種多様な業務要件に対応できます。
大量データを集計する場合、マシンのメモリを大量に使用してしまい、他のプロセスの動作に影響が出てしまうことがあります。集計処理専用のメモリ量と作業ディレクトリ(一時ファイル)を設定することで、大量データの集計処理ができます。
メモリ量を指定することで、指定した一定のメモリ量の範囲で集計機能が動作します。
さらに、メモリ不足時は、自動的に一時ファイル使用に切り替わります。
コマンド利用時は、analyze用動作環境ファイルのWorkFolderパラメタと集計条件ファイルのMemorySizeパラメタを指定します。
C API 利用時は、AsisSetEnvAnalyze関数のWorkFolderパラメタとMemorySizeパラメタを指定します。
コマンド利用時は、“5.4.2 集計コマンドの実行例”を参照してください。
C API利用時は、“F.3 データの集計”を参照してください。
参照
指定書式の詳細については、以下を参照してください。
コマンド利用時は“B.3.1 analyze用動作環境ファイル”および“B.3.2 集計条件ファイル”
C API利用時は“C.3.2 AsisSetEnvAnalyze”
データベースのエクスポート機能などを使って抜き出したCSV形式のファイルには、見出し行(項目名)が付加されていない場合があります。このようなデータだけのファイルも、加工せずにData Effectorで集計できます。
見出し行だけのファイルをスキーマ情報ファイルとして別に定義しておけば、データファイルと合わせて処理します。
例
1つのスキーマ情報ファイルと、1つのCSV形式のデータファイルを入力ファイルとして定義します。
Windowsの場合
# 入力ファイル InFile "D:¥Shunsaku¥data¥Schema.csv;D:¥Shunsaku¥data¥Data.csv" |
Linux/Solarisの場合
# 入力ファイル InFile /home/shunsaku/Schema.csv;/home/shunsaku/Data.csv |
コマンド利用時は、analyze用動作環境ファイルのInFileパラメタにスキーマ情報ファイルを指定します。
C API利用時は、AsisExecuteAnalyze関数のInFileパラメタにスキーマ情報ファイルを指定します。
参照
スキーマ情報ファイルの内容については、“2.1.1 CSV形式の場合”を参照してください。
スキーマ情報ファイルの指定方法については、以下を参照してください。
コマンド利用時は“B.3.1 analyze用動作環境ファイル”
C API利用時は“C.3.3 AsisExecuteAnalyze”
集計式では、val関数、集合関数および算術演算などを組み合わせることにより、複雑な集計処理が可能です。
例として以下の文書があるものとします。
文書A
<doc> <date>2007年06月30日</date> <detail> <area>神奈川県横浜市港北区</area> <destination>本社</destination> <taxi></taxi> <hotel>8500円</hotel> </detail> </doc> |
文書B
<doc> <date>2007年07月01日</date> <detail> <area>神奈川県横浜市港北区</area> <destination>本社</destination> <taxi></taxi> <hotel></hotel> </detail> </doc> |
文書C
<doc> <date>2007年07月02日</date> <detail> <area>神奈川県横浜市港北区</area> <destination>本社</destination> <taxi></taxi> <hotel>8500円</hotel> </detail> </doc> |
文書D
<doc> <date>2007年07月03日</date> <detail> <area>東京都千代田区</area> <destination>東京支社</destination> <taxi>1000円</taxi> <hotel>7800円</hotel> </detail> </doc> |
例
宿泊費(hotel)と宿泊出張の手当(1500円)の合計を求めます。
グループ式 集計式 | substr(/doc/detail/area/text(),0,10) 出張エリア sum(/doc/detail/hotel/text())+count(/doc/detail/hotel/text())*1500 宿泊費と宿泊出張手当の和 |
結果:CSV形式で出力する場合
"出張エリア","宿泊費と宿泊出張手当の和" "東京都千代田区",9300 "神奈川県横浜市港北区",20000 |
Data Effectorの処理結果をデータベースに格納する場合など、見出し行(項目名)が不要なときがあります。このようなデータ行だけの出力もData Effectorで指定できます。
コマンド利用時は、analyze用動作環境ファイルのOutFileパラメタに、スキーマ情報ファイルとデータファイルを別々に指定します。
C API利用時は、AsisExecuteAnalyze関数のOutFileパラメタに、スキーマ情報ファイルとデータファイルを別々に指定します。
参照
指定例と出力結果は、“3.3.2.5 データ行だけを出力する場合”を参照してください。
指定書式の詳細については、以下を参照してください。
コマンド利用時は“B.3.1 analyze用動作環境ファイル”
C API利用時は“C.3.3 AsisExecuteAnalyze”
例えば、データベースから抽出されたデータには、各カラムの文字数にあわせ、データの後ろに空白文字が含まれることがあります。
このような、桁あわせのために付加されたデータ後方の空白を取り除く場合、グループ式または集計式にrtrim関数を指定します。
文書
"empno","name","date","expense" "19980120","鈴木△太郎△△","2007年06月30日","15700円" "20012111","佐藤山△佳代子","2007年07月01日","16020円" "19980120","鈴木△太郎△△","2007年07月02日","2400円" |
△は空白文字を表します。
例
従業員氏名(name)ごとに交通費(expense)の合計を求めます。
グループ式: 集計式 | rtrim( $name ) 従業員氏名 sum( $expense ) 交通費合計 |
結果:CSV形式で出力する場合
"従業員氏名","交通費合計" "佐藤山△佳代子","16020" "鈴木△太郎","18100" |
参照
rtrim関数の指定方法の詳細については、“A.8.2 rtrim関数”を参照してください。