ユーザーガイド > プロシージャ > SQLスクリプトの操作 > カスタム関数のネイティブデータソースへのプッシュ
 
カスタム関数のネイティブデータソースへのプッシュ
カスタム関数を、TDVクエリーエンジンではなく、ネイティブデータソースによって強制的に実行することができます。カスタム関数にできるSQLスクリプトの種類の説明については、「プロシージャのカスタム関数へのプロモート」を参照してください。
SQLスクリプトをカスタム関数にプロモートして、ネイティブデータソースに常にプッシュされるようにするには、以下の手順で説明するように[Native Only(ネイティブのみ)]チェックボックスを使用します。
注意: [Native Only(ネイティブのみ)]チェックボックスをオンにしなくても、場合により、TDVクエリーエンジンによって、カスタム関数がデータソースにプッシュされることがあります。このチェックボックスは、カスタム関数がプッシュされることを保証するために使用できます。
カスタム関数をネイティブデータソースにプッシュするには
1.管理者としてログインするか、管理者に次の手順を実行してもらいます。
2.1つのスカラー出力を持つSQLスクリプトを見つけて開き、[Native Only(ネイティブのみ)]チェックボックスをオンにします。
3.Studioで、[Administration(管理)] > [Custom Functions(カスタム関数)]メニューを使用します。
候補となるSQLスクリプトの数が多い場合、Studioにリストが表示されるまで時間がかかる場合があります。
4.カスタム関数にプロモートするプロシージャを選択します。
5.[OK]をクリックします。
6.次のガイドラインとヒントを使用して、変更するアダプターファイルを決定します。
/conf/adaptersの下で行われた変更は、修正プログラムの適用後もそのまま残され、すべてのCARファイルに含まれます。
これは、/conf/adapters/customと/conf/adapters/systemでも同様です。
/conf/adapters/systemの下のシステムアダプターに加えられた変更は、もう少し編集が必要になる場合があります。たとえば、Oracleの11gには<common:attribute> </common:attribute>を定義する必要があります。
注意: カスタム関数をデータソースのすべてのバージョンにプッシュする場合は、そのカスタム関数の名前と署名をそのデータソースの「汎用」機能ファイルに追加します。
/apps/dlmの下では変更を加えないでください。
カスタマイズを管理するためにカスタムアダプターを作成することを選択できますが、不足している機能を追加する場合は推奨されません。
7.カスタマイズする機能ファイルを見つけます。
たとえば、カスタムのNetezzaデータソース用のカスタム関数ss10を追加するには、次のファイルを開きます。
<TDV_install_dir>\conf\adapters\system\<netezza_ver>\<netezza>.xml
 
8.テキストエディターでXMLを開き、カスタム関数のname、type、value、configIDを追加します。たとえば、カスタム関数ss10を追加するには、次のようなXMLを追加します。
<common:attribute xmlns:common="http://www.compositesw.com/services/system/util/common">
<common:name>/custom/ss10(~string,~string)</common:name>
<common:type>STRING</common:type>
<common:value>ss10($1,$2)</common:value>
<common:configID>ss10(~string,~string)</common:configID>
</common:attribute>
 
9.TDV Serverを再起動します。
カスタム関数は、呼び出されると、実行できるようにネイティブデータソースにプッシュされます。たとえば、ss10がNetezzaテーブルを含むSQLステートメント内で呼び出されると、この関数を実行できるようにNetezzaデータソースにプッシュされます。