機械翻訳について

ユーザー定義関数(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
END

UDFの使用

データ拡張スクリプトで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))
    END
    
    main.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
    
  • 内部で定義されたUDF
    UDFは、データ拡張スクリプト・プログラム内の.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