개발자 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)