エンティティの指定

snowflake.yml 定義ファイルでは、複数のエンティティを指定できます。各エンティティは一意のキーで識別されます。以下の例では、entity_a と:codenowrap:entity_b のキーで2つのエンティティを指定しています。

entities:
  entity_a:
    ...
  entity_b:
    ...
Copy

各エンティティはタイプを指定する必要があります。現在サポートされているタイプは以下の通りです。

エンティティ識別子

snowflake.yml ファイルで、同じタイプのエンティティを複数指定できます。エンティティには以下の方法で名前を付けることができます。

  • エンティティ・リストで一意のキーを使用します。

    次の例では、 entity_aentity_b をユニーク・キーとして使っています。

    entities:
      entity_a:
        ...
      entity_b:
        ...
    
    Copy
  • 各エンティティに identifier 名を指定します。

    以下の例では、 entity_aentity_b のエンティティに識別子名を追加しています。

    entities:
      entity_a:
        identifier: entity_a_name
        ...
      entity_b:
        identifier:
          name: entity_a_name
    
    Copy
  • 各エンティティに identifier オブジェクトを追加します。

    識別子オブジェクトを使用すると、次の例に示すように、各エンティティの名前、データベース、スキーマを指定することができます。

    entities:
      entity_b:
        identifier:
          name: entity_a_name
          schema: public
          database: DEV
    
    Copy

プロジェクト・ミキシン

多くの場合、プロジェクト全体のデフォルト値を定義しておくと便利です。ミキシンは、個々のエンティティから共通の属性を抽出する方法を提供します。ミキシンは複数指定できます。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"
Copy

エンティティが同じプロパティを指定する複数のミキシンを使用している場合、エンティティは後のミキシンの値を使用します。以下の例では、 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
Copy

mixinsの値を適用する際の動作は、値のタイプによって異なります。スカラー値(文字列、数値、ブール値)の場合、値はオーバーライドされます。

ミキシン表記法

明示的な結果

definition_version: 2
mixins:
  mix1:
    stage: A

  mix2:
    stage: B

entities:
  test_procedure:
    stage: C
    meta:
      use_mixins:
        - mix1
        - mix2
Copy
definition_version: 2
entities:
  test_procedure:
    stage: C
Copy

シーケンスの場合、値は新しいシーケンスを作成するためにマージされます。この実装により、シーケンスに重複したエントリーが作成されるのを避けることができます。

ミキシン表記法

明示的な結果

definition_version: 2
mixins:
  mix1:
    artifacts:
    - a.py

  mix2:
    artifacts:
    - b.py

entities:
  test_procedure:
    artifacts:
      - app/
    meta:
      use_mixins:
        - mix1
        - mix2
Copy
definition_version: 2
entities:
  test_procedure:
    artifacts:
      - a.py
      - b.py
      - app/
Copy

マッピング値については、新しいキーが追加され、既存の値が更新されます。更新は再帰的です。

ミキシン表記法

明示的な結果

definition_version: 2
mixins:
  mix1:
    secrets:
      secret1: v1

  mix2:
    secrets:
      secret2: v2

entities:
  test_procedure:
    secrets:
      secret3: v3
    meta:
      use_mixins:
        - mix1
        - mix2
Copy
definition_version: 2
entities:
  test_procedure:
    secrets:
      secret1: v1
      secret2: v2
      secret3: v3
Copy
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
Copy
definition_version: 2
entities:
  test_procedure:
    secrets:
      secret_name: v3
Copy
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"]
Copy
definition_version: 2
entities:
  sproc1:
    identifier:
      name: sproc
      schema: foo
  sproc2:
    identifier:
      name: sproc
      schema: from_entity
Copy