Monitor test duration vs actual transformation

The problem I’m having

I would like to be able to keep my production pipeline within a reasonable time. To do so i would like to monitor easily how long my tests take vs the actual transformation.

The context of why I’m trying to do this

I am using dbt cloud and my prod pipeline contain only the following command:

dbt build

Since the build does both run and test, when my pipeline duration is increasing i cannot see easily if this because of a slow test or a slow transformation

Do you have any idea how i can solve this problem ?

Should i split my pipeline in two steps:

dbt run
dbt test

In this case i am loosing the “run test directly after transformation, in DAG order” which i like

Thanks,

The run_results.json includes execution time of each node that ran (models, tests, etc.) so you can parse that to get the data you’re looking for.

There are some packages that make this much easier to track over time, though. Including:
https://hub.getdbt.com/brooklyn-data/dbt_artifacts/latest/|dbt-artifacts
https://hub.getdbt.com/elementary-data/elementary/latest/|elementary

Note: @Owen originally posted this reply in Slack. It might not have transferred perfectly.

Oh I should have included a link to more info about run_results.json: https://docs.getdbt.com/reference/artifacts/run-results-json

Note: @Owen originally posted this reply in Slack. It might not have transferred perfectly.

hey <@U0291GP2AQ0>,
do you happen to know what are the key differences between dbt-artifacts & elementary? I am currently looking into data observability tools/solutions for our dbt project and would welcome any advice on this topic.

Note: @erik.kitzing originally posted this reply in Slack. It might not have transferred perfectly.

I don’t know, so my advice is to read the documentation on both and then choose whichever seems best-suited to your use cases.

Note: @Owen originally posted this reply in Slack. It might not have transferred perfectly.