[Verse 1]
When data flows through pipelines deep
But something's wrong, the numbers weep
Your dashboard shows a twisted tale
Where null values make metrics fail
Schema tests become your guard
Check column types, it's not that hard
Is revenue an integer?
Are dates formatted, crystal clear?
[Chorus]
Test your data, test it well
Schema, unique, not null to tell
Accepted values, relationships too
DBT testing carries you through
Quality gates that never sleep
Making analytics promises we keep
[Verse 2]
Unique tests hunt for duplicate rows
One customer ID, that's how it goes
Not null ensures completeness reigns
No missing pieces in your data chains
Accepted values draw the line
Status must be "pending" or "declined"
Custom tests for business rules
Percentage scores and currency jewels
[Chorus]
Test your data, test it well
Schema, unique, not null to tell
Accepted values, relationships too
DBT testing carries you through
Quality gates that never sleep
Making analytics promises we keep
[Bridge]
Generic tests in YML files
Custom macros span for miles
Freshness checks for recent loads
Severity levels decode
Warn or error, you decide
When bad data tries to hide
[Verse 3]
Model dependencies must align
Parent tables feed the line
Referential integrity
Keeps your warehouse clean and free
Documentation lives beside
Each test reason, none can hide
Stakeholders trust what they see
When quality runs wild and free
[Chorus]
Test your data, test it well
Schema, unique, not null to tell
Accepted values, relationships too
DBT testing carries you through
Quality gates that never sleep
Making analytics promises we keep
[Outro]
From source to mart, the guardian's there
DBT tests beyond compare
Reliable insights, decisions sound
When quality testing comes around