개발자 API를 사용해서 템플릿을 순차적으로 실행해요
개발자 API를 사용해서 템플릿을 순차적으로 실행해요
서비스 종료 안내
레거시 Provider 및 Consumer Data Clean Rooms는 서비스가 중단될 예정이에요. 자세한 일정과 마이그레이션 안내는 end-of-life timeline을 참고하세요.
복잡한 분석에서는 여러 템플릿을 특정 순서로 실행해야 할 수 있으며, 때로는 한 템플릿의 출력을 다른 템플릿의 입력으로 사용해야 할 수도 있어요. 공급자는 특정 순서로 실행할 템플릿들의 시퀀스를 정의하기 위해 template chain을 만들 수 있어요. 이 template chain을 정의할 때 공급자는 특정 템플릿의 결과를 체인에 있는 이후 템플릿에서 사용할 수 있게 할지 여부를 지정할 수 있어요.
Clean Room 사용자는 template chain을 실행하여 체인에 있는 템플릿들을 미리 정의된 순서대로 실행하는 분석을 수행해요.
출처: 문서
본문
중간 결과에 대해
프로바이더가 템플릿 체인의 후속 템플릿에서 하나의 템플릿 결과를 사용할 수 있도록 하려면 해당 템플릿 결과에 대한 캐시를 만들 수 있어요. 캐시가 있는 각 템플릿에는 해당 캐시의 만료 시간도 있어요.
프로바이더가 템플릿에 캐시가 있다고 지정하면, 사용자가 템플릿 체인을 처음 실행할 때 해당 템플릿의 결과가 클린 룸 내부의 테이블에 저장돼요. 이 기본 테이블은 클린 룸 자체만 접근할 수 있어요. 사용자가 템플릿 체인을 다음에 실행하면 Snowflake Data Clean Rooms는 템플릿을 실행하기 전에 캐시가 만료되었는지 확인해요. 캐시된 결과가 있는 템플릿은 캐시가 만료되지 않는 한 다시 실행되지 않아요.
템플릿 체인의 후속 템플릿은 템플릿에 적절한 Jinja 매개 변수를 포함하여 캐시를 입력으로 사용할 수 있어요.
템플릿 체인 정의
프로바이더는 provider.add_template_chain 명령을 사용하여 템플릿 체인을 만들어요. 프로바이더가 새 템플릿 체인에 추가하려는 템플릿은 템플릿 체인을 만들기 전에 이미 존재해야 해요.
provider.add_template_chain 명령은 다음 인수를 허용해요:
-
클린 룸의 이름 (문자열).
-
템플릿 체인의 이름 (문자열).
-
템플릿 체인의 템플릿 (JSON 객체 배열).
provider.add_template_chain 명령을 사용하여 템플릿 체인을 만드는 예시는 예제를 참조하세요.
템플릿 체인에 템플릿 추가
프로바이더는 provider.add_template_chain에 JSON 객체 배열을 전달하여 템플릿 체인의 일부가 될 템플릿을 정의해요. 각 JSON 객체는 템플릿 하나를 나타내요. JSON 객체의 순서에 따라 템플릿이 실행되는 순서가 결정돼요.
템플릿의 JSON 객체에는 다음 필드가 포함될 수 있어요:
template_name (문자열)
템플릿 체인에 추가되는 템플릿을 지정해요. 템플릿은 이미 존재해야 해요.
이 필드는 필수예요.
cache_results (부울)
템플릿 체인의 다른 템플릿이 접근할 수 있도록 템플릿 결과를 캐시할지 여부를 결정해요. 결과를 캐시하려면 TRUE를 지정하세요.
이 필드는 필수예요. TRUE인 경우 output_table_name 및 cache_expiration_hours 필드도 필수예요.
output_table_name (문자열)
cache_results = TRUE인 경우 템플릿 결과가 저장되는 Snowflake 테이블의 이름을 지정해요.
이 필드는 cache_results = TRUE인 경우 필수예요.
jinja_output_table_param (문자열)
cache_results = TRUE인 경우 output_table_name에 저장된 결과를 받기 위해 다른 템플릿이 포함해야 하는 Jinja 매개 변수의 이름을 지정해요.
이 필드는 선택사항이에요.
cache_expiration_hours (정수)
cache_results = TRUE인 경우 캐시의 결과가 삭제되기 전까지의 시간 수를 지정해요. 캐시가 만료되면 다음에 템플릿 체인이 실행될 때 캐시가 템플릿 결과로 새로 고쳐져요.
이 필드는 cache_results = TRUE인 경우 필수예요.
예제
이 예제에서 프로바이더는 다음을 원해요:
-
클린 룸
collab_clean_room에 템플릿 체인insights_chain을 만들어요. -
crosswalk템플릿이transaction_insights템플릿보다 먼저 실행되도록 템플릿 체인을 정의해요. -
crosswalk템플릿의 결과를 캐시하여transaction_insights템플릿의 입력으로 사용할 수 있게 해요.
CALL samooha_by_snowflake_local_db.provider.add_template_chain(
'collab_clean_room',
'insights_chain',
[
{
'template_name': 'crosswalk',
'cache_results': True,
'output_table_name': 'crosswalk',
'jinja_output_table_param': 'crosswalk_table_name',
'cache_expiration_hours': 2190
},
{
'template_name': 'transaction_insights',
'cache_results': False
}
]
);
각 JSON 객체에 대한 자세한 내용은 템플릿 체인에 템플릿 추가를 참조하세요.
템플릿 체인 실행
클린 룸 사용자는 consumer.run_analysis 명령을 실행하여 템플릿 체인을 실행해요. 이 명령은 단일 템플릿을 실행할 때 사용하는 명령과 동일해요. 템플릿 체인을 실행하면 체인의 각 템플릿이 미리 정의된 순서대로 실행되어 최종 결과를 얻어요.
consumer.run_analysis 명령은 템플릿 체인의 Jinja 템플릿에 전달하는 인수를 허용해요. 체인의 템플릿에서 기대하는 인수를 확인하려면 consumer.get_arguments_from_template_chain 명령을 실행하면 돼요.
consumer.run_analysis에 전달되는 인수는 체인의 특정 템플릿에만 해당하거나 체인의 모든 템플릿에 대한 인수일 수 있어요.
공통 인수
템플릿 체인의 모든 템플릿에 인수를 전달하려면 consumer.run_analysis를 사용하여 단일 템플릿을 실행할 때와 구문이 동일해요. 예를 들어 다음 명령은 where_clause 인수의 값을 템플릿 체인의 모든 템플릿에 전달해요:
CALL samooha_by_snowflake_local_db.consumer.run_analysis(
'collab_clean_room',
'insights_chain',
['MY_CONSUMER_DB.C_SCHEMA.CONVERSIONS'],
['PROVIDER_DB.P_SCHEMA.EXPOSURES'],
object_construct(
'where_clause', 'p.EMAIL=c.EMAIL'
)
);
템플릿별 인수
특정 템플릿에 인수를 전달하려면 최상위 object_construct의 하위 항목으로 템플릿 이름을 필드 이름으로 사용하는 다른 object_construct를 추가해요. 예를 들어 다음 명령은 dimensions 인수의 값을 crosswalk_template 템플릿에만 전달해요:
CALL samooha_by_snowflake_local_db.consumer.run_analysis(
'collab_clean_room',
'insights_chain',
['MY_CONSUMER_DB.C_SCHEMA.CONVERSIONS'],
['PROVIDER_DB.P_SCHEMA.EXPOSURES'],
object_construct(
'where_clause', 'p.EMAIL=c.EMAIL',
'crosswalk_template', object_construct(
'dimensions', ['p.CAMPAIGN']
)
)
);
템플릿 체인 명령
템플릿 체인을 작업할 때 다음 명령을 사용할 수 있어요: ``
``
``
``
---
| Command | Description |
|---|---|
| provider.add_template_chain | 새 템플릿 체인을 생성합니다. |
| provider.view_added_template_chainsconsumer.view_added_template_chains | 클린 룸에 추가된 모든 템플릿 체인을 반환합니다. |
| provider.view_template_chain_definitionconsumer.view_template_chain_definition | 템플릿 체인의 정의를 반환합니다. |
| provider.clear_template_chain | 클린 룸에서 템플릿 체인을 제거합니다. |
| provider.clear_all_template_chains | 클린 룸에서 모든 템플릿 체인을 제거합니다. |
| consumer.get_arguments_from_template_chain | 템플릿 체인의 모든 템플릿에 대해 예상되는 인수를 반환합니다. |
이러한 명령에 대한 자세한 내용은 다음을 참조하세요.
- [Snowflake Data Clean Rooms: Provider API 참조 가이드](https://docs.snowflake.com/user-guide/cleanrooms/provider)
- [Snowflake Data Clean Rooms: Consumer API 참조 가이드](https://docs.snowflake.com/user-guide/cleanrooms/consumer).
---
## 더 알아보기 (Learn more)
- [end-of-life timeline](https://docs.snowflake.com/user-guide/cleanrooms/pc-eol)
- [Snowflake Data Clean Rooms: Provider API reference guide](https://docs.snowflake.com/user-guide/cleanrooms/provider)
- [Snowflake Data Clean Rooms: Consumer API reference guide](https://docs.snowflake.com/user-guide/cleanrooms/consumer)