SnowDDL is a declarative-style tool for object management automation in Snowflake.
It is not intended to replace other tools entirely, but to provide an alternative approach focused on practical data engineering challenges.
You may find SnowDDL useful if:
- complexity of object schema grows exponentially, and it becomes hard to manage;
- your organization maintains multiple Snowflake accounts (dev, stage, prod);
- your organization has multiple developers sharing the same Snowflake account and suffering from conflicts;
- it is necessary to generate some part of configuration dynamically using Python;
- SnowDDL is "stateless".
- SnowDDL can revert any changes.
- SnowDDL supports ALTER COLUMN.
- SnowDDL provides built-in "Role hierarchy" model.
- SnowDDL re-creates invalid views automatically.
- SnowDDL simplifies code review.
- SnowDDL supports creation of isolated "environments" for individual developers and CI/CD scripts.
- SnowDDL strikes a good balance between dependency management overhead and parallelism.
- SnowDDL configuration can be generated dynamically in Python code.
- SnowDDL can manage packages for Java and Python UDF scripts natively.
placeholders in YAML configs(done)documentation for dynamic config generation in Python ("advanced mode")(done)video tutorials(done, but more tutorials are coming in future)- full test coverage for all object types and transformations
Please use GitHub "Issues" to report bugs and technical problems.
Please use GitHub "Discussions" to ask questions and provide feedback.
Vitaly Markov, 2024
Enjoy!