A comprehensive dbt project that transforms raw marketing data into a star schema for analytics and reporting.
- Source Systems: PostgreSQL (extracted via Airbyte)
- Data Warehouse: Snowflake
- Transformation Tool: dbt Cloud
- Version Control: GitHub
This project implements a 4-layer data architecture:
- Source: Snowflake database
aegroupfive.raw - Tables: campaigns, campaign_performance, channels, email_campaigns, email_lists, subscribers
- Purpose: Raw data as ingested from various marketing systems using airbytes
- Schema: staging
- Purpose: Clean column selection and basic data type casting from raw sources
- Models:
stg_campaigns- Campaign master datastg_campaign_performance- Daily campaign performance metricsstg_channels- Marketing channel definitionsstg_email_campaigns- Email campaign performancestg_email_lists- Email list definitionsstg_subscribers- Subscriber information
- Schema: transform
- Purpose: Data cleaning, standardization, and business logic application
- Features:
- Data quality improvements (trimming, null handling)
- Standardized data types
- Business rules implementation
- Foreign key creation
- Schema: consumption
- Purpose: Star schema optimized for analytics and BI tools
dim_campaigns- Campaign master with all attributesdim_channels- Marketing channel lookupdim_email_lists- Email list definitionsdim_subscribers- Subscriber demographicsdim_date- Date dimension for time-based analysis
fct_campaign_performance- Daily campaign metrics with calculated KPIsfct_email_campaign_performance- Email campaign metrics with calculated rates
The fact tables include pre-calculated business metrics:
Campaign Performance:
- ROI Percentage
- Click-through Rate (CTR)
- Conversion Rate
Email Campaign Performance:
- Delivery Rate
- Open Rate
- Click-to-Open Rate
- Click-through Rate
- Conversion Rate
- Bounce Rate
- Unsubscribe Rate
- Comprehensive data tests for uniqueness, not-null constraints
- Referential integrity tests between fact and dimension tables
- Data validation across all layers
- Complete column-level documentation
- Business context for all models
- Data lineage tracking
# Run all models
dbt run
# Run specific layers
dbt run --models staging
dbt run --models transform
dbt run --models consumption
# Run tests
dbt test
# Generate documentation
dbt docs generate
dbt docs serveRaw Sources → Staging → Transform → Consumption
The project processes data from 6 main marketing data sources:
- Campaigns - Marketing campaign definitions
- Campaign Performance - Daily performance metrics
- Channels - Marketing channel lookup
- Email Campaigns - Email-specific campaign data
- Email Lists - Email list definitions
- Subscribers - Customer/subscriber information
This star schema supports various analytics use cases:
- Campaign ROI analysis
- Channel performance comparison
- Email marketing effectiveness
- Customer segmentation analysis
- Time-based trend analysis
- Cross-channel attribution
The project is configured to:
- Materialize staging and transform models as tables
- Create separate schemas for each layer
- Include comprehensive testing and documentation
- Learn more about dbt in the docs
- Check out Discourse for commonly asked questions and answers
- Join the dbt community to connect with other Analytics Engineers