ユーザー定義関数(UDF)またはマクロ
データ拡張スクリプトのユーザー定義関数(UDF)またはマクロを使用すると、データ拡張スクリプトによって提供される組込み関数を補完するカスタム関数を作成できます。
構文
macro_declaration ::= DEFINE FUNCTION macro_name '(' formal_parameter[,formal_parameter]... ')'
value_returned_expression
END
例1:次のUDFでは、日付列の書式が
yyyyMMddに変更されます。DEFINE FUNCTION formatDate(col)
DATE_FORMAT(col, 'yyyyMMdd')
END
例2:次のUDFは、複数の入力パラメータの使用方法を示しています。
DEFINE FUNCTION getCurrencyRate(currency, currencyRate)
CASE WHEN currency = $VAR_PARAM_GLOBAL_CURRENCY$ THEN 1 ELSE currencyRate END
ENDUDFの使用
データ拡張スクリプトでUDFを使用するには、まず関数を定義してから、定義済関数をコールする必要があります。
UDFは、次の2つの方法で定義できます。
- 外部:
.funcファイルにUDFを定義し、include_definitionを使用して.funcファイルを含めることで、現在のロック・アプリケーションでコールできます。 - 内部: ロコード・プログラム自体でUDFを定義できます
UDFは、次の方法で呼び出すことができます。
- 単一列のUDFコール:
macro_call ::= macro_name '(' { table_name.column_name | table-name [column_name] | THIS.column_name | THIS [column_name] } ')' - 列のリストでのUDFコール:
macro-call ::= macro_name '(' variable_name ')' FOR variable_name IN table-name [EXCLUDE] '[' column_name [, column_name]⦠']'
ノート:
- データ拡張スクリプトでは、単一パラメータUDF関数の列のリストに対するUDFコールがサポートされています。
- UDFの
EXCLUDEオプションを使用すると、UDFの適用時にデータセットの特定の要素を除外できます。
例
- 外部で定義されたUDF
UDFは、最初にData Augmentation Scripts Projectディレクトリ内の
myFunctions.funcファイルで定義し、後でmain.hrf fileで使用します。myFunctions.func:DEFINE FUNCTION toVc(col) CAST(col AS VARCHAR2(400)) ENDmain.hrf:INCLUDE FUNCTION "myFunctions.func" DEFINE VERSIONED DATASET CUSTOMERS_D ROWSOURCE CUSTOMERS WHERE CUSTOMERS.CUST_ID=1; THIS = CUSTOMERS; THIS[CUST_POSTAL_CODE_STRING] = toVc(CUSTOMERS.CUST_POSTAL_CODE); PRIMARYKEY[CUST_ID]; END - 内部で定義されたUDFUDFは、データ拡張スクリプト・プログラム内の
.hrf自体で定義できます。DEFINE FUNCTION toVc(col) CAST(col AS VARCHAR2(400)) END DEFINE VERSIONED DATASET CUSTOMERS_D ROWSOURCE CUSTOMERS WHERE CUSTOMERS.CUST_ID=1; THIS = CUSTOMERS; THIS[CUST_POSTAL_CODE_STRING] = toVc(CUSTOMERS.CUST_POSTAL_CODE); PRIMARYKEY[CUST_ID]; END