ตอนแรกจะเขียนเอง แต่ดูท่าจะเปลืองพลังไปหน่อย หาตัวช่วยดีกว่า แล้วไปเจอตัวนี้ครับ
เผื่อใครอยากดึงข้อมูลจาก dbt artifacts อย่าง catalog.json
หรือ run_restuls.json
ก็สามารถใช้ได้
ด้านล่างนี้เป็นโค้ดที่ผมลองดึงข้อมูลจาก run_results.json
import json
from dbt_artifacts_parser.parser import parse_run_results_v4
with open("run_results.json", "r") as fp:
run_results_dict = json.load(fp)
run_results_obj = parse_run_results_v4(run_results=run_results_dict)
results = run_results_obj.results
for each in results:
print(each.unique_id, each.execution_time)
สังเกตว่าผมใช้ v4 นะ รู้ได้อย่างไร? ตรงนี้ดูข้างในไฟล์ได้เลย ตรง dbt_schema_version
จะมีบอก version อยู่
ส่วนผลที่ได้ก็ประมาณนี้
เราก็จะดูได้ว่า model ไหนใช้ execution time รวมทั้งหมด (compile + execute) แล้วเท่าไหร่ เราก็จะสามารถ track dbt model performance ได้
ปล. ใน run_results.json
มีเวลาของทั้ง model, test, seed, และ snapshot ด้วยนะ