[新機能]dbt Cloudで前回失敗したModel・Testからジョブを再開できるようになりました

2023.10.11

さがらです。

2023年10月のdbt Cloudのアップデートとして、前回失敗したModel・Testからジョブを再開できる機能が追加されました。

早速この機能を試してみたので、本記事でその内容をまとめてみます。

前提条件

本機能を使うためには、以下の要件を満たしている必要があります。dbt ver1.6で追加されたdbt retryが前提の機能のため、このコマンドの条件を満たす必要があります。

  • dbt Cloudの環境であること
  • 使用するdbtのバージョンは「1.6」以上であること
  • 対象となるジョブは、「最新の実行がerrorであること」「実行に失敗したコマンドが下記のコマンドのいずれかであること(dbt retryコマンドの公式Docより)」
    • build
    • compile
    • seed
    • snapshot
    • test
    • run
    • run-operation

詳細は、下記の本機能の公式Docにも記載がありますので、こちらも併せてご覧ください。

※これは私だけかもしれませんが、私のdbt Cloudのアカウント(USリージョン)では本機能が有効化されていなかったため、サポートに連絡して本機能有効化して頂きました!

事前準備

チュートリアルで使用されるJaffle Shopのデータについて、以下のリネージで構成されているModel群があるとします。

ここで、一番末端のModelであるcustomers.sqlの最後のselect句をあえて削除してMainブランチにMergeし、必ずエラーが起こるように仕込んでおきます。(検証用の愚行です…)

この上で、Environmentのdbtのバージョンを1.6にしておき、このEnvironmentでdbt buildを実行するジョブを準備しておきます。

1回目のジョブ実行

対象のジョブを手動実行してみます。

当然dbt buildでエラーを起こします。

customers.sqlは末端のModelなので、このModelの実行前に多くのModelやTestが実行されていました。これがRerun機能を使ったときにどうなるのかが注目ポイントです。

2回目のジョブ実行(Rerun機能を使用)

続いて、Rerun機能を用いて再実行してみます。

対象のジョブの右上のRerunを押すと、Rerun from failureというオプションが表示されますので、これを押します。

すると、dbt buildコマンドは失敗したcustomers.sqlから再開されていました!customers.sqlよりも前に実行されたModelやTestが再実行されていないのがいいですよね。

最後に

簡単ではありますが、2023年10月のdbt Cloudの新機能である「前回失敗したModel・Testからジョブを再開できる機能」を試してみました。

これはどのdbt Cloudユーザーにも使ってもらいたい機能ですので、ぜひ活用してみてください!