Simple Example
More Robust Example
Production-ready with comprehensive checks and actionable reports:B. Calculate coverage metrics
C. Identify priority gaps
High Priority (should be documented):- Mart models without descriptions
- Models with >10 downstream dependencies
- Models referenced in exposures
- Public models (if using access config)
- Intermediate models
- Models changed in last 30 days
- Staging models (often straightforward)
- Experimental/temp models
2. Test Coverage Audit
A. Find models without tests
Check each model for:- Unique tests on potential key columns
- Not null tests on required columns
- Relationship tests on foreign keys
- Any custom tests
B. Identify missing key tests
For each model:- Look for columns ending in
_idor_key - Check if they have unique test
- Look for obvious foreign key relationships
- Check if relationship tests exist
C. Test execution health
If possible, check recent test results:- Tests that frequently fail
- Tests that are flaky
- Tests that take very long
3. Naming Convention Audit
A. Model naming
Check each model follows conventions: Expected Patterns:- Staging:
stg_{source}__{table} - Intermediate:
int_{description} - Facts:
fct_{business_entity} - Dimensions:
dim_{business_entity}
B. Column naming
Check columns for:- snake_case usage
- Boolean prefixes (is_, has_, should_)
- Date suffixes (_date, _at, _timestamp)
- ID suffixes (_id, _key)
- CamelCase columns:
CustomerID,OrderDate - Uppercase:
USER_ID,CREATED_AT - Inconsistent naming:
custIDvscustomer_id - Missing prefixes:
active→ should beis_active
4. File Organization Audit
A. Directory structure
Check for proper organization:- Models in wrong directories
- Staging models not grouped by source
- Missing _schema.yml files
- Orphaned files
B. YAML organization
Check for:- One schema.yml per directory OR per source
- Source definitions co-located with staging
- Consistent naming (_schema.yml vs schema.yml)
5. Performance & Materialization Audit
A. Materialization appropriateness
Check each model’s materialization: Rules:- Views: For simple transformations, low query frequency
- Tables: For expensive transformations, high query frequency
- Incremental: For large, append-only datasets
- Ephemeral: For DRY code, not queried directly
B. Performance hints
Look for expensive patterns:- Large CTEs that could be intermediate models
- Repeated subqueries
- Window functions without PARTITION BY
- DISTINCT without explanation
6. Dependency Health Audit
A. Dependency graph analysis
B. Source freshness
Check source freshness configurations:- Are all sources monitored?
- Are thresholds reasonable?
- Any sources consistently failing?
7. Code Quality Audit
A. SQL patterns
Search for anti-patterns: SELECT * usage:B. Macro usage
Check for:- Repeated code that could be macroized
- Unused macros
- Undocumented macros
C. Config consistency
Check dbt_project.yml:- Consistent materialization defaults
- Appropriate schema naming
- Tags being used effectively
Generate Comprehensive Report
Create Summary Issue
Post weekly audit results as GitHub issue:Send Slack Summary
Post to #data-quality:Store Audit History
Save results for trend tracking:.buster/audits/audit_{{date}}.json: