기본 다자간 공동 작업

소개

이 항목에서는 기본 다자간 공동 작업을 생성하는 단계를 안내합니다. 템플릿과 데이터 오퍼링을 등록하는 방법, 공동 작업의 초기 버전에 데이터를 추가하는 방법, 공동 작업이 생성된 후 공동 작업자가 리소스를 추가하는 방법을 보여줍니다. 또한 공동 작업에서 템플릿과 데이터 리소스를 사용하여 쿼리를 실행하는 방법도 보여줍니다.

기본 클린룸 공동 작업 워크플로

다음은 기본 다자간 클린룸 공동 작업 시나리오입니다.

  1. 공동 작업 소유자 는 공동 작업의 초기 구성에 표시할 템플릿 또는 데이터 오퍼링을 등록합니다.

  2. 소유자는 선택적으로 공동 작업자에게 공동 작업의 초기 구성에 표시할 템플릿 또는 데이터 오퍼링을 등록하도록 요청합니다. 그런 다음 공동 작업자는 소유자에게 등록된 항목의 리소스 IDs를 제공합니다.

  3. 소유자는 공동 작업을 생성 합니다. 공동 작업은 공동 작업 YAML 사양에 의해 정의됩니다. 여기에는 공동 작업자, 공동 작업자의 역할, 그리고 초기 버전의 공동 작업 포함되어야 하는 모든 리소스가 나열되어 있습니다.

    • 공동 작업이 생성되면 공동 작업자 및 공동 작업자의 공동 작업 역할 세트가 고정됩니다.

    • 공동 작업자의 공동 작업 역할에서 허용하는 경우 공동 작업이 생성된 후 공동 작업자가 리소스를 추가할 수 있습니다.

    • 공동 작업이 다른 클라우드 호스팅 리전의 사용자와 데이터를 공유하는 경우 공유자는 계정에서 클라우드 간 자동 복제를 활성화 해야 합니다.

  4. 공동 작업자는 :ref:`공동 작업을 검토하고 참여 <label-dcr_collaboration_join_collaboration>`합니다.

  5. 그런 다음 공동 작업자는 선택적으로 공동 작업 역할에 따라 템플릿 및 데이터 오퍼링과 같은 추가 리소스를 공동 작업에 연결 합니다. 추가 리소스는 언제든지 공동 작업에 추가할 수 있습니다.

  6. 분석 실행자는 공동 작업에서 사용 가능한 모든 데이터를 사용하여 공동 작업에서 할당된 템플릿을 실행 할 수 있습니다. 분석 실행자는 분석 비용을 부담합니다. 템플릿은 쿼리 결과를 응답을 통해 반환하거나 호출자 또는 다른 공동 작업자에게 결과를 활성화 하도록 설계할 수 있습니다.

다음 섹션에서는 이러한 각 단계에 대한 세부 정보를 설명합니다.

공동 작업 생성

공동 작업을 생성하려면 모든 공동 작업자 및 해당 역할 을 정의하는 공동 작업 사양 을 설계합니다.

공동 작업이 생성되는 즉시 공동 작업에서 리소스를 사용할 수 있도록 하려는 경우, 공동 작업 소유자는 공동 작업을 생성하기 전에 해당 리소스를 등록 및 연결 하고 공동 작업 사양에 리소스 IDs를 포함합니다.

소유자가 공동 작업자의 리소스를 사용하고자 하는 경우, 해당 사용자에게 리소스를 등록하고 리소스 IDs를 소유자에게 전달하도록 요청하여 공동 작업 사양에 포함할 수 있습니다. 또한 소유자는 공동 작업 사양에서 현재 연결되어 있지 않지만 나중에 연결할 수 있는 리소스를 나타냅니다.

그런 다음 소유자는 INITIALIZE를 호출하여 공동 작업 생성을 시작합니다. 또한 INITIALIZE는 기본적으로 소유자를 자동으로 공동 작업에 조인합니다. 이는 비동기 프로세스이므로 소유자는 상태가 JOINED가 될 때까지 GET_STATUS를 호출해야 합니다.

다음 코드 조각은 공동 작업을 생성하고 조인하는 방법을 보여줍니다.

 1  CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.INITIALIZE(
 2    $$
 3    api_version: 2.0.0
 4    spec_type: collaboration
 5    name: my_first_collaboration
 6    owner: alice
 7    collaborator_identifier_aliases:
 8      alice: example_com.acct_abc
 9      bob: another_example.acct_xyz
10    analysis_runners:
11      bob:
12        data_providers:
13          alice:
14            data_offerings: [] -- alice has not provided data to bob, but can do so in the future.
15          bob:
16            data_offerings: [customers_v1]  -- bob has registered a data offering and made it available to himself.
17        templates: []   -- No templates available yet for bob.
18      alice:
19        data_providers:
20          alice:
21            data_offerings: []
22          bob:
23            data_offerings: []
24        templates: []
25    $$,
26    'APP_WH'            -- Use this warehouse for initialization.
27  );                    --  XSMALL or SMALL warehouses are recommended for initialization.
28  SET collaboration_name = 'my_first_collaboration';
29
30  -- INITIALIZE automatically joins the owner. Check status until JOINED.
31  CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.GET_STATUS($collaboration_name);
32
33  -- Collaboration is visible here when it's joined.
34  CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_COLLABORATIONS();

스크립트에 대한 참고 사항:

  • 공동 작업은 별칭이 alicebob 인 두 명의 공동 작업자로 구성됩니다. 별칭을 사용하는 모든 곳에서 전체 데이터 공유 ID를 사용할 수 있지만, 이는 사용자 친화적이지 않습니다.

  • alice 는 소유자입니다.

  • alicebob 은 모두 분석 실행자입니다.

  • alicebob 은 서로에게 데이터 공급자입니다.

  • 데이터 공급자인 경우 data_offerings 필드를 포함해야 합니다. 이 필드는 채워지거나 비어 있을 수 있으며, 이는 현재 데이터 오퍼링이 없지만 나중에 추가할 수 있음을 나타냅니다.

  • alicebob 또는 자신에게 데이터를 제공하지 않지만 나중에 제공할 수 있습니다(14행, 22행).

  • bob 은 이미 데이터 오퍼링을 등록했으며 초기 공동 작업에서 자신에게 제공했습니다(16행).

  • bobalice 에게 데이터를 제공하지 않지만 나중에 제공할 수 있습니다(24행).

  • alicebob 모두 아직 사용 가능한 템플릿이 없지만 나중에 할당될 수 있습니다(18, 25행). 참고로, templates 필드는 분석 실행자의 경우 선택 사항입니다. 초기화 중에 이 필드를 생략해도 공동 작업자는 나중에 이 분석 실행자에게 템플릿을 할당할 수 있습니다.

공동 작업 검토 및 조인

공동 작업에서 리소스를 공유하고 분석을 실행하려면 공동 작업에 조인해야 합니다.

  • auto_join_warehouse 가 제공된 경우 생성자 가 INITIALIZE를 호출하면 자동으로 조인됩니다. auto_join_warehouse 가 제공되지 않는 경우, 생성자는 INITIALIZE가 완료된 후 JOIN을 호출합니다.

  • *비생성자*는 REVIEW를 호출한 후 JOIN을 호출합니다.

    • REVIEW는 공동 작업 및 해당 리소스의 개요를 반환합니다. REVIEW는 한 번만 호출할 수 있습니다.

    • JOIN은 계정에 공동 작업 클린룸을 설치하고 공동 작업에 조인합니다.

INITIALIZE 및 JOIN은 모두 비동기 프로시저이며, 완료하는 데 몇 분 정도 소요됩니다. 각 단계가 완료되는 시점을 확인하려면 GET_STATUS를 호출해야 합니다.

중요

계정의 클라우드 호스팅 리전이 공동 작업 소유자의 리전과 다른 경우, REVIEW는 추가적인 비동기 설정 단계를 트리거합니다. 설정이 완료되었음을 나타내는 성공적인 응답을 반환할 때까지 REVIEW를 반복해서 호출합니다.

참여는 비동기 프로세스입니다. 상태가 JOINED로 표시되는 시점을 확인하려면 GET_STATUS를 호출합니다.

분석 실행

공동 작업에서 분석 실행자 역할을 맡은 경우 공동 작업에서 자신과 공유된 데이터 소스에 대해 분석을 실행할 수 있습니다.

공동 작업은 다음 두 가지 유형의 쿼리를 지원합니다.

  • 템플릿 분석. 이러한 쿼리는 템플릿(템플릿화된 JinjaSQL 문)을 공동 작업에 연결합니다. 템플릿은 결과를 즉시 사용자에게 반환하는 분석 템플릿이거나 결과를 지정된 참여자의 Snowflake 계정에 저장하는 활성화 템플릿일 수 있습니다.

  • 자유 형식 SQL 쿼리. 데이터 공급자가 허용하는 경우 공동 작업자 자격 증명으로 로그인하면 SQL을 사용하여 지정된 데이터 오퍼링에 액세스할 수 있습니다. 공동 작업을 통해 노출된 정규화된 뷰 이름에 액세스하여 Collaboration API 프로시저를 호출하지 않고 직접 SQL 쿼리를 실행합니다.

분석 실행자는 분석 실행 비용을 부담합니다.

공동 작업 사양에 따라 템플릿 실행, 결과 활성화, 자유 형식 SQL 쿼리 실행 가능 여부가 결정됩니다. 권한과 사용할 수 있는 데이터 및 템플릿은 공동 작업 사양에 설명되어 있습니다.

참고

데이터 소스의 열은 템플릿 또는 사용자에게 노출될 때 새 이름으로 바뀔 수 있습니다. 소스 열의 이름을 바꾸는 방법과 시기를 알아보려면 소스 열 이름 바꾸기 섹션을 참조하세요. 템플릿 및 사용자가 제공한 인자(예: 조인 열 이름)는 열 이름이 바뀐 경우 원래 이름이 아닌 최종 이름을 사용해야 합니다.

다음 섹션에서 이러한 모든 분석 유형에 대해 자세히 알아보세요.

템플릿에서 분석 실행

템플릿에서 분석을 실행하려면 실행할 수 있는 템플릿 목록을 보고, 사용할 수 있는 데이터 오퍼링 목록을 확인한 다음, 값을 개별 매개변수 또는 YAML 형식의 분석 사양으로 사용하여 RUN을 호출합니다.

실행 구성에서 source_tables 필드에 전달하는 테이블은 템플릿의 source_table 매개변수를 채웁니다. 템플릿의 my_table 매개 변수는 자체 데이터와 함께 Snowflake Standard Edition을 사용하지 않는 한 채워지거나 사용되지 않습니다.

참고

리소스 설치는 비동기식입니다. 템플릿을 방금 설치한 경우 템플릿을 실행할 수 있을 때까지 다소 시간이 걸릴 수 있습니다. 템플릿에 코드 번들이 포함된 경우 템플릿을 사용할 수 있을 때까지 시간이 더 걸릴 수 있습니다. 코드 번들을 사용할 수 있는지 확인하는 방법에 대해 알아보세요.

다음 예제에서는 사용자가 액세스할 수 있는 데이터 오퍼링 및 템플릿을 나열한 다음, sales_join_template 템플릿(VIEW_TEMPLATES에 나열되어 있다고 가정)을 사용하여 분석을 실행하고 5개의 명명된 인자를 템플릿에 전달합니다.

-- See which data offerings are available.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_DATA_OFFERINGS($collaboration_name);

-- See which templates you can run.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_TEMPLATES($collaboration_name);

-- Pass in the arguments in analysis YAML format.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.RUN(
  $collaboration_name,
  $$
    api_version: 2.0.0
    spec_type: analysis
    name: My_analysis
    description: Sales results Q2 2025
    template: sales_join_template

    template_configuration:
      view_mappings:
        source_tables:
          -  user1_alias.data_offering_v1.table_1
          -  user2_alias.another_data_offering_v1.table_2
      arguments:                                            -- The template defines conv_purchase_id and the other four arguments.
         conv_purchase_id: PURCHASE_ID                      -- You must examine a template to see which arguments it supports.
         conv_purchase_amount: PURCHASE_AMOUNT
         publisher_impression_id: IMPRESSION_ID
         publisher_campaign_name: CAMPAIGN_NAME
         publisher_device_type: DEVICE_TYPE
  $$ );

데이터에 대해 자유 형식 SQL 쿼리 활성화 및 실행

데이터 공급자는 분석 실행자에게 데이터 오퍼링에 대해 임의의 SQL 쿼리를 실행할 수 있는 권한을 부여할 수 있습니다. 즉, 분석 실행자는 템플릿을 호출하는 대신 데이터 오퍼링에 대해 임의의 SQL 쿼리를 직접 실행할 수 있습니다.

자유 형식 SQL 쿼리에 대해 자세히 알아보려면 자유 형식 SQL 쿼리 섹션을 참조하세요.

Standard Edition을 사용하는 경우 자체 데이터로 분석 실행

Standard Edition을 사용하는 경우 표준 방식으로 분석을 실행할 수 있습니다. 그러나 데이터를 공동 작업에 연결하여 다른 사용자와 공유할 수는 없습니다. 자체 데이터 세트를 템플릿으로 전달하는 유일한 방법은 여기에 설명된 기법을 사용하는 것입니다.

Snowflake Standard Edition에서 공동 작업에 자체 데이터를 사용하려면:

  1. REGISTER_DATA_OFFERING을 호출하여 데이터 오퍼링을 등록합니다.

  2. 공동 작업에 데이터를 연결하여 사용하려면 LINK_LOCAL_DATA_OFFERING을 호출합니다. 다른 공동 작업자는 로컬로 연결된 데이터를 보거나 액세스할 수 없습니다.

  3. RUN 을 호출한 경우 데이터 오퍼링 ID를 사용합니다.

  • RUN의 매개 변수화된 버전을 사용하는 경우 데이터 오퍼링 IDs를 local_template_view_names 매개 변수에 전달합니다.

  • RUN의 YAML 버전을 사용하는 경우 요청의 local_view_mappings.my_tables 스탠자에 데이터 오퍼링 IDs를 제공합니다.

  • RUN의 매개 변수화된 버전을 사용하는 경우 데이터 오퍼링 IDs를 local_template_view_names 매개 변수에 전달합니다.

local_template_view_nameslocal_view_mappings.my_tables 는 템플릿에서 my_table 매개 변수를 채웁니다.

다음 예제에서는 실행 프로시저의 YAML 형식 버전을 사용하여 템플릿을 실행하는 방법을 보여줍니다. 이 예제에는 LINK_LOCAL_DATA_OFFERING을 호출하여 채워지는 my_tables 필드가 포함되어 있습니다.

-- See what data offerings are available. Your own local data will be listed here as well.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_DATA_OFFERINGS($collaboration_name);

-- Pass in the arguments in analysis YAML format.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.RUN(
  $collaboration_name,
  $$
    api_version: 2.0.0
    spec_type: analysis
    name: my_analysis
    description: Cross-purchase results for Q4 2025
    template: mytemplate_v1

    template_configuration:
      view_mappings:
        source_tables:
          - ADVERTISER1.ADVERTISER_DATA_V1.CUSTOMERS
          - PUBLISHER.ADVERTISER_DATA_V1.CUSTOMERS
      local_view_mappings:
        my_tables:
          - PARTNER.MY_DATA_V1.MY_CUSTOMERS # Populate my_table array with my own table.
      arguments:  # Template arguments, as name: value pairs
         conv_purchase_id: PURCHASE_ID
         conv_purchase_amount: PURCHASE_AMOUNT
         publisher_impression_id: IMPRESSION_ID
         publisher_campaign_name: CAMPAIGN_NAME
         publisher_device_type: DEVICE_TYPE
  $$ );

결과 활성화

데이터 공급자 및 공동 작업 사양에서 허용하는 경우, 분석 결과를 자체 Snowflake 계정 또는 지정된 공동 작업자의 Snowflake 계정에 저장할 수 있습니다. 템플릿은 결과 활성화 또는 결과 즉시 반환 중 하나를 수행하지만, 둘 다 수행할 수는 없습니다.

활성화에 대해 자세히 알아보려면 쿼리 결과 활성화하기 섹션을 참조하세요.

공동 작업 종료 또는 삭제

  • 소유자 이외의 공동 작업자는 LEAVE를 호출하여 공동 작업을 종료합니다. 해당 공동 작업자가 제공한 모든 데이터 오퍼링은 공동 작업에서 제거됩니다. 공동 작업을 종료한 후에는 다시 참여할 수 없습니다.

  • 공동 작업 소유자는 소유권을 이전할 수 없으므로 공동 작업을 종료할 수 없습니다. 공동 작업 소유자는 TEARDOWN을 호출하여 모든 공동 작업자의 공동 작업을 삭제할 수 있습니다.

두 프로세스 모두 비동기식입니다. 상태를 모니터링하려면 GET_STATUS를 호출하고 GET_STATUS에 상태가 LOCAL_DROP_PENDING으로 표시되면 LEAVE 또는 TEARDOWN을 다시 호출해야 합니다.

다음 SQL 예제에서는 기본 공동 작업을 생성하고 실행하는 방법을 보여줍니다.

양자 간 공동 작업 예제

다음 예제에서는 양자 간 공동 작업을 보여줍니다. 여기서 “alice”는 공동 작업 생성자이자 자신과 “bob”의 데이터 공급자이며, 동시에 분석 실행자입니다. “bob”은 자신과 “alice”의 데이터 공급자이자 분석 실행자입니다.

이 예제에서는 다음 작업을 보여줍니다.

  • 공동 작업 생성.

  • 템플릿 및 데이터 오퍼링 등록.

  • 공동 작업 생성 시 템플릿 및 데이터 오퍼링 연결.

  • 공동 작업에 참여.

  • 기존 공동 작업에 추가 리소스 연결.

  • 분석 실행.

이 예제를 실행하려면 Snowflake Data Clean Rooms 가 설치된 별도의 두 계정이 있어야 합니다.

파일을 다운로드하여 Snowflake 계정에 업로드하거나 Snowsight 를 통해 예제 코드를 복사하여 별도의 두 계정의 워크시트에 붙여넣을 수 있습니다.

소스 SQL 파일을 다운로드한 다음 Snowflake Data Clean Rooms 가 설치된 별도의 두 계정에 업로드합니다.

단일 당사자 공동 작업의 예제

이 예제에서는 테스트용 계정이 하나만 있는 경우 공동 작업을 생성하고 사용하는 방법을 보여줍니다.

이 예제에서는 데이터 오퍼링 및 템플릿을 사용하여 공동 작업을 생성한 다음, 공동 작업이 생성된 후 다른 데이터 오퍼링 및 템플릿을 추가하고 분석을 실행하는 방법을 보여줍니다.

파일을 다운로드하여 Snowflake 계정에 업로드하거나 Snowsight 를 통해 예제 코드를 복사하여 워크시트에 붙여넣을 수 있습니다.

소스 SQL 파일을 다운로드한 후 Snowflake Data Clean Rooms 가 설치된 Snowflake 계정에 업로드합니다.