Pipeline error log#

各パイプラインにはエラーログテーブルがあります。レコードが任意のステップで失敗すると、ログは、ソースレコードID、失敗したステップ、操作タイプ、およびエラーメッセージをキャプチャします。バッチの残りの部分は処理を継続します。

その仕組み#

  • レコードに失敗すると、ソースID、失敗したステップ番号、操作タイプ、エラーメッセージとともに{source_schema}.pipeline_{pipeline_name}_errors ログに記録されます。

  • 単一の不良レコードはパイプラインをブロックしません。バッチ内の他のレコードは、残りのすべてのステップを続行します。

  • エラーログテーブルはパイプラインで作成され、パイプラインが削除されるときに削除されます。

  • エラーは4つのerror_category 値のいずれかを取得します。

Category

Scope

Blocks pipeline?

Description

RecordTemporary

Record

No

単一レコードの一時的な障害。再試行で成功する場合があります。

RecordPermanent

Record

No

単一のレコードの永続的な障害たとえば、破損したデータ。

PipelineTemporary

Pipeline

Yes

ステップ全体を停止した一時的な障害たとえば、サービスの停止。再試行で解決される場合があります。

PipelinePermanent

Pipeline

Yes

ステップ全体を停止した永続的な障害たとえば、無効なモデル構成。

RecordTemporary およびRecordPermanent エラーはパイプラインをブロックしません。他のレコードは処理を継続します。 PipelineTemporary およびPipelinePermanent エラーは、ステップ全体をブロックします。一時的なエラーは、再試行すると解決される場合があります。永続的なエラーは、不正なデータまたは構成ミスを示しています。

エラーのクエリー#

aidb.get_error_logs() を使用して、パイプラインのエラーログを検査します。

SELECT * FROM aidb.get_error_logs(my_pipeline);

__OUTPUT__
 id | source_id | part_ids | pipeline_step | step_operation | error_message                          | error_category    | failed_at                  | retry_count | last_retry_at
- ---+-----------+----------+---------------+----------------+----------------------------------------+-------------------+----------------------------+-------------+---------------
  3 | doc_99    | {0,2}    |             2 | ChunkText      | text segment exceeded maximum length   | RecordPermanent   | 2026-04-10 14:32:01.123+00 |           0 |
  2 | doc_42    | {0}      |             1 | ParsePdf       | failed to extract text from page 0     | RecordPermanent   | 2026-04-10 14:31:58.456+00 |           0 |
  1 | doc_7     |          |             1 | ParsePdf       | corrupt PDF header                     | RecordPermanent   | 2026-04-10 14:31:55.789+00 |           0 |
(3 rows)

ソースレコード、ステップ番号、またはエラーカテゴリでフィルタリングします。

SELECT * FROM aidb.get_error_logs(
    my_pipeline,
    p_source_id => doc_42
);
SELECT * FROM aidb.get_error_logs(
    my_pipeline,
    p_pipeline_step  => 1::smallint,
    p_error_category => RecordPermanent
);

p_limit およびp_offset を使用したページ付け

SELECT * FROM aidb.get_error_logs(my_pipeline, p_limit => 20, p_offset => 40);

完全なパラメーターと戻り型の詳細については、 Operations reference を参照してください。

エラーの概要#

1つのパイプラインのステップ、オペレーション、およびカテゴリ別にグループ化されたエラー数を取得します。

SELECT * FROM aidb.get_error_log_summary(my_pipeline);

__OUTPUT__
 pipeline_step | step_operation | error_category    | error_count | latest_failed_at
- --------------+----------------+-------------------+-------------+----------------------------
             1 | ParsePdf       | RecordPermanent   |           2 | 2026-04-10 14:31:58.456+00
             2 | ChunkText      | RecordPermanent   |           1 | 2026-04-10 14:32:01.123+00
(2 rows)

または、すべてのパイプラインで同じロールアップを一度に取得します。

SELECT * FROM aidb.get_all_error_summaries();

__OUTPUT__
 pipeline_name | pipeline_step | step_operation | error_category    | error_count | latest_failed_at
- --------------+---------------+----------------+-------------------+-------------+----------------------------
 my_pipeline   |             1 | ParsePdf       | RecordPermanent   |           2 | 2026-04-10 14:31:58.456+00
 my_pipeline   |             2 | ChunkText      | RecordPermanent   |           1 | 2026-04-10 14:32:01.123+00
 pdf_ingester  |             1 | ParsePdf       | PipelinePermanent |           1 | 2026-04-10 15:00:12.000+00
(3 rows)

エラーのクリア#

IDで特定のエラーログエントリを削除します。

SELECT aidb.clear_error_logs(my_pipeline, ARRAY[1, 3]);

__OUTPUT__
 clear_error_logs
- -----------------
                2
(1 row)

削除された行数を返します。クリアはIDベースです。エントリを削除する前にget_error_logs() で確認してください。

失敗したレコードの再試行#

!!!注 aidb.retry_pipeline_errors() はまだ利用できません。将来のリリースに含まれる予定です。 Known issues を参照してください。

aidb.retry_pipeline_errors() は、利用可能な場合、失敗したステップから特定のエラーログエントリを再処理します。

SELECT * FROM aidb.retry_pipeline_errors(my_pipeline, ARRAY[1, 2]);

__OUTPUT__
 error_id | status   | error_message
- ---------+----------+--------------------------------------------
        1 | resolved |
        2 | failed   | failed to extract text from page 0
(2 rows)

解決されたエントリはエラーログから削除されます。失敗した再試行は、インクリメントされたretry_count および更新されたlast_retry_at タイムスタンプとともにログに残ります。

パイプラインステータスの統合#

エラー数は promoteb.pipeline_metrics ビューにも表示されます。パイプラインステータスはエラーの重大度を反映します。

  • PartialErrors — 一部のレコードは失敗しました。残りは通常に処理されました。

  • BlockingErrors —パイプラインレベルのエラーにより、ステップが完全に停止しました。

パイプラインの状態のモニタリングの詳細については、 モニタリングとオブザーバビリティ を参照してください。