通常のデータ転送では、「予期せぬデータ(NULLなど)が紛れ込んでいた」といった場合でも、ジョブ自体は「成功」で処理されます。
このような「処理は動いたけれど、データの中身が正しくない」というデータ品質低下を防ぐのが、ワークフローのデータチェックタスクです。
データチェックタスクは、単なるエラー検知に留まらず、条件分岐タスクと組み合わせることで、データの状態に応じた柔軟なワークフロー制御を実現します。
※ データチェックタスクはDWH(Google BigQuery、Snowflake、Amazon Redshift、Databricks)のみで提供しております。
データチェックタスクの設定方法
ここでは「優先度が高い(priority = 'High')レコードが1件以上あればSlackへ通知する」という例を使って設定方法を説明します。
課題
転送ジョブではデータの中身を確認しないため、特定の値が含まれていても検知できません。
クエリの設定
クエリ結果が1行1列の数値となるように SELECT 文を記述します。
この例では、優先度が高いレコードの件数を取得します。
SELECT COUNT(*)
FROM `project.dataset.table`
WHERE priority = 'High'
優先度が高いデータがなければ 0、1件以上あれば 1 以上の数値が返ります。
エラー条件の設定
クエリの実行結果に対して、エラーと判定する条件を設定します。
この設定により、優先度が高いデータが1件でも存在すればタスクがエラー終了します。
クエリ結果がNULLの場合に成功とする
クエリ結果がNULLになる場合(対象テーブルにデータが存在しない場合など)でもタスクを成功扱いにしたい場合は、このオプションを有効にします。
条件分岐タスクとの連携
クエリ結果を条件分岐に利用するを有効にすると、エラー条件に合致した場合でもデータチェックタスク自体は成功として扱われ、後続の条件分岐タスクにクエリ結果を渡せます。
この例では以下のような分岐フローを構築できます。
- 要注意データあり(結果が1以上)→ Slack通知タスクへ分岐
- 要注意データなし(結果が0)→ 正常終了
データチェックタスクと条件分岐タスクを組み合わせることで、データの状態に応じた高度なワークフロー制御が可能になります。
コメント
0件のコメント
記事コメントは受け付けていません。