ユーザー定義関数をData Effectorから呼び出すことで、より自由なデータ加工が実現できます。
ユーザー定義関数の呼出しには、call関数を使用します。
ユーザー定義関数の定義は、以下のパラメタで設定します。
基本コマンド利用時は、各動作環境ファイルのFunctionパラメタ
C API利用時は、AsisLoadFunction関数とAsisUnloadFunction関数
統合コマンド利用時は、統合定義ファイルのPlug-inタグ
定義したユーザー定義関数を呼び出すcall関数は、以下の条件式で指定します。
機能名 | 条件式の種類 | 指定 |
---|---|---|
抽出機能 | 検索式 | - |
リターン式 | - | |
連結機能 | 連結条件式 | ○ |
リターン式 | ○ | |
仮想項目機能 | ○ | |
集計機能 | グループ式 | ○ |
集計式 | ○ | |
仮想項目機能 | ○ | |
ソート機能 | ソート式 | ○ |
リターン式 | ○ | |
仮想項目機能 | ○ |
○:指定可能、-:指定不可
以下に、連結機能のshunreplaceコマンドを使って、ユーザー定義関数を呼び出す例を示します。
入力データ
"name","sex","birth","address","work" "井上 一郎","男","19590101","静岡県・・・","会社員" "高島 一郎","男","19550708","静岡県・・・","医者" "田中 刑事","男","19800805","静岡県・・・","公務員" |
例
個人情報を保護するため、入力データのnameとaddressを暗号化します。
・ライブラリパス:C:\lib\defunc.dll
・ユーザー定義関数名:defunc
・暗号化処理を実装したC言語関数名:Defunc
動作条件
replace用 動作環境ファイル | # ユーザー定義関数の指定 Function { library( "C:\lib\defunc.dll") {"defunc" "Defunc" }} |
連結条件
リターン式 | # リターン式で暗号化処理のユーザー定義関数を呼び出す
OutputDef { call( "defunc", $address;$name ) 暗号化処理, $sex 性別, $work 職業 }
|
結果
暗号化処理,性別,職業 XXXXXXXXXX,"男","会社員" YYYYYYYYYY,"男","医者" ZZZZZZZZZZ,"男","公務員" |
参照
call関数の詳細については、“リファレンス集”の“ call関数”を参照してください。
ユーザー定義関数の作成例については、“リファレンス集”の“ユーザー定義関数の作成例”を参照してください。
注意
ユーザー定義関数は参照透過性があるものとみなされます。ユーザー定義関数に同じ引数を指定した場合は同じ結果が返ってくるようにしてください。
参照透過性のある関数とは、以下の条件を満たす関数です。
同じ条件で必ず同じ結果が得られること
他のいかなる機能の結果にも影響を与えないこと
ユーザー定義関数にデータ加工以外の副作用を持たせると、意図しない結果となる場合があります。
データ加工以外の副作用として、いくつかの例を以下に示します。
ユーザー定義関数内でI/Oを伴う処理
データベースにアクセスする処理
値を累積加算した結果を返す破壊的代入