エンティティの指定¶
snowflake.yml
定義ファイルでは、複数のエンティティを指定できます。各エンティティは一意のキーで識別されます。以下の例では、entity_a
と:codenowrap:entity_b
のキーで2つのエンティティを指定しています。
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
プロジェクト・ミキシン¶
多くの場合、プロジェクト全体のデフォルト値を定義しておくと便利です。ミキシンは、個々のエンティティから共通の属性を抽出する方法を提供します。ミキシンは複数指定できます。meta.use_mixins
プロパティを使用して、各エンティティでどのミキシンを使用するかを宣言する必要があります。
エンティティでミキシンを使用する場合は、ミキシンのすべてのプロパティがそのエンティティに適用できることを確認する必要があります。エンティティで使用できないプロパティを適用するとエラーになります。その結果、場合によっては複数のミキシンを使う必要があるかもしれません。
注釈
ミキシンの値は、明示的に宣言されたエンティティ属性によってオーバーライドされます。
次の例は、2つのミキシンを含んでいます。stage_mixin
and snowpark_shared
my_dashboard
エンティティは:codenowrap:stage_mixin
のみを使用しますが、my_function
エンティティは両方のミキシンを使用します。
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"
エンティティが同じプロパティを指定する複数のミキシンを使用している場合、エンティティは後のミキシンの値を使用します。以下の例では、 foo
エンティティのキーの値は:codenowrap: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
mixinsの値を適用する際の動作は、値のタイプによって異なります。スカラー値(文字列、数値、ブール値)の場合、値はオーバーライドされます。
ミキシン表記法 |
明示的な結果 |
---|---|
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
|
シーケンスの場合、値は新しいシーケンスを作成するためにマージされます。この実装により、シーケンスに重複したエントリーが作成されるのを避けることができます。
ミキシン表記法 |
明示的な結果 |
---|---|
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/
|
マッピング値については、新しいキーが追加され、既存の値が更新されます。更新は再帰的です。
ミキシン表記法 |
明示的な結果 |
---|---|
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
|