0 / 0
資料の 英語版 に戻る
ルール・ロジックまたはルール出力のビルディング・ブロック
最終更新: 2024年12月13日
ルール・ロジックまたはルール出力のビルディング・ブロック

論理式を使用して、データ品質定義のルール・ロジック、またはデータ品質ルールの出力表の列の内容を定義します。

これらの論理式は、ワードや用語などの変数が、指定された条件またはチェック・タイプに基づいて評価される基本構文に従います。

ルール式は、以下のタイプのエレメントで構成できます。

各ルール式は、少なくとも 1 つのチェックで構成され、さまざまなチェックを組み合わせることができます。 また、提供されている サンプル を参照して、式の使用方法を確認してください。

変数とリテラル

変数およびリテラルは、チェック、演算、および一般、日付または時刻、数学、およびストリング・エレメントと結合するエレメントです。 データ品質定義からルールを作成するときに、論理変数を物理データ・ソースにバインドします。 以下のタイプを選択できます。

表 1. 変数とリテラル
要素 説明
var 論理変数。 変数名には大/小文字の区別はありません。 Var1var1 は同じ変数を参照します。 名前には、以下の文字を含めることができます。
英字
文字カテゴリーに属する Unicode 文字
数字
下線 (_)
疑問符 (?)
ドル記号 ($)
変数名の先頭文字は英字でなければなりません。 名前にピリオドとスペースを含めることはできません。
0.123 数値です。
'value' 単一引用符で囲む必要がある文字または文字と数字のストリング。 ストリングに単一引用符が含まれている場合は、単一引用符の前に円記号 (¥) を付けます。 ストリングに円記号が含まれる場合は、円記号の前に もう 1 つ円記号を付けてください。
null NULL 値を検査します。
{value1,value2} コンマで区切られた値のリスト。

ロジック

ロジック・ブロックをチェック・ロジックと結合します。 基本的なロジックは、 field1 existsなどの単一チェックです。 このロジックを拡張するには、条件を追加し、演算子を使用して条件を結合します。 式の一部を括弧で囲んで、優先順位を指定することができます。 marital_status='married' and (age<18 or age>100)(marital_status='married' and age<18) or age>100 とは異なります。

表 2.Logic
ブロック・エレメント 説明
[] ではない ロジック 式を否定します。
not (ucase(PrimaryName) contains 'TEST')
[] または [] logic1 または logic2 logic1 または logic2 のいずれかが真でなければなりません。
UnhandledNameData not exists OR len(trim(UnhandledNameData)) = 0
[] AND [] logic1 および logic2 logic1logic2 の両方が真でなければなりません。
IF Field1 exists AND len(trim(Field1)) <> 0 THEN Field1 is_numeric
If [] Then [] check1 の場合、 check2 条件式:
IF NamePrefix exists THEN len(trim(NamePrefix)) > 1
If [] Then [] Else [] if check1 then check2 else check2 代替パスを使用する条件式:
if age >= 18 then credit_card exists else (not credit_card exists)

検査

さまざまな条件 (論理比較、マッチング、オカレンス) の検査を指定します。 チェックは、ブール結果に評価される式の一部です。

論理比較

表 3. 論理比較
ブロック・エレメント 説明
[ ] < [ ] x < 最初の値が 2 番目の値より小さいかどうかを検査します。
[ ] <= [ ] x < = y 最初の値が 2 番目の値以下であるかどうかを検査します。
[ ] <> [ ] x <> y 最初の値が 2 番目の値と等しくないかどうかを検査します。
[ ] = [ ] x = y 最初の値が 2 番目の値と等しいかどうかを検査します。 ブール比較の場合は、2 番目の値として 0 または 1 を使用します。
[ ] > [ ] x > Y 最初の値が 2 番目の値より大きいかどうかを検査します。
[ ] >= [ ] x > = y 最初の値が 2 番目の値以上であるかどうかを検査します。

ソース・データと参照データのデータ・タイプは互換でなければなりません。 スカラー関数、算術演算、および変数で構成される式をソース・データとして使用できます。 式は、文字データ・タイプまたはストリング・データ・タイプに評価される必要があります。

ストリング・データの場合、論理比較では大/小文字が区別され、検査する値の末尾のスペースはすべて無視されます。 検査する値の先頭のスペースは無視されません。 追加のスペースまたは文字、あるいは大文字と小文字の値の違いにより、検証が正常に行われない場合があります。 トリミング および 変更 を使用して、値を標準化できます。

一致

表 4. 一致
ブロック・エレメント 説明
[] にサブストリング [] が含まれています xy を含む 指定したサブストリングが最初の値に含まれているかどうかを検査します。
注:
包含検査では大/小文字が区別されます。
ソース・データと参照データは両方ともストリングでなければなりません。
ストリングがハードコーディングされたリテラルである場合は、引用符が必要です。
ソース・データと参照データの両方とも、スカラー関数の変数または結果にすることができます。
スカラー関数、算術演算、および変数で構成される式をソース・データとして使用できます。 これを行う場合には、各式が、必ず文字またはストリングのデータ・タイプに評価されるようにしてください。
[] は存在します x 個あります 値が存在するかどうかを検査します。
[] は参照列 [] に存在します x in_reference_column y 指定された参照列に最初の値が存在するかどうかを検査します。 ソース・データと参照データには互換性のあるデータ・タイプが必要です。
[] は、[] の形式を使用した日付です。 x is_date 最初の値が指定された形式の日付であるかどうかを検査します。 許可される日付形式を参照してください。 式を手動で構成する場合は、フォーマットを単一引用符で囲んでください。
[] は参照リストにあります [] x in_reference_list y 最初の値が指定された参照リストにあるかどうかを検査します。 ソース・データと参照データには互換性のあるデータ・タイプが必要です。
[] は数値です x is_numeric 値が数値であるかどうかを検査します。 このチェックは、フォーマットされていない数値、またはロケール固有の方法 (「100,000.00」など) でフォーマットされた数値を受け入れます。 デフォルトでは、現行ロケールが使用されます。
[] はデータ・クラス [] と一致します x matches_dataclass y
特定のデータ・クラスのクラス・コードを検索するには、 IBM Knowledge Catalog API GET /v3/data_classes/{artifact_id}/versions/{version_id} を使用します。 データ・クラスの URLで、呼び出しのアーティファクトとバージョンIDを見つけることができます。 クラス・コードは、応答の entity セクションにあります。
この検査は、値ベースのデータ・クラスでのみ使用できます。 このようなデータ・クラスでは、 「概要」 タブの 「データ・マッチング」 セクションに、コードのスコープとして 「値」 が表示されます。 事前定義データ・クラスの詳細でスコープ情報を確認することもできます。
[] はフォーマット [] と一致します x matches_format y 最初の値が指定された形式と一致するかどうかを検査します。 パターンは、それぞれの特定の文字位置で何が受け入れられるかを明示的に定義します。 パターンを作成するには、次の演算子を使用できます。
任意の大文字を表す「A」
任意の小文字を表す「a」
任意の 0 から 9 桁の数字を表す「9」
任意の英数字を表す「x」。
CJKV (中国語、日本語、韓国語、またはベトナム語) の場合は、Unicode パターンで定義されているとおりです。

ソース・データは文字データ・タイプでなければなりません。
[] は正規表現 [] と一致します x matches_regex y 最初の値が正規表現で指定されたパターンと一致するかどうかを検査します。 Perl 正規表現ライブラリーは、これらのタイプの評価に使用されます。

発生件数

表 5. 発生件数
要素 説明
[] は固有 x 固有 値が列内で固有であるかどうかを検査します。
[] occurs [] time (s) x 発生 y 最初の値が指定された回数だけ列に出現するかどうかを検査します。
[] は少なくとも [] 回発生します x オカレンス> = y 指定された回数以上、最初の値が列に出現するかどうかを検査します。
[] は最大 [] 回発生します x 発生 < = y 指定された回数を上限として、最初の値が列に出現するかどうかを検査します。
[] は [] 時間未満で発生しています x 発生 < y 最初の値が、指定された回数より少ない回数、列に出現するかどうかを検査します。
[] が [] 回を超えて発生しています x occurs> y 指定された回数を超えて最初の値が列に出現するかどうかを検査します。

これらの検査は、ソース列の集約の計算を暗黙指定します。 このような操作は、単一レコードのみをテストするチェックよりも実行時間が長くなる可能性があります。

操作

操作エレメントを検査ロジックと結合します。 変数とリテラル、一般エレメント、日時、数学、およびストリング・エレメントを演算エレメントとともに使用します。

テーブル6。 操作
要素 説明
X + Y 最初の値を 2 番目の値に加算します。
x - 「y」 最初の値から 2 番目の値を減算します。
X * Y 指定された値を乗算します。
X / Y 指定された値を除算します。
X % Y 最初の数値を被除数として使用し、2 番目の数値を除数として使用します。 モジュロは、最初の数値を 2 番目の数値で除算した余りです。 例えば、 7 % 2 は 1 に計算されます。
x ^ y 数値の指数値です。 例えば、 5 ^ 3 は 5 の 3 乗 (または 555) であり、これは 125 に相当します。

日付と時刻

日時エレメントをチェック・ロジックと組み合わせることができます。

有効な日付形式

区切り文字なし ダッシュ区切り スラッシュ区切り ドット区切り
%yyyy%mm%d日 %yyyy-%mm-%d日 %yyyy/%mm/%d日 %yyyy. %mm.%d日
%yy%mm%d日 %yy-%mm-%dd %yy/%mm/%d日 %yy. %mm.%d日
%mm%d日 %yyyy %mm-%d日-%yyyy %mm/%d日/%yyyy %mm.%d日 %yyyy
%mm%dd%yy %mm-%dd-%yy %mm/%d日/%yy %mm.%d日 %yy
%yyyy%dd%mm %yyyy-%d日-%mm %yyyy/%d日/%mm %yyyy.%d日 %mm
%yy%dd%mm %yy-%dd-%mm %yy/%d日/%mm %yy.%d日 %mm
%d日 %mm%yyyy %d日-%mm-%yyyy %d日/%mm/%yyyy %d日 %mm. %yyyy
%d日 %mm%yy %dd-%mm-%yy %d日/%mm/%yy %d日 %mm. %yy

変換

テーブル7。 変換
要素 説明
[] をフォーマット [] から別のフォーマット [] に変換します convertdate (xyz) 最初の値を指定されたソース形式から指定されたターゲット形式に変換します。
[] をグレゴリオ日付に変換 julianDayToGregorian(x) 指定されたユリウス形式の日付をグレゴリオ形式に変換します。
[] をユリウス形式に変換 gregorianToJulianDay(x) グレゴリオ暦形式で指定された日付をユリウス暦形式に変換します。
format [] を使用して [] を日付に変換します datevalue (xy) 最初の値を、指定された形式の日付に変換します。
フォーマット [] を使用して [] を時刻に変換します timevalue (xy) 最初の値を、指定された形式の時刻に変換します。
format [] を使用して [] をタイム・スタンプに変換します timestampvalue (xy) 指定された形式を使用して、最初の値をタイム・スタンプに変換します。

フォーマット

表 8. フォーマット
要素 説明
現在日付 日付 () コンピューターのシステム日付を Date 値として返します。
現在時刻 時間 () コンピューターのシステム時刻を Time 値として返します。
現在のタイム・スタンプ タイム・スタンプ () コンピューターからシステム時刻をタイム・スタンプ値として返します。
日付の年 [] 年 (x) 指定された日付の年を表す数値を戻します。
日付の月 [] 月 (x) 指定された日付の月を表す数値を戻します。
日付 [] 日 (x) 指定された日付の月の日を表す数値を戻します。
日付 [] の曜日 曜日 (x) 指定された日付の曜日を表す数値を戻します。ここで、1 は日曜日です。
時間 [] 時間 (x) 指定された時刻値の時間数を表す数値を戻します。
分 [] 分 (x) 指定された時刻値の分を表す数値を戻します。
秒 [] 秒 (x) 指定された時間値の秒とミリ秒を表す数値を戻します。

関数

表 9. 関数
要素 説明
[] カ月を date [] に追加 addmonthsdate (xy) 指定された月数を指定された日付に加算します。
[] カ月をタイム・スタンプ [] に追加 addmonthstimestamp (xy) 指定された月数を指定されたタイム・スタンプに加算します。
日付 [] と [] の間の日数 datediff (x, y) 指定された 2 つの日付の間の日数を返します。
format [] を使用して日付 [] を丸める round_date (xy) 指定された形式を使用して日付値を丸めます。
format [] を使用した round time [] round_time (xy) 指定された形式を使用して時刻値を丸めます。
format [] を使用してタイム・スタンプを丸める round_timestamp (xy) 指定された形式を使用してタイム・スタンプ値を丸めます。
時刻 [] と [] の時差 timediff (xy) 指定された 2 つの時間の差を時間数、分数、および秒数で返します。 最初の値は、2 つの時刻の早い方です。 2 番目の値は、2 つの時刻の遅い方です。 戻り値は、時刻値です。
format [] を使用して日付 [] を切り捨てます trunc_date (xy) 指定された形式を使用して日付を切り捨てます。 最初の値は、変数 (日付タイプの列にバインドされている必要がある)、または日付を返す式または関数でなければなりません。 形式の値は、ストリング・フォーマットのストリング・リテラル、またはストリング列またはストリング・リテラル値にバインドされた変数のいずれかでなければなりません。
format [] を使用して時刻 [] を切り捨てます trunc_time (xy) 指定された形式を使用して時刻を切り捨てます。 最初の値は、変数 (時刻タイプの列にバインドされている必要がある)、または時刻を返す式または関数でなければなりません。 形式の値は、ストリング・フォーマットのストリング・リテラル、またはストリング列またはストリング・リテラル値にバインドされた変数のいずれかでなければなりません。
format [] を使用してタイム・スタンプ [] を切り捨てます trunc_timestamp (xy) 指定された形式を使用してタイム・スタンプを切り捨てます。 最初の値は、変数 (タイム・スタンプ型の列にバインドされている必要があります)、またはタイム・スタンプを返す式または関数のいずれかでなければなりません。 形式の値は、ストリング・フォーマットのストリング・リテラル、またはストリング列またはストリング・リテラル値にバインドされた変数のいずれかでなければなりません。

一般

一般要素は、検査、演算、および数学、ストリング、および日時の各要素と組み合わせることができます。

表 10. 一般
要素 説明
[] に一致するデータ・クラス dataclassesof (x) 指定されたデータ・クラスと一致するデータ内のデータ・クラスを検索します。 この値は通常、分類する値を持つ列にバインドされる変数です。
頻度 [] オカレンス (x) 指定された値の頻度を検索します。
参照キー [] および参照値 [] から [] を検索します lookup (x, y, z) 値をルックアップ・テーブル内の対応する値に置き換えます。 この関数を実行するには、値のリストと、最初の列に関連したデータが含まれている対応する列から成るルックアップ・テーブルが必要です。 例えば、探しているオリジナルの値が製品コードなどのキーを含む列に含まれている場合、関連するルックアップ・テーブルは可能なすべてのキー値をリストしている 1 つの列と、キーの代替として使用する対応する値を含む別の列を含みます。 この関数は通常、データ・ソース内のさまざまな場所で発生する値を表すために内部コードが使用されるシステムで使用されます。
注: この関数の最初のパラメーターは、検索する値です。 2 番目のパラメーターは、ルックアップ・テーブル内のキーを含む参照列にバインドされている必要があります。 3 番目のパラメーターは、ルックアップ・テーブル内の値を含む参照列にバインドされている必要があります。 両方の参照列は、同じ物理表に存在している必要があります。 この関数の結果は、最初のパラメーターとして指定されたキーに対応するルックアップ・テーブルの値です。
[] でグループ化された、NULL ではない [] 値の数 count_not_null (xy) 列内の NULL (非特殊) 値の数を検索します。 最初の値には、カウントする列にバインドされた変数が含まれている必要があります。 2 番目の値は、オプションのグループ化列を指定します。 これを指定すると、関数は、2 番目の列の値が同じであるすべての行について、最初の列の NULL 値のカウントを返します。
[] でグループ化された [] の個別値の数 カウント (xy) 列内の特殊値の数を検索します。 最初の値には、カウントする列にバインドされた変数が含まれている必要があります。 2 番目の値は、オプションのグループ化列を指定します。 これを指定すると、関数は、2 番目の列の値が同じであるすべての行について、最初の列の個別値のカウントを返します。
[] の欠落値を [] に置換 coalesce (xy) 最初の値の NULL 列を探し、それを 2 番目の値に置き換えます。 指定した最初の値が NULL でない場合、その値は置換されません。

数学

数理要素をチェック・ロジックと組み合わせることができます。

表 11. 数学
要素 説明
[] の絶対値 abs (x) 指定された数値の絶対値を返します。 例えば、[-13] の絶対値として 13 が返されます。
[] でグループ化された [] の平均値 avg (xy) 指定された値でグループ化された、指定された数値列の平均値を返す集約関数。
[] の指数値 exp (x) 指定された数値の指数値を戻します。
[] でグループ化された [] の最大値 max (xy) 指定された数値列で検出された最大値を、指定された値でグループ化して返す集約関数。 最初の値には、列または変数 (ルールの使用時に列にバインドされている必要がある)、あるいは少なくとも 1 つの変数が含まれている式を指定できます。
[] でグループ化された [] の最小値 min (xy) 指定された数値列で検出された最小値を、指定された値でグループ化して返す集約関数。
[] でグループ化された正規化値 [] 標準化 (x, y) 列内の値を、列の平均値を中心とする値の標準偏差の数に正規化します。 正規化された値は、= (value-mean)/stddev の式を使用して計算されます。 グループ化の基準として値を指定した場合、使用される平均/標準偏差は、列全体の値ではなく、グループ化の基準として同じ値を持つすべての値の 1 つです。 例えば、列の平均値が 10 で標準偏差が 2 の場合、12 の正規化値は 1.0 (=mean + 1stddev) になります。 6 の正規化された値は -2.0 (=mean-2stddev) です。
丸数 [] 保持 [] 小数部 round (xy) 指定した数値を丸めた値を返します。 オプションの decimals パラメーターでは、丸めた後の小数点の右側の桁数を指定します。 指定しなかった場合、decimals の値は 0 になります。
数値のスケール [] スケール (x*) 小数点の右側にある桁数を戻します。 例えば、2.3456789 の小数点以下の桁数を判別するものとします。 小数点以下の桁数は 7 です。
[] の平方根 sqrt (x) 指定された数値の平方根を戻します。
[] でグループ化された [] の標準偏差 標準偏差 (x) 指定された値でグループ化された、指定された数値列の標準偏差を計算する集約関数。
[] でグループ化された [] の合計 sum (x, y) 指定された数値列内のすべての値の合計を返す集約関数。
小数部の切り捨て [] 保持 [] 小数部 trunc (xy) 指定された数値の切り捨てられた値を戻します。 keeping パラメーターは、切り捨てる値です。 オプションの decimals パラメーターでは、切り捨て後の小数点の右側の桁数を指定します。 指定しなかった場合、decimals の値は 0 になります。

ストリング

ストリング・エレメントをチェック・ロジックと組み合わせることができます。

ID

表 12. ID
要素 説明
文字の ASCII コード [] ASCII (x) 文字値に対応する ASCII 文字セット値を返します。
ASCII コードの文字 [] 文字 (x) 指定された ASCII 文字の文字値を戻します。
ストリング [] の [] 倍を連結します str (xy) 指定された回数だけ指定された値を連結するストリングを生成します。 例えば、 concatenate [5] times the string [AB]を指定すると、データ品質ルールは ABABABABAB を返します。
[] の長さ 長さ (x) 指定されたストリング内の合計文字数 (つまり、長さ) を戻します。
[] を数値として解析します 値 (x) ストリングを入力として受け取り、それを数値として解析しようとします。 例えば、12.34 を指定すると、結果は数値 12.34 になります。
ストリング [] 内の [] の位置 index (x, y) 別のストリング内のサブストリングの最初のオカレンスの索引を戻します。 サブストリングが検出された場合、その出現の位置インデックス (先頭文字の位置を 0 とする) を返します。検出されなかった場合には -1 を返します。

変更

表 13. 変更
要素 説明
format [] を使用して [] をストリングに変換します tostring (x, y) 指定された値を、指定された形式のストリングに変換します。
[] の最初の [] 文字 左 (xy) 指定されたストリングの最初の n 文字を返します。n は返す文字数です。
[] の最後の [] 文字 右 (xy) 指定されたストリングの最後の n 文字を戻します。n は戻す文字数です。
[] の小文字 lcase (x) 指定されたストリング内のすべての文字を小文字に変換します。
位置 [] で始まり、長さ [] の [] のサブストリング サブストリング (xyz) 指定されたストリングの、指定された位置から、指定された長さのサブストリングを戻します。 開始位置に指定する値は、取得する最初の文字 (この文字も含む) のインデックスです。 1 は、ストリング内の最初の文字のインデックスです。 例えば、各製品コードの 3 桁 (実際の文字位置は 4 から 6) の値を使用して、その製品を担当する部門を判別できます。
[] の大文字 ucase (x) 指定されたストリング内のすべての文字を大文字に変換します。

パディング

表 14. パディング
要素 説明
[] の後にスペースを追加 rpad (xy) 指定されたストリングの後に、指定された数のスペースを追加します。
[] の前にスペースを追加し、[] の後にスペースを追加します パッド (xyz) 指定されたストリングの前後に、指定された数のスペースを追加します。
[] スペースを [] の前に挿入 lpad (xy) 指定された数のスペースを指定されたストリングの先頭に追加します。

トリミング

表 15. トリミング
要素 説明
[] の左トリム ltrim (x) 指定されたストリングの先頭にあるすべてのスペースを削除します。
右トリム [] rtrim (x) 指定されたストリングの末尾にあるすべてのスペースを削除します。
トリム [] トリム (x) 指定されたストリングの先頭と末尾にあるすべてのスペースを削除します。

もっと見る

親トピック: データ品質定義の管理

生成 AI の検索と回答
これらの回答は、製品資料の内容に基づいて、 watsonx.ai のラージ言語モデルによって生成されます。 詳細