Metacenta

Lineage integrity · rule catalog-large-unread-model

Large dbt models with no declared reader

A Metacenta review checks this under the rule Large leaf models have a declared reader. Everything below applies whether or not you ever commission one.

What this rule checks

This rule flags a dbt model holding at least 10% of the storage catalog.json measured, when no other model reads it and nothing declares it as a consumer. It runs only when the project declares an exposure, metric or semantic model. At 25% or more we rate it high severity. It declines below 10 measured relations.

Why it matters

Its storage is paid for every day, whether anything reads it or not. If a dashboard does read it, the dependency is undeclared. The next person to change or drop the model will not know they have broken it.

How to fix it

Settle what reads the largest models nothing declares. Confirm what reads the model. Declare the exposure if something does, and retire the model if nothing does.

When it is fine to leave

A large table that analysts query directly in the warehouse is in use, even with no exposure. So is a model kept on purpose as a point-in-time archive. Declare the reader where you can, or tell us, and the finding comes out of your report.

What we need to check it

manifest.json and catalog.json from dbt docs generate, on an adapter that reports sizes or row counts. We state each share beside its size. We do not claim the model is expensive, because that depends on a bill we never see.