Interstage Data Effector ユーザーズガイド
目次 索引 前ページ次ページ

付録A 条件の書式> A.3 集計式

A.3.2 数値演算式における空の扱い

数値演算式における、空の扱いについて説明します。
Data Effectorでは、以下パラメタまたは環境変数を指定することで、算術演算における空の扱いおよび出力時の空の扱いを変えることができます。

なお、以降の説明では、C API利用時に環境変数SubstituteZeroForEmptyを設定した例で説明します。

ここでは、以下について説明します。

空の定

◆入力ファイルタイプがCSV形式の場

数値演算式に指定した項目名によって参照される項目が以下の場合、その値を空と扱います。

以下のレコードについて項目名「$値」で参照した結果は空となります。

番号,名前

101,AAA

102,BBB

103,CCC

番号,名前,値

201,XXX,

202,YYY,""

◆入力ファイルタイプがXML形式の場

数値演算式に指定したテキスト式によって参照されるテキストノードが以下の場合、その値を空と扱います。

以下のレコードについてテキスト式「/文書/値/text()」で参照した結果は空となります。

<文書></文書>

<文書><値 /></文書>

<文書><値></値></文書>

<文書><値><子要素>子要素の値</子要素></値></文書>

<文書><値><子要素>子要素の値</子要素>100</値></文書>

集合関数における空の扱

集合関数では、関数のパラメタに指定した項目に空のものが含まれる場合、空である項目を除いた、それ以外の項目の値のみで集計処理を行います。

算術演算における空の扱

◆環境変数SubstituteZeroForEmptyに「NO」を指定した場

算術演算では、演算対象に空が含まれる場合、演算結果はすべて空を返します。

例1

「sum($値1)」が空を返す場合、以下の数値演算式の結果は空になります。

sum($値1)*100+50

例2

「min($値1)」が空を返す場合、以下の数値演算式の結果は空になります。

1/min($値1)

◆環境変数SubstituteZeroForEmptyに「YES」を指定した場

算術演算では、演算対象に空が含まれる場合、空を0とみなして演算を行います。

例1

「sum($値1)」が空を返す場合、以下の数値演算式の結果は「50」になります。

sum($値1)*100+50

例2

「min($値1)」が空を返す場合、以下の数値演算式の演算時に「ゼロによる除算エラー」が発生します。

1/min($値1)

出力時の空の扱

◆環境変数SubstituteZeroForEmptyに「NO」を指定した場

最終的な数値演算式の結果が空となった場合、出力ファイルの項目の内容、またはテキストノードには何も出力されません。

◆環境変数SubstituteZeroForEmptyに「YES」を指定した場

最終的な数値演算式の結果が空となった場合、出力ファイルの項目の内容、またはテキストノードの値として「0」が出力されます。

環境変数SubstituteZeroForEmpty設定時の注

環境変数SubstituteZeroForEmptyに「YES」を指定する場合、数値演算式の最終的な演算結果が0となったのか、または演算結果は空で、それが0と出力されたのかを出力結果から判断することはできません。
また、以下の例のように空が0と出力されることにより、出力結果だけを見ると矛盾があると判断される場合があるため、注意が必要です。

以下は、各入力データの最小値および入力データ全体の最小値を求めている例です。
出力結果において、項目「値1」の最小値は「1」、項目「値2」については入力データにおける項目の内容がすべて空のため、最小値は空となり空が「0」として出力されます。
これらの結果からは項目「値1」と「値2」全体の最小値は0であると判断される恐れがありますが、実際には、出力結果の「min($値1;$値2)」にあるように、項目「値1」と「値2」全体の最小値は1です。

◆入力ファイ

"種別1","値1","値2"

"A","1",""

"A","",""

◆グループ式、集計

グループ式: $種別1

集計式: min($種別1), min($値2), min($値1;$値2)

◆出力結

"種別1","min($値1)","min($値2)","min($値1;$値2)"

"A",1,0,1

目次 索引 前ページ次ページ

Copyright 2007 FUJITSU LIMITED