17.10 - Updateエラーの修正 - Parallel Transporter

Teradata® Parallel Transporter ユーザー ガイド

Product
Parallel Transporter
Release Number
17.10
Release Date
2021年6月
Content Type
ユーザー ガイド
Publication ID
B035-2445-061K-JPN
Language
日本語 (日本)

以下に、簡単なUpdateオペレータ タスク、エラー テーブルのリスト、およびエラー原因を特定するための手順を示します。 このタスク例では、2つのDML文(INSERT文とUPDATE文)から成るDMLグループを1つだけ使用して、Updateオペレータ ジョブを説明します。

この例では、エラー テーブルのエラー情報すべてを使用します。 通常は、エラー テーブルの1つまたは2つの列を評価すれば、エラーの原因が分かります。

この例では、次のAPPLY文を使用して、このセクションのエラー テーブルを作成します。

APPLY
'INSERT INTO table1 VALUES (:FIELD1,:FIELD2 );
UPDATE table2 SET field3 = :FIELD3 WHERE field4 = :FIELD4;'

タスク例

以下の例のシーケンス タイプ列と番号列は、各ステートメントに割り当てられるタイプと番号を示します。 ステートメント列は、実際のジョブステートメントを示します。

タスク例
シーケンス ステートメント
タイプ 番号
DML 001
'INSERT INTO table1 VALUES (:FIELD1,:FIELD2 );
UPDATE table2 SET field3 = :FIELD3 WHERE field4 = :FIELD4;'
STMT 001
INSERT INTO table1 VALUES (:FIELD1, :FIELD2 );
STMT 002
UPDATE table2 SET field3 = :FIELD3 WHERE field4 = :FIELD4;

以下は、上記のタスクによって生成された第1エラー テーブルです。 この情報は、タスクで問題が発生したことを示しています。

ImportSeq DMLSeq SMTSeq ApplySeq Source Seq ErrorCode ErrorField
002 001 002 001 20456 2679 field3

以下の手順を使用して、エラー テーブルの情報を評価し、問題を識別します。

  1. DMLSeqフィールドをチェックし、DMLグループを特定します。 このフィールドは、順序番号が001になっています。
  2. STMTSeqフィールドをチェックします。 シーケンス番号は002です。つまり、2番目のDML文を実行したときにエラーが発生したことが分かります。具体的には、タスクのUPDATE文でエラーが発生しています。
  3. DMLSeqが001であるため、Updateオペレータのジョブ スクリプトを調べ、最初のDMLグループで2つのDML文を使用したことを確認します。
  4. ImportSeqフィールドをチェックします。 フィールド値002により、2番目の入力データ ソースで行を処理したときにエラーが発生したことが分かります。
  5. ErrorCodeフィールドの意味を確認します。 エラー2679"The format or data contains a bad character(形式またはデータに無効な文字が含まれています)"は、クライアント システムのデータに問題があることを示しています。
  6. ErrorFieldフィールドをチェックします。 field3は、ターゲット テーブルでfield3を構築したときにエラーが発生したことを示しています。 field3は、Updateオペレータ ジョブ スクリプトの入力スキーマのフィールドを示します。
  7. スクリプトを調べると、UPDATE文はtable2をロードしており、次のことが分かります。
    • 発生したエラーの種類
    • エラーを検出したステートメント
    • エラーを発生した入力データ ソース
    • table2でエラーを発生したフィールド
  8. SourceSeqフィールドをチェックします。 フィールド値20456は、入力ソースの20,456番目のレコードに問題があることを示しています。

これで問題は識別され、修正することができます。