snowddl


Namesnowddl JSON
Version 0.26.0 PyPI version JSON
download
home_pagehttps://github.com/littleK0i/snowddl
SummaryObject management automation tool for Snowflake
upload_time2024-04-19 17:33:59
maintainerNone
docs_urlNone
authorVitaly Markov
requires_python>=3.8
licenseNone
keywords snowflake database schema object change ddl sql create alter drop grant table view
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # SnowDDL

[![PyPI](https://badge.fury.io/py/snowddl.svg)](https://badge.fury.io/py/snowddl)
[![Getting Started](https://github.com/littleK0i/SnowDDL/actions/workflows/getting_started.yml/badge.svg)](https://github.com/littleK0i/SnowDDL/actions/workflows/getting_started.yml)
[![Pytest](https://github.com/littleK0i/SnowDDL/actions/workflows/pytest.yml/badge.svg)](https://github.com/littleK0i/SnowDDL/actions/workflows/pytest.yml)

SnowDDL 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).

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;

## Main features

1. SnowDDL is "stateless".
2. SnowDDL can revert any changes.
3. SnowDDL supports ALTER COLUMN.
4. SnowDDL provides built-in "Role hierarchy" model.
5. SnowDDL re-creates invalid views automatically.
6. SnowDDL simplifies code review.
7. SnowDDL supports creation of isolated "environments" for individual developers and CI/CD scripts.
8. SnowDDL strikes a good balance between dependency management overhead and parallelism.
9. SnowDDL configuration can be generated dynamically in Python code.
10. SnowDDL can manage packages for Java and Python UDF scripts natively.

## Quick links

- [Getting started](https://docs.snowddl.com/getting-started)
- [Main features](https://docs.snowddl.com/features)
- [Object types](https://docs.snowddl.com/object-types)
- [Role hierarchy](https://docs.snowddl.com/guides/role-hierarchy)
- [CLI interface](https://docs.snowddl.com/basic/cli)
- [YAML configs](https://docs.snowddl.com/basic/yaml-configs)
- [Changelog](/CHANGELOG.md)

## Introduction videos

- [:video_camera: Main features](https://www.youtube.com/watch?v=e5K4jmlxvWc "SnowDDL: Main Features")
- [:video_camera: Getting started](https://www.youtube.com/watch?v=OtMebyQizRA "SnowDDL: Getting Started")

## Mini-roadmap

- ~~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

## Issues? Questions? Feedback?

Please use GitHub "Issues" to report bugs and technical problems.

Please use GitHub "Discussions" to ask questions and provide feedback.

## Created by
[Vitaly Markov](https://www.linkedin.com/in/markov-vitaly/), 2024

Enjoy!

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/littleK0i/snowddl",
    "name": "snowddl",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "snowflake, database, schema, object, change, ddl, sql, create, alter, drop, grant, table, view",
    "author": "Vitaly Markov",
    "author_email": "wild.desu@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/26/41/f21a81f18db7ff10ff98eb814525cdc444d2422a22452ed16cdacccb4b6b/snowddl-0.26.0.tar.gz",
    "platform": null,
    "description": "# 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",
    "bugtrack_url": null,
    "license": null,
    "summary": "Object management automation tool for Snowflake",
    "version": "0.26.0",
    "project_urls": {
        "Homepage": "https://github.com/littleK0i/snowddl"
    },
    "split_keywords": [
        "snowflake",
        " database",
        " schema",
        " object",
        " change",
        " ddl",
        " sql",
        " create",
        " alter",
        " drop",
        " grant",
        " table",
        " view"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "21887f9b81809ec8fdb7b79fec641eb928c587527630c02c406c2713e8b3091d",
                "md5": "194c749982247e82398ebad3bf4b43c4",
                "sha256": "fb0a8a14290b398ca97862f6193eadbcae14aa2e997a2954ec15b1cbc85cf311"
            },
            "downloads": -1,
            "filename": "snowddl-0.26.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "194c749982247e82398ebad3bf4b43c4",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 215594,
            "upload_time": "2024-04-19T17:33:54",
            "upload_time_iso_8601": "2024-04-19T17:33:54.636131Z",
            "url": "https://files.pythonhosted.org/packages/21/88/7f9b81809ec8fdb7b79fec641eb928c587527630c02c406c2713e8b3091d/snowddl-0.26.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2641f21a81f18db7ff10ff98eb814525cdc444d2422a22452ed16cdacccb4b6b",
                "md5": "00818c4b997840401715616d2aa42bad",
                "sha256": "3dede154796f200fd4b9f4be4fb410f36a6255d4e1009f14ba19ff99f303be23"
            },
            "downloads": -1,
            "filename": "snowddl-0.26.0.tar.gz",
            "has_sig": false,
            "md5_digest": "00818c4b997840401715616d2aa42bad",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 113928,
            "upload_time": "2024-04-19T17:33:59",
            "upload_time_iso_8601": "2024-04-19T17:33:59.473604Z",
            "url": "https://files.pythonhosted.org/packages/26/41/f21a81f18db7ff10ff98eb814525cdc444d2422a22452ed16cdacccb4b6b/snowddl-0.26.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-19 17:33:59",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "littleK0i",
    "github_project": "snowddl",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "snowddl"
}
        
Elapsed time: 0.27464s