A series of practical data transformation challenges with dbt, designed to help you get comfortable with dbt and its functionality.
These challenges generally follow the content for the dbt Analytics Engineer Certification, providing hands-on experience with concepts covered in the certification.
📺 Installation walkthrough now available
To work with these challenges, please follow the steps below:
1. Fork the Repository
You should fork the repository to your own GitHub account:
- Click the "Fork" button at the top right corner of this page.
- Choose your GitHub account to fork the repository.
2. Clone Your Forked Repository
Once you've forked the repository, clone it to your local machine using:
- GitHub Desktop,
- VSCode's GitHub extension
- or the git command below
gh repo clone your-username/spill_the_dbt
3. Set Up Your Environment
- Install Python: Ensure you have Python installed on your machine that is compatible with dbt. Check What version of Python can I use?
- Install Required Python Packages, includes dbt-core, you may wish to run dbt another way.
- Setup your computer for working on dbt projects
Create a virtual environment
python -m venv dbt-env
Activate your virtual environment Windows:
dbt-env\Scripts\activate
Mac / Linux
source dbt-env/bin/activate
Install the required packages
pip install -r requirements.txt
4. Work Through the Challenge
- Follow the step-by-step instructions provided in the challenge markdown file.
- Write your dbt models, tests, and code as instructed.
- Use Git to commit your changes to your forked repository.
5. Optional: Share Your Solutions
If you'd like to share your solutions on social:
- Use the hashtag #SpillTheDBT
- Add an image of your code with carbon.now.sh/
- Write about your solution and the techniques used to complete the challenge
If you'd like to contribute back to the project, you can create a pull request for spill_the_dbt.
Week | Challenge | Estimated Time | Skills Tested | Walkthrough | Solutions |
---|---|---|---|---|---|
1. | Introduction to dbt-core | 1/2 a day | - Basic connection profiles - Migrating SQL code to dbt - Running and testing models - Referencing model outputs - Generating documentation |
📺 Walkthrough | Solution |
2. | Testing models to find errors | 1/2 a day | - Generic & relationship tests - Custom & singular tests - Tests from dbt packages |
Coming soon | Solution |
3. | Incremental Models and Python | 1 day | - Incremental models - Python models - API data integration - Tests from dbt packages |
Coming soon | Solution |
More challenges coming soon!
Contributions are welcome! If you have ideas for new challenges, improvements to existing ones, or want to share your solutions, please feel free to:
- Open an Issue: Use the GitHub Issues tab to discuss your ideas or report problems.
- Create a Pull Request: Fork the repository, make your changes, and submit a pull request for review.
Please ensure your contributions align with the project's goals and that you follow the contribution guidelines.
Contribution Guidelines
- Be respectful and considerate in your interactions.
- Avoid offensive or inappropriate language and content.
- Provide constructive feedback and be open to feedback on your contributions.
This project is licensed under the MIT License - see the LICENSE file for details.
Special thanks to the dbt community for their support and resources. These challenges are inspired by the content for the dbt Analytics Engineer Certification.