SnowDDL
Search…
πŸ”΅
Blueprints
Blueprints are dataclasses representing the desired state of objects in Snowflake account.
All standard blueprints are located in /blueprint/blueprint.py.
Example:
@dataclass
class TableBlueprint(SchemaObjectBlueprint):
columns: List[TableColumn]
cluster_by: Optional[List[str]]
is_transient: bool
retention_time: Optional[int]
change_tracking: bool
search_optimization: bool

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 /blueprint/ident.py.
The following types of identifiers are currently available:
  • Ident - basic identifier for common object with no additional features;
  • AccountObjectIdent - basic identifier which supports env prefix, used for account-level object names like ROLE, WAREHOUSE, USER.
  • 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.
  • SchemaObjectIdentWithArgs - complex identifier with additional data types of arguments, represents fully qualified name of FUNCTION, PROCEDURE and other object types supporting overloading of names.
  • StageFileIdent - complex identifier with additional path, represents fully qualified name for STAGE FILE special object type.
  • TableConstraintIdent - complex identifier with additional list of columns, represents fully qualified name for table constraints, such as PRIMARY KEY, UNIQUE KEY, FOREIGN KEY.
It is very important to use the right type of identifier depending on specific use case. Identifiers are fundamental for env prefix feature to work correctly.
​
​
Copy link
On this page
Inheritance
Identifiers