指定实体¶
在 snowflake.yml
定义文件中,您可以指定多个实体。每个实体都由一个唯一的密钥进行标识。以下示例使用 entity_a
和 entity_b
密钥指定了两个实体:
entities:
entity_a:
...
entity_b:
...
每个实体都必须指定一个类型。目前支持的类型包括:
实体标识符¶
可以在 snowflake.yml
文件中指定多个相同类型的实体。您可以通过以下方式命名实体:
在实体列表中使用唯一密钥。
以下示例显示了使用
entity_a
和entity_b
作为唯一密钥:entities: entity_a: ... entity_b: ...
为每个实体指定一个
identifier
名称。以下示例向
entity_a
和entity_b
实体添加标识符名称:entities: entity_a: identifier: entity_a_name ... entity_b: identifier: name: entity_a_name
向每个实体添加一个
identifier
对象。使用标识符对象允许为每个实体指定名称、数据库和架构,如以下示例所示:
entities: entity_b: identifier: name: entity_a_name schema: public database: DEV
如果未指定标识符,则使用实体密钥作为对象的名称,而不需要任何数据库或架构限定。
项目 mixin¶
在许多情况下,您可能会发现定义项目范围的默认值非常有用。Mixin 提供了一种从单个实体中提取常见属性的方法。您可以指定多个 mixin。您需要使用 meta.use_mixins
属性声明每个实体应使用哪些 mixin。
在实体中使用 mixin 时,必须确保 mixin 的所有属性都可以应用于该实体。应用实体上不可用的属性会导致错误。因此,在某些情况下,您可能需要使用多个 mixin。
备注
显式声明的实体属性可覆盖 Mixin 值。
以下示例包括两个混合:stage_mixin
和 snowpark_shared
。my_dashboard
实体仅使用 stage_mixin
,而 my_function
实体会使用这两种 mixin。
definition_version: 2
mixins:
stage_mixin:
stage: "my_stage"
snowpark_shared:
artifacts: ["app/"]
imports: ["@package_stage/package.zip"]
entities:
my_function:
type: "function"
...
meta:
use_mixins:
- "stage_mixin"
- "snowpark_shared"
my_dashboard:
type: "dashboard"
...
meta:
use_mixins:
- "stage_mixin"
如果一个实体使用多个指定相同属性的 mixin,则该实体会使用后期 mixin 的值。在以下示例中,foo
实体上密钥值将为 mixin_2_value
。
mixins:
mixin_1:
key: mixin_1_value
mixin_2:
key: mixin_2_value
entities:
foo:
meta:
use_mixin:
- mixin_1
- mixin_2
应用 mixin 值的行为取决于值类型。对于标量值(字符串、数字、布尔),值将被覆盖。
Mixin 表示 |
明确的结果 |
---|---|
definition_version: 2
mixins:
mix1:
stage: A
mix2:
stage: B
entities:
test_procedure:
stage: C
meta:
use_mixins:
- mix1
- mix2
|
definition_version: 2
entities:
test_procedure:
stage: C
|
如果是序列,则合并值以创建新序列。此实施可避免在序列中创建重复条目。
Mixin 表示 |
明确的结果 |
---|---|
definition_version: 2
mixins:
mix1:
artifacts:
- a.py
mix2:
artifacts:
- b.py
entities:
test_procedure:
artifacts:
- app/
meta:
use_mixins:
- mix1
- mix2
|
definition_version: 2
entities:
test_procedure:
artifacts:
- a.py
- b.py
- app/
|
对于映射值,将添加新键并更新现有值。更新具有递归性。
Mixin 表示 |
明确的结果 |
---|---|
definition_version: 2
mixins:
mix1:
secrets:
secret1: v1
mix2:
secrets:
secret2: v2
entities:
test_procedure:
secrets:
secret3: v3
meta:
use_mixins:
- mix1
- mix2
|
definition_version: 2
entities:
test_procedure:
secrets:
secret1: v1
secret2: v2
secret3: v3
|
definition_version: 2
mixins:
mix1:
secrets:
secret_name: v1
mix2:
secrets:
secret_name: v2
entities:
test_procedure:
secrets:
secret_name: v3
meta:
use_mixins:
- mix1
- mix2
|
definition_version: 2
entities:
test_procedure:
secrets:
secret_name: v3
|
definition_version: 2
mixins:
shared:
identifier:
schema: foo
entities:
sproc1:
identifier:
name: sproc
meta:
use_mixins: ["shared"]
sproc2:
identifier:
name: sproc
schema: from_entity
meta:
use_mixins: ["shared"]
|
definition_version: 2
entities:
sproc1:
identifier:
name: sproc
schema: foo
sproc2:
identifier:
name: sproc
schema: from_entity
|