엔터티 지정하기

snowflake.yml 정의 파일에서 여러 엔터티를 지정할 수 있습니다. 각 엔터티는 고유한 키로 식별됩니다. 아래 예제에서는 두 개의 엔터티를 entity_aentity_b 키로 지정합니다.

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

프로젝트 mixin

많은 경우 프로젝트 전체의 기본값을 정의하는 것이 유용할 수 있습니다. mixin은 개별 엔터티에서 공통적인 특성을 추출하는 방법을 제공합니다. 여러 개의 mixin을 지정할 수 있습니다. 각 엔터티에서 사용할 mixin을 선언하려면 meta.use_mixins 속성을 사용하여 지정해야 합니다.

엔터티와 함께 mixin을 사용하는 경우 mixin의 모든 속성을 해당 엔터티에 적용할 수 있는지 확인해야 합니다. 엔터티에서 사용할 수 없는 속성을 적용하면 오류가 발생합니다. 따라서 어떤 경우에는 여러 개의 mixin을 사용해야 할 수도 있습니다.

참고

mixin 값은 명시적으로 선언된 엔터티 특성으로 재정의됩니다.

다음 예제에는 두 개의 mixin stage_mixinsnowpark_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"
Copy

엔터티가 동일한 속성을 지정하는 여러 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
Copy

mixin 값을 적용하는 동작은 값 유형에 따라 달라집니다. 스칼라 값(문자열, 숫자, 부울)의 경우 값이 재정의됩니다.

mixin 표기법

명확한 결과

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

시퀀스의 경우 값을 병합하여 새로운 시퀀스를 생성합니다. 이 구현은 시퀀스에서 중복된 항목이 생성되는 것을 방지합니다.

mixin 표기법

명확한 결과

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

매핑 값을 위해 새로운 키가 추가되고 기존 값이 업데이트됩니다. 업데이트는 재귀적입니다.

mixin 표기법

명확한 결과

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