
スクリプトは、関数を呼び出し、ジョブまたはワークフローで値を割り当てるために使用されるシングルユースオブジェクトです。
スクリプト使用
スクリプトには多くのユースケースがあります。以下を含みます。
- ジョブの初期化
- ファイルの存在
- 電子メールアラート
- ステータステーブルのチェックと更新
初期化ステップのデータフローの前にスクリプトを実行して、ジョブの他の部分に渡される値を計算したり、変数に値を割り当てることができます。
スクリプトを実行して関数を実行し、ファイルの存在などをチェックすることができます。これにより、ジョブで条件式を使用して実行パスを決定することができます。
ワークフローおよびデータフローの後にスクリプトを実行して、通知を送信したり、実行情報 (時間など) やデータセットの行数の変更を記録したりすることもできます。
Data Services スクリプト言語
Data Services スクリプト言語を使用すると、変数に値を割り当て、関数を呼び出し、標準の文字列演算子と数学演算子を使用できます。構文は、WHERE 句やスクリプトなどの両方の式で使用できます。
スクリプト文
- 代入文
- 汎用モジュール呼出
- If 文
- While 文
- 式
式は、特定のデータ型の値に評価される定数、演算子、関数、および変数の組み合わせです。スクリプト文内で式を使用するか、データフローオブジェクトに式を追加します。
Basic 構文
Data Services スクリプト言語で式を作成する場合は、以下の基本構文ルールに従います。
- 各文はセミコロン (;) で終わります。
- 変数名はドル記号 ($) で開始します。
- 文字列値は一重引用符 (' ') で囲みます。
- コメントは番号記号 (#) で開始します。
- 関数呼び出しでパラメータを使用しない場合でも、関数呼び出しでパラメータを指定します。
- 式の値を角かっこで置き換えます。次に例を示します。
Print(’The value of the start date is:[sysdate()+5]’);
- 式の値を一重引用符で囲み、中括弧で囲みます。次に例を示します。
$StartDate = sql(’demo_target’, ’SELECT ExtractHigh FROM Job_Execution_Status WHERE JobName = {$JobName}’);
式におけるカラムとテーブル参照の構文
式は、データフローオブジェクト内で使用でき、列名を含めることができます。
Data Services スクリプト言語では、特別な構文なしで列名とテーブル名が認識されます。たとえば、クエリの [マッピング] タブで、start_date 列を関数の入力としてとして指定できますto_char(start_date, ’dd.mm.yyyy’)。
列 start_date は、クエリの入力スキーマに含まれている必要があります。クエリの入力スキーマに同じ名前のカラムが複数ある場合は、カラム名をテーブル名で修飾して、式に含まれるカラムを指定します。たとえば、テーブルステータスの列 start_date をとして示しますstatus.start_date。
SQL 文字列の一部としての列名およびテーブル名には、SQL を評価する RDBMS に基づく特別な構文が必要になる場合があります。たとえば、CUSTOMER テーブルの LAST_NAME 列からすべての行を sql(’oracle_ds’,’select CUSTOMER.LAST_NAME from CUSTOMER’) として選択します。
引用符
引用符、エスケープ文字、後続ブランクがすべて誤って使用されると、スクリプトに悪影響を及ぼす可能性があります。
文字列で使用する引用符のタイプは、識別子と定数のどちらを使用しているかによって異なります。
識別子
- 識別子は、テーブル、列、データフロー、関数などのオブジェクトの名前です。
- 識別子に英数字以外の文字が含まれる場合は、二重引用符を使用します。
- たとえば、文字列 "compute large numbers" には空白が含まれているため、二重引用符を使用します。
定数
- 定数は、計算で使用される固定値です。
- 定数には、以下の 2 つのタイプがあります。
- 文字列定数 (例: 'Hello'、'2007.01.23')
- 数値定数 (2.14 など)
- 文字列定数では一重引用符を使用し、数値定数では引用符を使用しません。
エスケープ文字
文字列内で正しく評価するには、一重引用符やバックスラッシュなどの特殊文字の前にエスケープ文字を付ける必要があります。Data Services では、次の表に示すようにバックスラッシュがエスケープ文字として使用されます。
| 文字 | 例 |
|---|---|
| 一重引用符 (') | 'World\'s Books' |
| バックスラッシュ (\) | 'C:\\temp' |
NULL、空の文字列、末尾の空白
Data Services では、NULL、空の文字列、および後続ブランクを処理するときに ANSI VARCHAR 標準に準拠します。
- 空の文字列 (' ') を NULL 値ではなく長さ 0 の varchar 値として処理します。
- 演算子 Equal (=) および Not Equal (<>) を使用して NULL 値と比較する場合は、FALSE の値を返します。
- NULL 値をテストするための IS NULL 演算子と IS NOT NULL 演算子を提供します。
- すべてのソースからの読み込み時に、後続ブランクを削除するのではなく、通常の文字として扱います。
- トランスフォームおよび関数の比較で末尾の空白を無視します。
空の文字列 (' ') を変数に割り当てると、Data Services では変数の値が長さ 0 の文字列として扱われます。
varchar ではない変数に空の文字列を割り当てると、エラーが発生します。NULL 定数を使用して、NULL 値を任意の型の変数に割り当てます。
以下の式を使用して、列 (COLX) が Null であるかどうかをチェックします。
- COLX は NULL
- COLX が NOT NULL
NULL 値を削除するには、NVL 関数を使用します。Data Services では、データ列の NULL 値はチェックされません。
スクリプト言語の詳細については、デザイナガイドを参照してください。
および参照ガイド