ðĩBlueprints
Blueprints are Pydantic V2 models representing the desired state of objects in Snowflake account.
All standard blueprints are located in /blueprint/blueprint.py
.
For example:
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 with no additional features, normally used for column names;
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 likeTABLE
,VIEW
.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. Identifier object is the core feature which makes it possible for env prefix to work correctly.
Last updated