엔터티 지정하기¶
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을 지정할 수 있습니다. 각 엔터티에서 사용할 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
|