เครื่องมือ dbt Artifacts Parser เผื่อใครอยากดึงข้อมูลจาก dbt Artifacts

ตอนแรกจะเขียนเอง แต่ดูท่าจะเปลืองพลังไปหน่อย :sweat_smile: หาตัวช่วยดีกว่า แล้วไปเจอตัวนี้ครับ

เผื่อใครอยากดึงข้อมูลจาก 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 ด้วยนะ

อ่านเพิ่มเติมที่บทความนี้ได้ว่าเราสามารถดึงอะไรออกมาจาก run_results.json ได้บ้าง

ปล. ในบทความเค้าใช้แค่ cat กับ jq :laughing: