Skip to content
About
Main content

Retire a table safely

The decision

Every warehouse accumulates tables that look unused. Retiring one rests on a negative claim: nothing reads this. cannot prove that, because lineage is : an edge that exists is a real dependency, an absent edge tells you nothing. Usage logs cannot prove it either, because they record behaviour, not requirement. How do you retire tables without deleting one out from under a quarterly report?

You will end with a retirement process in which every deletion is preceded by a step that makes hidden use visible.

Work through these in order.


Work through it

1

Use lineage to narrow the candidates, never to clear them

Lineage answers "what breaks if I change this?": downstream traversal, ranked, reduces 3,000 edges to the assets that truly consume the table. It cannot answer "who still uses this?" An absent edge is not an absent dependency.

2

Rank the candidates by real reads

Query logs are a by-product the system produces anyway, so they are free and true: real usage, column-level access, who read what and when. Rank by them. They see only what ran through the logged engine.

3

Treat a quiet period as a guess, not proof

"Zero reads in 90 days" does not mean unused: quarterly reports, annual regulatory extracts and disaster-recovery paths are legitimately idle for longer than any threshold you would pick. Deprecation by telemetry has a false-positive rate set by the longest legitimate access interval, which you cannot observe. And the person who pays is not the person who set the threshold.

4

Make hidden use visible before you delete

Stop making absence claims from observation and create a channel everything must pass through: revoke access and log who is refused, stop serving the table and see who complains, or route reads through a proxy that must be used. That turns "I observed no usage" into "usage is now impossible without telling me". Keep the channel open long enough to cover the longest legitimate interval you know of.

5

Delete last

The reversible step (revoking, unserving) comes before the irreversible one. This is applied to deletion: check, then commit.