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

3.4.4 いろいろなデータ集計方法

Data Effectorの集計機能には、以下に示すいろいろな集計方法があります。これらを組み合わせることで、多種多様な業務要件に対応できます。


3.4.4.1 大量データを集計する場合

大量データを集計する場合、マシンのメモリを大量に使用してしまい、他のプロセスの動作に影響が出てしまうことがあります。集計処理専用のメモリ量と作業ディレクトリ(一時ファイル)を設定することで、大量データの集計処理ができます。
メモリ量を指定することで、指定した一定のメモリ量の範囲で集計機能が動作します。
さらに、メモリ不足時は、自動的に一時ファイル使用に切り替わります。

コマンド利用時は、analyze用動作環境ファイルのWorkFolderパラメタと集計条件ファイルのMemorySizeパラメタを指定します。

C API 利用時は、AsisSetEnvAnalyze関数のWorkFolderパラメタとMemorySizeパラメタを指定します。

コマンド利用時は、“5.4.2 集計コマンドの実行例”を参照してください。
C API利用時は、“F.3 データの集計”を参照してください。

参照

指定書式の詳細については、以下を参照してください。


3.4.4.2 見出し行(項目名)のないCSVファイルを扱う場合

データベースのエクスポート機能などを使って抜き出したCSV形式のファイルには、見出し行(項目名)が付加されていない場合があります。このようなデータだけのファイルも、加工せずにData Effectorで集計できます。
見出し行だけのファイルをスキーマ情報ファイルとして別に定義しておけば、データファイルと合わせて処理します。


1つのスキーマ情報ファイルと、1つのCSV形式のデータファイルを入力ファイルとして定義します。


WindowsWindowsの場合

# 入力ファイル
InFile      "D:¥Shunsaku¥data¥Schema.csv;D:¥Shunsaku¥data¥Data.csv"

SolarisLinuxLinux/Solarisの場合

# 入力ファイル
InFile      /home/shunsaku/Schema.csv;/home/shunsaku/Data.csv

コマンド利用時は、analyze用動作環境ファイルのInFileパラメタにスキーマ情報ファイルを指定します。
C API利用時は、AsisExecuteAnalyze関数のInFileパラメタにスキーマ情報ファイルを指定します。

参照

スキーマ情報ファイルの内容については、“2.1.1 CSV形式の場合”を参照してください。

スキーマ情報ファイルの指定方法については、以下を参照してください。


3.4.4.3 集計結果を演算する場合

集計式では、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

3.4.4.4 データ行だけを出力する場合

Data Effectorの処理結果をデータベースに格納する場合など、見出し行(項目名)が不要なときがあります。このようなデータ行だけの出力もData Effectorで指定できます。
コマンド利用時は、analyze用動作環境ファイルのOutFileパラメタに、スキーマ情報ファイルとデータファイルを別々に指定します。
C API利用時は、AsisExecuteAnalyze関数のOutFileパラメタに、スキーマ情報ファイルとデータファイルを別々に指定します。

参照

指定例と出力結果は、“3.3.2.5 データ行だけを出力する場合”を参照してください。

指定書式の詳細については、以下を参照してください。


3.4.4.5 データの後方空白を取り除く場合

例えば、データベースから抽出されたデータには、各カラムの文字数にあわせ、データの後ろに空白文字が含まれることがあります。

このような、桁あわせのために付加されたデータ後方の空白を取り除く場合、グループ式または集計式に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関数”を参照してください。