SnowDDL
  • 👋Introduction
  • ðŸšĐGetting started
  • 📋Main features
  • ðŸŠĪSnowDDL vs. Declarative DCM
  • In-depth guides
    • 👓Object identifiers
    • 📐Data types
    • ðŸ“ĶObject types
    • 🎭Role hierarchy
    • 🚧Permission model
    • ðŸ”ĶOther guides
      • Administration user
      • Integrations
      • Inbound shares
      • Object OWNERSHIP
      • Safe & unsafe DDL
      • Dependency management
      • Short hash explained
      • Env Prefix explained
      • Team workflow
      • Limitations & workarounds
      • Fivetran
      • Airbyte
      • Encrypt user passwords
      • Iceberg Tables
  • Basic usage (CLI + YAML)
    • ðŸ’ŧCLI interface
    • ðŸ“ĶYAML configs
      • ACCOUNT PARAMETER
      • ACCOUNT POLICY
      • AGGREGATION POLICY
      • ALERT
      • AUTHENTICATION POLICY
      • BUSINESS ROLE
      • DATABASE
      • DYNAMIC TABLE
      • EVENT TABLE
      • EXTERNAL ACCESS INTEGRATION
      • EXTERNAL FUNCTION
      • EXTERNAL TABLE
      • FILE FORMAT
      • FUNCTION
      • HYBRID TABLE
      • ICEBERG TABLE
      • MASKING POLICY
      • MATERIALIZED VIEW
      • NETWORK POLICY
      • NETWORK RULE
      • PERMISSION MODEL
      • PIPE
      • PLACEHOLDER
      • PROCEDURE
      • PROJECTION POLICY
      • RESOURCE MONITOR
      • ROW ACCESS POLICY
      • SCHEMA
      • SECRET
      • SEQUENCE
      • SHARE (outbound)
      • STAGE
      • STAGE FILE
      • STREAM
      • TABLE
      • TASK
      • TECHNICAL ROLE
      • USER
      • VIEW
      • WAREHOUSE
    • 🏷ïļYAML placeholders
    • 📎YAML tag !include
    • 🔐YAML tag !decrypt
  • Single DB
    • ðŸĶ€Overview
  • Advanced usage (Python)
    • ⚙ïļProgrammatic config
    • 🐍Architecture overview
      • ðŸ”ĩBlueprints
      • ðŸŸĢConfig
      • 🟠Parsers
      • ðŸŸĒResolvers
      • ðŸ”īEngine
    • 🏗ïļQuery builder & formatter
  • Breaking changes log
    • 0.45.0 - March 2025
    • 0.41.0 - January 2025
    • 0.37.0 - December 2024
    • 0.36.0 - November 2024
    • 0.33.0 - October 2024
    • 0.27.0 - May 2024
  • Links
    • GitHub repository
    • PyPI package
    • YouTube tutorials
    • Changelog
    • LinkedIn profile
Powered by GitBook
On this page
  • Inheritance
  • Identifiers
  1. Advanced usage (Python)
  2. Architecture overview

Blueprints

PreviousArchitecture overviewNextConfig

Last updated 5 months ago

Blueprints are representing the desired state of objects in Snowflake account.

All standard blueprints are located in .

For example:

class TableBlueprint(SchemaObjectBlueprint):
    columns: List[TableColumn]
    cluster_by: Optional[List[str]] = None
    is_transient: bool = False
    retention_time: Optional[int] = None
    change_tracking: bool = False
    search_optimization: Union[bool, List[SearchOptimizationItem]] = False

Inheritance

All blueprints are derived from AbstractBlueprint class.

Blueprints of schema objects (TABLE, VIEW, etc.) are derived from SchemaObjectBlueprint.

Blueprints of objects supporting dependency management within the same object type are derived from additional DependsOnMixin.

Identifiers

Blueprints always use special objects called "identifiers" to describe unique object names in Snowflake. Identifiers are stored in .

The following types of identifiers are currently available:

  • Ident - basic identifier with no additional features, normally used for column names;

  • DatabaseIdent - identifier used specifically for DATABASE object type.

  • SchemaIdent - identifier used specifically for SCHEMA object type.

  • SchemaObjectIdent - complex identifier with multiple parts separated by . (dots), represents fully qualified name of schema-level objects like TABLE, VIEW.

  • TableConstraintIdent - complex identifier with additional list of columns, represents fully qualified name for table constraints, such as PRIMARY KEY, UNIQUE KEY, FOREIGN KEY.

AccountObjectIdent - basic identifier which supports , used for account-level object names like ROLE, WAREHOUSE, USER.

SchemaObjectIdentWithArgs - complex identifier with additional data types of arguments, represents fully qualified name of FUNCTION, PROCEDURE and other object types supporting of names.

StageFileIdent - complex identifier with additional path, represents fully qualified name for special object type.

It is very important to use the right type of identifier depending on specific use case. Identifier object is the core feature which makes it possible for to work correctly.

🐍
ðŸ”ĩ
Pydantic V2 models
/blueprint/blueprint.py
/blueprint/ident.py
env prefix
overloading
STAGE FILE
env prefix