エンティティの指定¶
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_sharedmy_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 |