ユーザー定義関数を使用した式の作成
ユーザー定義関数は、トランスフォーメーションまたはフィールド式に追加できます。
式を作成する際は、有効なユーザー定義関数が式エディタに表示されます。式を手動で入力する場合は、各ユーザー定義関数の先頭に:UDFを付けます。
次の図は、式トランスフォーメーションの式エディタでユーザー定義関数を選択した状態を示しています。
ユーザー定義関数を選択すると、式エディタには関数構文が以下の形式で表示されます。
<関数名> (<引数1> as <データ型>, <引数N> as <データ型>)
以下に例を示します。
RemoveSpaces(TextString as string)
式に関数を追加する際、以下のように接頭語として「:UDF」が挿入されます。
:UDF.RemoveSpaces(TextString)
式に関数を追加したら、引数をフィールド名または入出力パラメータに置換します。引数にはテーブル名を含めないでください。次の例に示すように、フィールド名のみを使用します。
:UDF.RemoveSpaces(NAME)
式の作成の詳細については、「タスク」を参照してください。
式の検証時、データ統合はユーザー定義関数を検証しません。式のみを検査します。
ユーザー定義関数のパラメータ化
式変数として設定された入出力パラメータを使用して、式内のユーザー定義関数の全部または一部をパラメータ化できます。
ユーザー定義関数をパラメータ化するには、文字列の入出力パラメータを作成し、[式の変数です]を有効にします。ユーザー定義関数全体をパラメータ化するには、ユーザー定義関数全体の代わりにパラメータを使用します。ユーザー定義関数の一部をパラメータ化するには、ユーザー定義関数の引数の代わりに入出力パラメータを使用します。実行時に、マッピングタスクまたはパラメータファイル内のパラメータを解決します。
入出力パラメータの詳細については、「マッピング」を参照してください。
すべてパラメータ化
式でユーザー定義関数をパラメータ化する場合は、[すべてパラメータ化]を使用します。ユーザー定義関数の代わりに入出力パラメータを使用する場合、パラメータ名では大文字と小文字が区別されます。パラメータを解決するときは、:UDFプレフィックスを含めます。
例えば、入出力パラメータ$$UDFparameterがあり、それを使用してユーザー定義関数をすべてパラメータ化するとします。パラメータファイルでは、次の関数を使用してパラメータを解決します。
$$UDFparameter=:UDF.RemoveSpaces(names)
部分的にパラメータ化
引数のフィールド名をパラメータ化する場合、またはネストになったユーザー定義関数をパラメータ化する場合は、[部分的にパラメータ化]を使用します。ネストになったユーザー定義関数をパラメータ化する場合、関数の引数のパラメータは大文字でなければなりません。ユーザー定義関数を1つネストすることができます。
たとえば、入出力パラメータ$$UDFを作成し、式変数として設定します。式では、次の関数を設定します。
:UDF.RemoveSpaces($$UDF)
パラメータファイルでは、次の関数を使用してパラメータを解決します。
$$UDF=:UDF.Replace_Chars_special(Name)
すべてまたは部分的にパラメータ化
同じ関数内で、[すべてパラメーター化]と[部分的にパラメーター化]の両方を使用できます。ユーザー定義関数と関数の引数をパラメータ化する場合は、[すべてパラメータ化]と[部分的にパラメータ化]の両方を使用します。
例えば、入出力パラメータ$$UDFがあり、それを式で使用して、ユーザー定義関数をすべてパラメータ化するとします。パラメータファイルでは、次の値を使用してパラメータを解決します。
$$UDF=:UDF.Replace_Chars_special($$Field)
$$Field=Name
すべてパラメータ化したユーザー定義関数で、CurrentTaskName、CurrentRunId、またはSESSSTARTTIMEシステム変数を引数として渡す場合は、別の入出力パラメータを使用してシステム変数を渡す必要があります。
例えば、パラメータ化したユーザー定義関数でCurrentTaskNameを使用するとします。入出力パラメータ$$UDFを使用して、関数をすべてパラメータ化します。パラメータファイルでは、次の値を使用してパラメータを解決します。
$$UDF=:UDF.udf_InitcapLtrim($$tasknameparam)
$$tasknameparam='$CurrentTaskName'