2017-05-12 20 views
0

Teradataの公式ドキュメントを見てきました。Teradata UDFのC言語で

Iは、入力として2つの列を受け付けるテーブル関数(CでUDF ++)を書き込むために予定しており、入力を処理し、std::map< string,string >またはarray of structsに変換し、array of structs/std::map< string,string >として入力を受け付ける他のいくつかの関数に渡します。私の質問は以下のとおりです。

  1. 私はテーブルから2列を渡した場合、どのようにUDFへのTeradataクエリステートメントから列として渡され、どのように私は値を受け入れることができます??新しい一時テーブルの行数を知ることができます??
  2. TBL_BUILD,TBL_PRE_INITなどのような、位相チェックのような文書の付録に記載されている事項は、コードの作成に必須であり、テーブルやその他の目的のために作成されていますか?

答えて

0

テーブルUDFからデータ構造体を返すことはできません。各行について、値を返す列の値を格納する値スタックエントリがあります。また、各値はTeradataで認識できるデータ型でなければなりません。

また、STLライブラリには注意が必要です。実際には、メモリ割り当て/解放を扱うのではなく、代わりにスタックを使用してください。これは、メモリリークやメモリの断片化が発生した場合、随時、サーバーを再起動する必要があります。これは運用システムには適していないためです。

テーブルUDFは各行とフェーズごとに呼び出されるため、データを保存する唯一の方法はコンテキストを経由することです。また、各行の処理に多大な時間を費やしたくない場合は、パフォーマンス上の大きな問題になります。

複雑なメモリ内構造を維持する場合は、テーブル演算子を使用することをお勧めします。