{"id":21363986,"url":"https://github.com/littlek0i/snowddl","last_synced_at":"2025-05-16T09:05:37.779Z","repository":{"id":41368800,"uuid":"456208523","full_name":"littleK0i/SnowDDL","owner":"littleK0i","description":"Declarative database change management tool for Snowflake","archived":false,"fork":false,"pushed_at":"2025-05-15T09:48:51.000Z","size":3276,"stargazers_count":122,"open_issues_count":8,"forks_count":31,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-05-15T10:40:42.040Z","etag":null,"topics":["alter","change","create","database","dcm","ddl","drop","grant","object","python","schema","snowflake","snowflakedb","sql"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/littleK0i.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-02-06T16:39:22.000Z","updated_at":"2025-05-15T09:48:54.000Z","dependencies_parsed_at":"2023-10-13T09:29:45.037Z","dependency_job_id":"2450cd2c-9386-4171-a440-8c73896b98f8","html_url":"https://github.com/littleK0i/SnowDDL","commit_stats":{"total_commits":97,"total_committers":2,"mean_commits":48.5,"dds":"0.010309278350515427","last_synced_commit":"5d4aa6cd2b2cf0b1c136e5e36e970b29ddb67bcb"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/littleK0i%2FSnowDDL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/littleK0i%2FSnowDDL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/littleK0i%2FSnowDDL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/littleK0i%2FSnowDDL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/littleK0i","download_url":"https://codeload.github.com/littleK0i/SnowDDL/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254501557,"owners_count":22081528,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alter","change","create","database","dcm","ddl","drop","grant","object","python","schema","snowflake","snowflakedb","sql"],"created_at":"2024-11-22T06:22:41.637Z","updated_at":"2025-05-16T09:05:32.771Z","avatar_url":"https://github.com/littleK0i.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SnowDDL\n\n[![PyPI](https://badge.fury.io/py/snowddl.svg)](https://badge.fury.io/py/snowddl)\n[![Getting Started](https://github.com/littleK0i/SnowDDL/actions/workflows/getting_started.yml/badge.svg)](https://github.com/littleK0i/SnowDDL/actions/workflows/getting_started.yml)\n[![Pytest](https://github.com/littleK0i/SnowDDL/actions/workflows/pytest.yml/badge.svg)](https://github.com/littleK0i/SnowDDL/actions/workflows/pytest.yml)\n\nSnowDDL is a [declarative-style](https://www.snowflake.com/blog/embracing-agile-software-delivery-and-devops-with-snowflake/) tool for object management automation in [Snowflake](http://snowflake.com).\n\nIt is not intended to replace other tools entirely, but to provide an alternative approach focused on practical data engineering challenges.\n\nYou may find SnowDDL useful if:\n\n- complexity of object schema grows exponentially, and it becomes hard to manage;\n- your organization maintains multiple Snowflake accounts (dev, stage, prod);\n- your organization has multiple developers sharing the same Snowflake account and suffering from conflicts;\n- it is necessary to generate some part of configuration dynamically using Python;\n\n## Main features\n\n1. SnowDDL is \"stateless\".\n2. SnowDDL can revert any changes.\n3. SnowDDL supports ALTER COLUMN.\n4. SnowDDL provides built-in \"Role hierarchy\" model.\n5. SnowDDL re-creates invalid views automatically.\n6. SnowDDL simplifies code review.\n7. SnowDDL supports creation of isolated \"environments\" for individual developers and CI/CD scripts.\n8. SnowDDL strikes a good balance between dependency management overhead and parallelism.\n9. SnowDDL configuration can be generated dynamically in Python code.\n10. SnowDDL can manage packages for Java and Python UDF scripts natively.\n\n## Quick links\n\n- [Getting started](https://docs.snowddl.com/getting-started)\n- [Main features](https://docs.snowddl.com/features)\n- [Object types](https://docs.snowddl.com/object-types)\n- [Role hierarchy](https://docs.snowddl.com/guides/role-hierarchy)\n- [CLI interface](https://docs.snowddl.com/basic/cli)\n- [YAML configs](https://docs.snowddl.com/basic/yaml-configs)\n- [Changelog](/CHANGELOG.md)\n\n## Introduction videos\n\n- [:video_camera: Main features](https://www.youtube.com/watch?v=e5K4jmlxvWc \"SnowDDL: Main Features\")\n- [:video_camera: Getting started](https://www.youtube.com/watch?v=OtMebyQizRA \"SnowDDL: Getting Started\")\n\n## Mini-roadmap\n\n- ~~placeholders in YAML configs~~ (done)\n- ~~documentation for dynamic config generation in Python (\"advanced mode\")~~ (done)\n- ~~video tutorials~~ (done, but more tutorials are coming in future)\n- full test coverage for all object types and transformations\n\n## Issues? Questions? Feedback?\n\nPlease use GitHub \"Issues\" to report bugs and technical problems.\n\nPlease use GitHub \"Discussions\" to ask questions and provide feedback.\n\n## Created by\n[Vitaly Markov](https://www.linkedin.com/in/markov-vitaly/), 2024\n\nEnjoy!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flittlek0i%2Fsnowddl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flittlek0i%2Fsnowddl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flittlek0i%2Fsnowddl/lists"}