Data Effectorの集計機能には、以下に示すいろいろな集計方法があります。これらを組み合わせることで、多種多様な業務要件に対応できます。
大量データを集計する場合、マシンのメモリを大量に使用してしまい、他のプロセスの動作に影響が出てしまうことがあります。集計処理専用のメモリ量と作業ディレクトリ(一時ファイル)を設定することで、大量データの集計処理ができます。
メモリ量を指定することで、指定した一定のメモリ量の範囲で集計機能が動作します。
さらに、指定したメモリ量を超えると、自動的に一時ファイル使用に切り替わります。
shunanalyzeコマンド利用時は、analyze用動作環境ファイルのWorkFolderパラメタと集計条件ファイルのMemorySizeパラメタを指定します。
C API 利用時は、AsisSetEnvAnalyze関数のWorkFolderパラメタとMemorySizeパラメタを指定します。
統合コマンド利用時は、統合定義ファイルの処理条件定義部:AnalyzeのWorkFolderタグとMemoryタグで指定します。
参照
指定書式の詳細については、“リファレンス集”の以下を参照してください。
shunanalyzeコマンド利用時は “ analyze用動作環境ファイル”および“集計条件ファイル”
C API利用時は “AsisSetEnvAnalyze”
統合定義ファイル利用時は、 “処理条件定義部:Analyze”
データベースのエクスポート機能などを使って抜き出したCSV形式のファイルには、見出し行(項目名)が付加されていない場合があります。このようなデータだけのファイルも、加工せずにData Effectorで集計できます。
見出し行だけのファイルをスキーマ情報ファイルとして別に定義しておけば、データファイルと合わせて処理します。
例
1つのスキーマ情報ファイルと、1つのCSV形式のデータファイルを入力ファイルとして定義します。
# 入力ファイル InFile /home/shunsaku/Schema.csv;/home/shunsaku/Data.csv |
shunanalyzeコマンド利用時は、analyze用動作環境ファイルのInFileパラメタにスキーマ情報ファイルを指定します。
C API利用時は、AsisExecuteAnalyze関数のInFileパラメタにスキーマ情報ファイルを指定します。
統合コマンド利用時は、統合定義ファイルの処理条件定義部:AnalyzeのInFileタグにSchemaFile属性を指定します。
参照
スキーマ情報ファイルの内容については、“2.1.1 CSV形式の場合”を参照してください。
スキーマ情報ファイルの指定方法については、“リファレンス集”の以下を参照してください。
shunanalyzeコマンド利用時は “ analyze用動作環境ファイル”
C API利用時は “AsisExecuteAnalyze”
統合定義ファイル利用時は、 “処理条件定義部:Analyze”
入力ファイルはディレクトリ単位で指定できます。
例
複数の入力ファイルを1つのディレクトリに集約して、ディレクトリ指定で処理できます。
ファイル名を個別に指定する必要がないため、入力ファイル数が大量の場合やファイル名が変更する場合などにも対応できます。
入力データ1(\data\indata1.csv)
"empno","name","department","region_code","area","train","taxi","hotel" "19980120","鈴木太郎","開発部","01","東京都千代田区","7200円","1000円","8500円" |
入力データ2(\data\indata2.csv)
"empno","name","department","region_code","area","train","taxi","hotel" "20012111","佐藤花子","人事部","03","大阪府大阪市阿倍野区","14200円","1820円", |
入力データ3(\data\indata3.csv)
"empno","name","department","region_code","area","train","taxi","hotel" "19980120","鈴木太郎","開発部","01","神奈川県横浜市港北区","2400円",, |
入力データ4(\data\indata4.csv)
"empno","name","department","region_code","area","train","taxi","hotel" "20012111","佐藤花子","人事部","01","神奈川県横浜市港北区","2400円",, |
タクシー料金(taxi)の最大値と出張回数を求めます。
集計条件式
入力ファイル | InFile "..\data\" |
グループ式 | substr($area,0,10) 出張エリア |
集計式 | max($taxi) タクシー料金の最大値,count($area) 出張回数 |
結果 : CSV形式の出力の場合
"出張エリア","タクシー料金の最大値","出張回数" "神奈川県横浜市港北区",,2 "大阪府大阪市阿倍野区",1820,1 "東京都千代田区",1000,1 |
グループ式に指定したグループ内の最初または最後のデータを探す場合、以下の関数を使います。
first_value関数
last_value関数
例
ログをcsvファイルに出力する際、同じメッセージIDのログは、最後に発生したものだけを取り出します。
入力データ(input.csv)
時刻 | メッセージID | 内容 | 詳細 |
---|---|---|---|
01:03:04 | shn03001 | メモリが不足しています | |
01:03:20 | shn05191 | パラメタが間違っています | InFileType |
01:03:23 | shn03002 | I/Oエラーが発生しました | |
01:03:24 | shn03001 | メモリが不足しています | |
01:03:24 | shn03007 | 内部エラーが発生しました | |
01:03:24 | shn03002 | I/Oエラーが発生しました | /indata/data2.txt |
集計条件
グループ式 | $メッセージID |
集計式 | last_value( $時刻, {time($時刻) } ) 時刻, last_value( $内容, {time($時刻) } ) 内容, last_value( $詳細, {time($時刻) } ) 詳細 |
結果(output.csv)
メッセージID | 時刻 | 内容 | 詳細 |
---|---|---|---|
shn03001 | 01:03:24 | メモリが不足しています | |
shn03002 | 01:03:24 | I/Oエラーが発生しました | /indata/data2.txt |
shn03007 | 01:03:24 | 内部エラーが発生しました | |
shn05191 | 01:03:20 | パラメタが間違っています | InFileType |
参照
関数の詳細については、“リファレンス集”の以下を参照してください。
“first_value関数”
“last_value関数”