This repository consists of a dbt project designed to transform raw data into structured, analytics-ready models. The project follows modern data engineering best practices, ensuring efficient, scalable, and maintainable data workflows.
The goal of this project is to implement a simple and effective data architecture that can support analytics and reporting needs. It integrates data ingestion, transformation, testing, and deployment into a streamlined process, ensuring high-quality data pipelines.
The project emphasizes minimal tooling, clear structure, and automation to build a scalable and maintainable data pipeline. This ensures that the project can grow with evolving business needs while maintaining efficiency and data quality.
To learn more about the overall architecture design & strategy can be found in our centralized handbook:
Raw, unformatted data loaded directly from source systems using various data tools.
nba_data- The primary source of NBA statistics data captured from an API & loaded via Sling/Airbyte.- Schema:
analytics.raw_nba_data
- Schema:
google_sheets- Internally maintained reference sheets related to the project & loaded via Sling/Airbyte.- Schema:
analytics.raw_google_sheets
- Schema:
Transformed data models built via dbt with 3 distinct environments to enable a sustainable development workflow.
- Development
- Schema: `analytics.dev_wilson
- One per developer to avoid conflicts or overriding changes during development.
- CI
- Schema:
analytics.ci - An isolated schema created specifically for testing Pull Request changes to ensure quality.
- Schema:
- Production
- Schemas:
analytics.staginganalytics.warehouseanalytics.marts
- Separation by layer for easier navigation and permission management.
- Schemas:
- Create your local development environment
- Use a local IDE (ex. VS Code), dbt Cloud or GitHub Codespaces
- Clone the current repo (or create a new one)
- Checkout the
mainbranch and rungit pullto sync changes
- Checkout the
- Create a New Branch for your new changes
- First, run
git branch your_branch_nameto create a new branch - Then run
git checkout your_branch_nameto switch to it
- First, run
- Start developing!
- Commit & Sync all changes to your branch during development
- IMPORTANT - All changes should follow the team Style Guide
- Create Pull Request
- When development is complete, Push your branch to GitHub & create a request
- Request peer reviews & confirm automated CI jobs succeed
- Merge changes to the
mainbranch- Confirm automated post-merge jobs succeed
- Get latest changes in your local environment
- Checkout the
mainbranch in your local terminal - Run "git pull" to sync the latest version of the code
- Checkout the
- Continue to develop & repeat the process
- Provide any other important call-outs of platform-specific information here.
- Learn more about dbt in the docs
- Check out Discourse for commonly asked questions and answers
- Join the chat on Slack for live discussions and support
- Check out the blog for the latest news on dbt's development and best practices
