개발자 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_namecache_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
    }
  ]
);
Copy

각 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'
  )
);
Copy
템플릿별 인자

특정 템플릿에 인자를 전달하려면 템플릿 이름을 필드명으로 사용하여 최상위 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']
    )
  )
);
Copy

템플릿 체인 명령

다음 명령을 사용하여 템플릿 체인 작업을 수행할 수 있습니다.

명령

설명

provider.add_template_chain

새로운 템플릿 체인을 생성합니다.

provider.view_added_template_chains

consumer.view_added_template_chains

클린룸에 추가된 모든 템플릿 체인을 반환합니다.

provider.view_template_chain_definition

consumer.view_template_chain_definition

템플릿 체인의 정의를 반환합니다.

provider.clear_template_chain

클린룸에서 템플릿 체인을 삭제합니다.

provider.clear_all_template_chains

클린룸에서 모든 템플릿 체인을 삭제합니다.

consumer.get_arguments_from_template_chain

템플릿 체인의 모든 템플릿에 대한 예상 인자를 반환합니다.

이러한 명령에 대한 자세한 내용은 다음을 참조하십시오.