> ## Documentation Index
> Fetch the complete documentation index at: https://docs.core.sprocket.bz/llms.txt
> Use this file to discover all available pages before exploring further.

# 自動処理（ワークフロー）：失敗への備えと運用

> 失敗への備え（エラーハンドラ）、リトライ、結果チェック、同時実行の制御、バックフィル、承認フロー、緊急公開、コスト見積もり、定義の書き出しと取り込みを説明します。

> この記事は Spumote のソースコードから生成した試験出力です。内容は確認中のため、正式な仕様は担当者に確認してください。

## この機能でできること

自動処理を安心して本番運用するための機能をまとめています。

* 失敗を受け止めて通知や後始末をする（エラーハンドラ）／自動でやり直す（リトライ）
* 「処理は成功したが中身が想定外」を失敗として扱う（結果チェック）
* 同じワークフローが重なって動かないよう制限する
* 過去の期間を指定してまとめて再実行する（バックフィル）、失敗したステップだけやり直す
* 本番の変更に承認（レビュー）を必須にする／緊急時は理由付きで承認を飛ばして公開する
* 実行コストの目安を確認する
* 定義を書き出して、別のワークフローへ移す

## 画面の場所

* ステップごとの設定: データ › 自動処理（ワークフロー）› 処理一覧 › （ワークフローを開く）› ステップ設定 ›「実行時の振る舞い」
* ワークフロー全体の設定: 同エディタ ›「設定」›「実行制御」
* バックフィル・コスト想定・定義の入出力: 同エディタ ›「…」（その他の操作）
* 承認待ちの一覧: データ › 自動処理（ワークフロー）› 承認（レビュー）

## 失敗への備え

失敗を受け止めて通知や後始末をするには「エラーハンドラ」ステップを使います（「02-3-2 ステップの種類」参照）。新規作成したワークフローには、ワークフロー全体を監視するエラーハンドラと「失敗通知」があらかじめ入っています。

## リトライ

「実行時の振る舞い」の「リトライを有効化」にチェックを入れると、失敗時に自動でやり直します。待ち時間は回を追うごとに倍率で伸びます。

| 項目 | 範囲 | 画面の初期値 |
| - | - | - |
| 最大回数 | 1〜10 回 | 3 回 |
| 初期遅延(秒) | 1〜300 秒（整数） | 30 秒 |
| バックオフ倍率 | 1〜10 倍 | 2 倍 |

リトライはジョブ型のステップ（インポート / プロセス / エクスポート）、ストレージ操作、エラーハンドラで設定できます。

## 結果チェック（アサーション）

「結果が条件を満たさない場合は失敗扱いにする」にチェックを入れると、ステップ自体は成功しても、結果の値が条件を満たさなければ失敗として扱います。失敗扱いになった場合もリトライが発火するため、「上流テーブルが今日更新されるまで待つ」といった使い方ができます。

| 項目 | 内容 |
| - | - |
| 評価対象 | 処理行数（rowsProcessed）、SQL 結果の列（resultData.列名）など |
| 演算子 | = / ≠ / ≥ / > / ≤ / \<（数値） / \~（正規表現） |
| 比較値 | 比べる値 |
| 失敗時メッセージ | 失敗扱いになったときに記録・通知されるメッセージ |

## 同時実行の制御

「設定」›「実行制御」›「重複実行防止」で「重複実行を制限する」にチェックを入れると、同時に 1 つだけ動くようになります。

| 単位 | 意味 |
| - | - |
| ワークフロー単位（全体で1つだけ） | どのトリガーからでも同時に 1 本まで |
| トリガー単位（トリガーごとに1つ） | トリガーごとに 1 本まで |

上限に達しているときの扱いは起動経路で異なります。手動実行はエラーで拒否、スケジュール起動はその回を見送り（Catchup で後から拾えます）、アセット駆動とバックフィルは「待機中 ( 同時実行上限 )」として並び、空きが出たら順に実行されます。

## バックフィル・再実行

### バックフィル（期間を指定して再実行）

「…」›「バックフィル」で、対象期間（パーティション）を並べて指定すると、期間ごとに 1 回ずつ実行します。

1. 「対象期間を指定」を押します。
2. 「パーティション変数名」（各回に値を渡す変数。例: BATCH\_DATE）と「パーティション」（1 行に 1 つ、またはカンマ区切り）を入力します。
3. 「同時実行数」と、必要なら「下流ワークフローへ連鎖する」を指定し、「再実行を開始」します。
4. 一覧から開くと、パーティションごとの状態（待機中 / 実行中 / 成功 / 失敗）を確認でき、「失敗分を再実行」で失敗した期間だけやり直せます。

一時停止していた期間の取りこぼしは「pause 期間の取りこぼしから提案」で自動的に候補を入れられます。

### 失敗ステップから再実行

実行履歴の詳細で「失敗ステップから再実行」を押すと、失敗（または部分成功）した実行を、失敗したステップからやり直します。成功済みのステップは再実行されません。再実行は、その実行が動いたときの公開版の定義と変数の値（日付など）で行われます。公開版を直しても、すでにある実行の再実行には反映されません。直した定義で動かしたいときは、新しく実行（今すぐ実行・バックフィル）してください。

## 承認（レビュー）フロー

本番モードでは、下書きを公開するのに承認済みのレビューが必要です。

1. エディタで「レビュー依頼」を押し、「レビュアー」（1 人以上）を選び、複数選んだ場合は「必要な承認数」を決め、「変更内容の要約」を書いて「依頼する」を押します。
2. レビュアーには「承認（レビュー）」の「受信」に依頼が届きます（件数がバッジ表示されます）。依頼した側は「送信」で確認できます。
3. レビュアーは内容を確認して承認、または差し戻します。コメントも付けられます。必要な承認数に達するとレビューが承認済みになり、差し戻しが 1 件でもあるとレビュー全体が差し戻しになります。
4. 承認済みになったら「公開する」で公開します。

* 本番モードでは自分を指名する・自分の依頼を承認することはできません（試作モードでは可能）。
* 同じワークフローで承認待ちのレビューは同時に 1 件までです。依頼者は依頼をキャンセルできます。
* 承認後に下書きを変更すると、公開には再レビューの承認が必要になります。

### 緊急公開（break-glass）

承認者不在の障害対応などで、本番ワークフローを承認なしで公開する例外操作です。承認待ちで公開が止まったとき、owner ロールの利用者にだけ「緊急公開」ボタンが表示されます。

* 「理由」の入力が必須です（500 文字まで）。
* 実行者・理由が監査ログとリリース履歴に記録され、ワークフローの通知セット（未設定なら組織の既定）の送り先へ、件名「緊急公開 ( 承認レビューなし ): ワークフロー名」の通知が送信されます。
* ワークフローには「緊急公開」バッジが付き、理由はツールチップで確認できます。公開後は速やかに事後レビューを行ってください。

## コスト見積もり

「…」›「コスト想定」で、ワークフローの実行コストの目安を日別・ステップ種別別などで確認できます（既定は過去 30 日）。BigQuery のオンデマンド料金と Editions Standard の両方で計算されます（実際の請求は組織の契約によります）。処理一覧でも「集計期間」に応じたコストが表示されます。

## エクスポート／インポート（定義の移送）

* 「…」›「定義をエクスポート」で、ワークフローと各ステップのジョブ定義（アセットトリガーが使うセンサーを含む）を JSON として書き出し、クリップボードにコピーします。
* 「…」›「定義をインポート」で JSON を貼り付けると、今開いているワークフローの定義を置き換えられます。取り込み前に変更点とジョブ設定の不足がプレビューされます。

## 活用例

* **上流更新待ち**: 集計の先頭ステップで「本日未更新のテーブル数 = 0」を結果チェックし、リトライ 10 回・30 秒から倍々で待つ。
* **障害後の復旧**: 3 日間止まっていた日次処理を、バックフィルで 3 日分指定して順に再実行。下流のエンゲージ同期も「下流ワークフローへ連鎖する」で追随。
* **本番変更の統制**: 配信に直結するワークフローは本番モードにし、変更は必ずデータ担当者のレビューを通す。

## 注意点・制限

* バックフィルのパーティションは 1 回 500 件まで（重複は除去）、同時実行数は 1〜20。同時実行の制限設定があるときは小さい方が効きます。
* レビュアーは最大 10 人、要約は 500 文字、コメントは 5,000 文字まで。
* 結果チェックの正規表現は 200 文字まで。評価対象が見つからない・数値にならない場合は失敗扱いになります。
* 緊急公開は本番モードかつ owner ロールのみ。試作モードは通常の公開を使います。
* 試作モードでは組織既定の失敗通知が送られません。通知が必要なら通知セットを明示的に設定してください。

## 詳しい設定（データ担当者向け）

* 結果チェックの評価対象の目安: プロセス（SQL）は `resultData.<列名>` / `rowsProcessed`、ストレージ操作は `filesProcessed` / `filesFound` / `bytesProcessed`、インポートは `rowsProcessed` / `bytesProcessed` / `syncStatus`、エクスポートは `rowsProcessed` / `filesUploaded` / `httpStatus`。
* 数値の演算子（≥ など）は数値として比較し、文字列比較には切り替わりません。
* リトライの 0.1 秒刻みの初期遅延と最大遅延（1〜600 秒）は、API・MCP でのみ指定できます（画面では初期遅延を 1 秒単位で入力し、最大遅延は 300 秒に設定されます）。
* 失敗時の動作（中止 / スキップ / 続行）、ステップ実行の時間の上限（最大 86,400 秒）、上流アセット待ちの待ち時間の上限（既定 3,600 秒、最大 86,400 秒。超えたときに「失敗」か「スキップ」）は、画面からは設定できず、API・MCP でのみ指定できます。
* 別の組織（例: 検証用組織から本番組織）への定義の取り込み（`${変数名}` を取り込み先の値に置き換える「環境マッピング」を含む。ジョブ 100 件・センサー 50 件まで）は、API でのみ提供されています。

## 関連ページ

* [02-3-1 自動処理（ワークフロー）：基本と作り方](/dsv2/workflow-basics)
* [02-3-2 自動処理（ワークフロー）：ステップの種類](/dsv2/workflow-steps)
* [02-3-3 自動処理（ワークフロー）：実行タイミングと変数](/dsv2/workflow-triggers-and-variables)
* [02-4 実行履歴](/dsv2/run-history)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.