1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

dbtジョブをAPIで呼び出す方法(実行から結果確認まで)

Last updated at Posted at 2024-12-06

はじめに

dbt Cloudで作成したジョブをAPIで呼び出し、結果を確認する方法です。

準備するもの

ジョブ
 →既に作成されていることを前提に進めます。
 ジョブの作り方についてはこちらの記事を参考にしてください!

パーソナルアクセストークン
 →作成から入るので今の段階で準備していなくて大丈夫です。
PostmanやHULFT SquareなどAPIを呼び出すツール
 →今回はPostmanを使用します。

1.dbtでパーソナルアクセストークンを作成

画面左下の名前をクリック>「Your Profile」>「API Tokens」>「Personal access tokens」

image.png

API呼び出しに必要です。大切に保管してください。

2.API実行に必要な情報を集める

APIによって様々ですがジョブに関する基本的な情報は「> API trigger」から確認できます。

image.png

3.ジョブを実行する

Trigger Job Run

/api/v2/accounts/{account_id}/jobs/{job_id}/run/

注意点
 ・URL https://cloud.getdbt.com は個人のdbt CloudのURLに変更
 ・{id}はジョブIDを選択
 ・ヘダーには「"Authorization": "Token " 」で認証
 ・ボディには「"cause": "Triggered via API"」

実行した結果 ▼

image.png

ジョブが起動したことをdbt上でも確認

image.png

4.ジョブの結果を確認する

Retrieve Run

/api/v2/accounts/{account_id}/runs/{id}/?include_related='run_steps'

注意点
 ・URL https://cloud.getdbt.com は個人のdbt CloudのURLに変更
 ・{id}にはジョブの実行IDを選択
 ・パラメータにはinclude_relatedに'run_steps'を指定
 ・GET
 ・ヘダーには「"Authorization": "Token " 」で認証

image.png

include_relatedに'run_steps'

このパラメータを指定することでジョブの成功/失敗だけでなくエラーの内容まで確認できるようになります。

実行結果

status=10でありジョブが成功している事が分かります!

image.png

ステータスコードについて
Starting = 1
Running = 3
Success = 10
Error = 20
Canceled = 30
Skipped = 40
[参考](https://docs.getdbt.com/reference/commands/run)

ジョブが成功していることをdbt上でも確認

image.png

5.エラーメッセージの確認方法

ジョブが失敗した場合のエラーエラーメッセージを確認する方法です。

Retrieve Runの結果を確認してジョブが失敗していることを確認

・data配下のstatus=20でジョブ自体がエラーになっています。

image.png

dbt画面でエラーを確認する場合は以下のようにSnowflakeのGUIと同じエラーメッセージが確認できます。

参考
・dbt画面
image.png
・Snowflake画面
image.png

include_relatedに指定した'run_steps'の内容を確認する

ジョブではいくつかのステップごとに処理が走ります。
dbt画面からみるとステップが理解しやすく、以下の場合は4つ目のステップでエラーになっていることが分かります。(1~3目のステップはdefaultです)

image.png

APIのレスポンスに戻って確認

run_stepはステップごとにindexが振り分けられています。ステップごとにステータスコードがあるので、どのステップでエラーになったのかが確認できます。

image.png

4つ目のステップであった「dbt build --select +customers.sql」はindex=4になります。

image.png

力技にはなりますが、APIレスポンスのうち「data」>「run_steps」>「index:4」の「truncated_debug_logs"」を見ればエラーメッセージが確認できました。

最後に

dbtジョブをAPIで呼び出すユースケースは多いかと思います。
エラーメッセージの取得方法についてもっとスマートな方法があれば教えて下さい。
HULFT Squareを使ってジョブを実行する方法も試してみたので記事にしようと思います。
参考になれば嬉しいです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?