すべての式で、いくつかの種類の値が使用されます。これらの値は、式に追加して式の一部として使用するか、または「Expression」プロセッサの入力である属性(1つまたは複数)から読み取ることができます。
式の値は、文字列、数値、文字列または数値の配列です。数値はIEEE倍精度形式で格納され、最大値は約1.8 x 10308です。式で日付値が使用される場合、これらの値は同等のJavaタイムスタンプ(1970年1月1日00:00からのミリ秒数)で表されます。
式は、演算子で結合された各項目で構成されます。サポートされている項目は次のとおりです。詳細はその項目をクリックしてください。
次の演算子を優先度の降順に使用できます。
演算子 |
優先度 |
意味 |
^ |
8 |
累乗(例: ^ 0.5は平方根の値を求めます) |
* |
7 |
乗算 |
/ |
7 |
除算 |
% |
7 |
係数 |
+ |
6 |
加算 |
- |
6 |
減算 |
|| |
6 |
文字列の連結 |
> |
5 |
より大きい |
< |
5 |
より小さい |
>= |
5 |
以上 |
<= |
5 |
以下 |
=または== |
4 |
等しい |
!=または<> |
4 |
等しくない |
& |
3 |
論理AND |
| |
2 |
論理OR |
! |
1 |
単項論理NOT |
比較演算子は、比較が成功した場合は1、成功しなかった場合は0になります。
優先度の高い演算子は、優先度の低い演算子より強く結合されます。次に例を示します。
a = b + c * d ^ e
これは次と同じです。
a = (b + (c * (d ^ e)))
次の関数が式言語でサポートされています。
関数 |
引数(1つまたは複数) |
結果 |
意味 |
floor (x) |
数値 |
数値 |
切捨て |
ceil (x) |
数値 |
数値 |
切上げ |
round (x) |
数値 |
数値 |
四捨五入 |
abs (x) |
数値 |
数値 |
絶対値 |
length (x) |
文字列または配列 |
数値 |
文字列の長さ(文字数)または配列の長さ(要素数) |
isset (x) |
任意 |
数値 |
引数が等しい場合は1、等しくない場合は0です。Null同士の比較は等しいとみなされます。 |
equals (a,b) |
スカラー |
数値 |
引数が等しい場合は1、等しくない場合は0です。Null同士の比較は等しいとみなされます。 |
substr (string, start)または substr (string, start, length) |
文字列、数値、数値 |
文字列 |
部分文字列 - 負の開始値は末尾からカウントされます。 |
trimleft (string, start)または trimleft (string, start, length) |
文字列、数値、数値 |
文字列 |
左からの部分文字列 |
trimright (string, start)または trimright (string, start, length) |
文字列、数値、数値 |
文字列 |
右からの部分文字列 |
chartonumber (string) |
文字列 |
数値 |
文字列の最初の文字を数値コードに変換します。文字列が空の場合、結果はnullです。 |
indexof (string, sub)または indexof (string, sub, start) |
文字列、数値、数値 |
数値 |
startから開始して、文字列中の部分文字列の最初の索引を検出します。検出されない場合、結果は0です。 |
upper (string) |
文字列 |
文字列 |
大文字 |
lower (string) |
文字列 |
文字列 |
小文字 |
stringify (x) |
文字列または数値 |
文字列 |
数値または文字列を格納用の文字列に変換します。 |
digest (x) |
文字列または数値 |
文字列 |
引数からダイジェストを生成します。 |
format (num)またはformatdate (num, format) |
数値、文字列 |
文字列 |
デフォルトまたは提供された数値書式を使用して数値の書式を設定します(java.text.DecimalFormatを参照)。 |
parsedate (string)またはparsedate (string, format) |
文字列、文字列 |
数値 |
デフォルトまたはサプライヤ日付書式を使用して日付をパースします。パースに失敗した場合、結果はnullです。 |
soundex (string) |
文字列 |
文字列 |
Soundex |
refinedsoundex (string) |
文字列 |
文字列 |
調整されたSoundex |
metaphone (string) |
文字列 |
文字列 |
基本的なmetaphone |
doublemetaphone (string)またはdoublemetaphone (string, length) |
文字列、数値 |
文字列 |
オプションの長さ付き(デフォルトは12)のMetaphone |
regexsplit (string, regex)またはregexsplit (string, regex, limit) |
文字列、文字列、数値 |
文字列配列 |
regexを使用して配列に分割します。java.lang.String.splitを参照してください。 |
regexreplace (string, regex, replace) |
文字列、文字列、文字列 |
文字列 |
文字列内のregexのすべての出現を置換部分で置き換えます。 |
trim (string) |
文字列 |
文字列 |
文字列の先頭と末尾からスペース文字を削除します。 |
mult (number, number, ...) |
数値 |
数値 |
すべての引数の積 |
sum (number, number, ...) |
数値 |
数値 |
すべての引数の合計。いずれかがnullの場合、結果はnullになります。 |
zsum (number, number, ...) |
数値 |
数値 |
すべての引数の合計であり、nullはゼロとして処理されます。 |
concat (string, string, ...) |
文字列 |
文字列 |
すべての引数を連結します。 |
concat2 (delimiter, string, string, ...) |
文字列 |
文字列 |
最初の引数をデリミタとして使用して、すべての引数を連結します。 |
concat3 (delimiter, noblanks, string, string, ...) |
文字列、数値、文字列 |
文字列 |
最初の引数をデリミタとして使用して、すべての引数を連結します。2番目の引数がゼロ以外の場合、空白文字列は無視されます。 |
array (value, value, ...) |
任意 |
配列 |
引数から配列を作成します。 |
trim2 (string, code) |
文字列、文字列 |
文字列 |
スペースを左(コード = 'l')、右(コード = 'r')、両方(コード = 'b')またはすべての場所(コード = 'a')から削除します。 |
nodatacheck (string) |
文字列 |
文字列 |
非データ分類。文字列が移入されている場合は'-'、または次のように非データ・コード(aからf)を返します。 a = null b = 空の文字列 c = 制御文字 d = 1つのスペース e = 複数のスペース f = その他の空白文字 |
式は、EDQ内の様々なコンテキストで使用されます。各コンテキストで異なるセットの名称が使用可能です。次に、抜粋したコンテキストをいくつか示します。
式で使用される各名称は、プロセッサに対する入力として選択した属性とマッチする必要があります。マッチ処理では大/小文字が区別されます。属性名に接尾辞(つまり、属性名のピリオドの後の部分)が含まれている場合、接尾辞は無視されます。
属性名が、たとえばスペースが含まれているために有効な式名ではない場合は、@"名称"構文を使用して入力する必要があります。たとえば、属性がaddress line 1 (street)の場合は、次のように入力する必要があります。
@"address line 1 (street)"
多数の標準プロセッサがcom.datanomic.director.runtime.widgets.common.Calculatorクラスを使用して実装されます。これは、プロセッサ・パラメータから(XMLから)式を取得し、入力属性を使用してその式を評価します。
式パラメータをプロセッサの各出力に対して定義する必要があります。IDがNの出力のパラメータ名はexpr.Nです。出力が1つのみの場合は、より簡単な名称であるexprをかわりに使用できます。
式内で、入力属性はiNで表され、このNはXMLからの入力IDです。入力を複数の属性と関連付けることができる場合、その名称は集計コンテキストのみで使用できます。
出力はID順に評価され、初期の出力はoNで表され、このNはXMLからの出力IDです。
さらに、出力式の1箇所以外で使用できる値を格納するために作業式を定義できます。これらの作業式は、すべての出力式より前に評価されます。作業式のパラメータ名は、expr.t1、expr.t2などです。
プロセッサのオプションも、オプションの名称を使用するのみでカリキュレータ式で使用できます。
例
<parameters>
<parameter name="expr">upper(i1)</parameter>
</parameters>
<parameters>
<parameter name="expr">concat2(separator, i1)</parameter>
</parameters>
「separator」プロパティの使用方法に注意してください。
<parameters>
<parameter name="expr.o1">side == 'l' ? trimleft(i1, start, length) : trimright(i1, start, length)</parameter>
</parameters>
<parameters>
<parameter name="expr.t1">fromend ?(length(i1) - index) + 1 : index</parameter>
<parameter name="expr.o1">i1[t1]</parameter>
</parameters>
<parameters>
<parameter name="expr.o1">regexreplace(i1, regex, replace)</parameter>
<parameter name="expr.o2">o1 != i1 ?'Y' : 'N'</parameter>
</parameters>
この場合、最初の式で置換が実行され、2番目の式で「success」フラグが計算されます。
条件式
条件式は次の構文を使用して指定できます。
a ? b : c
結果は、aがtrueの場合はb、それ以外の場合はcです。
イテレータ式
イテレータ式は、SumまたはConcatenateなどの集計関数で使用するための特別な機能です。
構文は次のとおりです。
{a : expr}
ここで、aは配列または複数属性の名称(任意の数の実際の属性が割り当てられている1つの入力属性)であり、exprはaを含む式です。式は名称内の後続の各値で置換されたaを使用して評価され、結果は集計関数に提供されます。
これを説明する最良の方法として、例をいくつか示します。
例1
sum({ a : a ^ 2 })
これは、a内のすべての要素の二乗を合計します。
例2
sum( { a : a < 0 ? 1 : 0 })
これは、a内の負であるすべての要素をカウントします。
例3
sum({ i1 : nodatacheck(i1) = '-'}) > 0 ?'Y' : 'N'
移入されたi1(入力属性1)の要素をカウントし、データが含まれている場合はY、すべてが非データの場合はNになります。
Oracle (R) Enterprise Data Qualityオンライン・ヘルプ バージョン8.1
Copyright (C) 2006,2011 Oracle and/or its affiliates.All rights reserved.