개발자 APIs를 사용하여 템플릿을 순차적으로 실행하기¶
복잡한 분석의 경우 여러 템플릿을 특정 순서에 따라 실행해야 할 수도 있으며, 일부 경우 한 템플릿의 출력을 다른 템플릿의 입력으로 사용해야 할 수도 있습니다. 공급자는 특정 순서로 실행될 템플릿 시퀀스를 정의하기 위해 템플릿 체인 을 생성할 수 있습니다. 이 템플릿 체인을 정의할 때 공급자는 특정 템플릿의 결과를 체인의 후속 템플릿에서 사용할 수 있는지 여부를 지정할 수 있습니다.
클린룸 사용자는 템플릿 체인을 실행하여 체인에 있는 템플릿을 미리 정의된 순서대로 실행하는 분석을 수행합니다.
중간 결과 정보¶
공급자가 한 템플릿의 결과를 템플릿 체인의 후속 템플릿에서 사용할 수 있도록 하려면 템플릿의 결과에 대한 캐시를 생성하면 됩니다. 캐시가 있는 각 템플릿에는 해당 캐시의 만료 시간도 있습니다.
공급자가 템플릿에 캐시가 있다고 지정하면 사용자가 템플릿 체인을 처음 실행할 때 해당 템플릿의 결과가 클린룸 내의 테이블에 저장됩니다. 이 기본 테이블은 클린룸에서만 액세스할 수 있습니다. 다음에 사용자가 템플릿 체인을 실행할 때 Snowflake Data Clean Rooms 은 템플릿을 실행하기 전에 캐시가 만료되었는지 확인합니다. 캐시된 결과가 포함된 템플릿은 캐시가 만료되지 않는 한 다시 실행되지 않습니다.
템플릿 체인의 후속 템플릿은 템플릿에 적절한 Jinja 매개 변수를 포함하여 캐시를 입력으로 사용할 수 있습니다.
템플릿 체인 정의¶
공급자는 provider.add_template_chain
명령을 사용하여 템플릿 체인을 생성합니다. 공급자가 새 템플릿 체인에 추가할 템플릿은 템플릿 체인을 만들기 전에 존재해야 합니다.
provider.add_template_chain
명령은 다음 인자를 받습니다.
클린룸의 이름(문자열).
템플릿 체인의 이름(문자열).
템플릿 체인의 템플릿(JSON 오브젝트 배열).
provider.add_template_chain
명령을 사용하여 템플릿 체인을 만드는 예제는 예 섹션을 참조하십시오.
템플릿 체인에 템플릿 추가하기¶
공급자는 JSON 오브젝트 배열을 provider.add_template_chain
에 전달하여 템플릿 체인의 일부가 될 템플릿을 정의하며, 여기서 각 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'] ) ) );
템플릿 체인 명령¶
다음 명령을 사용하여 템플릿 체인 작업을 수행할 수 있습니다.
명령 |
설명 |
---|---|
|
새로운 템플릿 체인을 생성합니다. |
|
클린룸에 추가된 모든 템플릿 체인을 반환합니다. |
|
템플릿 체인의 정의를 반환합니다. |
|
클린룸에서 템플릿 체인을 삭제합니다. |
|
클린룸에서 모든 템플릿 체인을 삭제합니다. |
|
템플릿 체인의 모든 템플릿에 대한 예상 인자를 반환합니다. |
이러한 명령에 대한 자세한 내용은 다음을 참조하십시오.