17.10 - ユーザーが作成した(定義済みの)マクロの使用 - Parallel Transporter

Teradata® Parallel Transporter リファレンス

Product
Parallel Transporter
Release Number
17.10
Published
2022年2月
Content Type
プログラミング リファレンス
Publication ID
B035-2436-061K-JPN
Language
日本語 (日本)
Last Update
2022-02-11

より効率化を図るため、Streamオペレータでは、実際のDML文に基づいたマクロを作成する代わりに、事前定義マクロの使用もサポートしています。ユーザーが記述した事前定義マクロは、TPT Streamジョブが開始する前にデータベース上に置かれます。 マクロは、マクロが処理するDML文の型(INSERT、UPDATE、DELETE、またはUPSERT)を指定します。

事前定義マクロが使用されると、Streamオペレータはマクロを作成する代わりにこのマクロを直接使用します。 事前定義マクロの使用により、Streamオペレータは、マクロを内部で作成したり削除したりする処理を回避でき、ジョブの実行中にデータベースのデータ ディクショナリを変更することもなくなります。 すべての行が読み込まれた後、ユーザーはマクロを削除するか保持するかを決定する必要があります。 マクロの置かれるデータベースには、EXECUTE MACRO権限が必要です。

Streamオペレータは、EXECUTEコマンドを使用して事前定義マクロをサポートします。事前定義マクロの使用についての詳細は、オブジェクト定義とAPPLY文のEXECUTE文を参照してください。

マクロの作成の詳細については、<Teradata Vantage™ - SQLデータ定義言語 - 詳細トピック, B035-1184>を参照してください。

マクロの実行の詳細については、<Teradata Vantage™ - SQLデータ操作言語, B035-1146>を参照してください。

Streamオペレータでは、Streamオペレータ ジョブを実行するたびに新しいマクロを作成したり削除したりする必要がないため、事前定義マクロを使用すると時間が節約できます。

ユーザー作成のマクロの規則は以下のとおりです。
  • Streamオペレータは、マクロのパラメータ リストが、スキーマによって指定されたリストと一致することを想定しています。
  • このマクロでは、INSERT、UPDATE、DELETE、またはUPSERTのうちの1つのプライマリ インデックス操作を指定します。 次の例のように、サポートされているステートメントがマクロに複数含まれている場合、Streamオペレータによってエラーが通知されます。

定義済みマクロの使用例を以下に示します。

/*********************************************************************/
/* Description: Use the TPT Stream operator to load data into a      */
/*              table via a predefined macro.                        */
/*********************************************************************/
USING CHARACTER SET ASCII
DEFINE JOB LOAD_TABLE_USING_STREAM_OPER
DESCRIPTION 'LOAD TABLE USING STREAM OPERATOR'
(
   DEFINE SCHEMA EMPLOYEE_SCHEMA
   DESCRIPTION 'SAMPLE EMPLOYEE SCHEMA'
   (
      COL1    VARCHAR(5),
      COL2    VARCHAR(5)
   );

   DEFINE OPERATOR DDL_OPERATOR
   DESCRIPTION 'TERADATA PARALLEL TRANSPORTER DDL OPERATOR'
   TYPE DDL
   ATTRIBUTES
   (
      VARCHAR TraceLevel     = 'none',
      VARCHAR PrivateLogName = 'ddloper_log',
      VARCHAR TdpId          = @MyTdpId,
      VARCHAR UserName       = @MyUserName,
      VARCHAR UserPassword   = @MyPassword,
      VARCHAR ErrorList      = '3807'
   );

   DEFINE OPERATOR STREAM_OPERATOR
   DESCRIPTION 'TERADATA PARALLEL TRANSPORTER STREAM OPERATOR'
   TYPE STREAM
   SCHEMA EMPLOYEE_SCHEMA
   ATTRIBUTES
   (
      VARCHAR TraceLevel        = 'none',
      VARCHAR PrivateLogName    = 'streamoper_privatelog',
      VARCHAR TdpId             = @MyTdpId,
      VARCHAR UserName          = @MyUserName,
      VARCHAR UserPassword      = @MyPassword,
      VARCHAR ErrorTable        = 'STREAMOPER_ERRTABLE',
      VARCHAR LogTable          = 'STREAMOPER_LOGTABLE',
      VARCHAR PackMaximum       = 'Yes',
      INTEGER MaxSessions       = 4,
      INTEGER MinSessions       = 4
   );

   DEFINE OPERATOR FILE_READER
   DESCRIPTION 'TERADATA PARALLEL TRANSPORTER DATA CONNECTOR OPERATOR'
   TYPE DATACONNECTOR PRODUCER
   SCHEMA EMPLOYEE_SCHEMA
   ATTRIBUTES
   (
      VARCHAR TraceLevel        = 'none',
      VARCHAR PrivateLogName    = 'dataconnoper_privatelog',
      VARCHAR FileName          = 'VARDATAa',
      VARCHAR OpenMode          = 'Read',
      VARCHAR Format            = 'DELIMITED',
      VARCHAR Delimiters        = '|'
   );

   STEP step1_setup
   (
      APPLY
      ('DROP TABLE STREAMOPER_ERRTABLE;'),
      ('DROP TABLE STREAMOPER_LOGTABLE;'),
      ('DROP TABLE STREAMTARGETTABLE'),
      ('CREATE TABLE STREAMTARGETTABLE, FALLBACK
                                     (COL1     VARCHAR(5),
                                      COL2     VARCHAR(5));'),
   ('REPLACE MACRO
     T1INSERT
     (
       COL1 VARCHAR(5),
       COL2 VARCHAR(5)
     ) AS ( INSERT INTO STREAMTARGETTABLE VALUES (:COL1,:COL2);
     );')

      TO OPERATOR (DDL_OPERATOR);
   );

   STEP step2_load_data
   (
      APPLY
      ('EXEC T1INSERT INSERT;')
      TO OPERATOR (STREAM_OPERATOR [2])

      SELECT * FROM OPERATOR (FILE_READER [1]);
   );
 );