쿼리 결과를 활성화해요.

쿼리 결과를 활성화해요.


기능 — 일반 공개

현재 these regions에서 사용할 수 있어요.

정부 및 VPS 배포에서는 사용할 수 없어요.


출처: 문서

본문

활성화 개요

협력자는 활성화라는 프로세스를 통해 클린 룸 외부로 템플릿 결과를 보낼 수 있어요. 템플릿이 활성화를 지원해야 하며, 각 데이터 제공자는 데이터 제공 사양에서 열 수준으로 활성화를 승인해야 해요.

활성화는 전용 활성화 템플릿을 사용하여 구현돼요. 활성화 템플릿은 쿼리 실행자에게 결과를 반환하지 않고, 대신 대상 사용자 계정의 결과 테이블에 결과를 기록해요.

참고

결과를 다른 Snowflake 계정으로 활성화하려면 Snowflake Enterprise Edition 이상이 필요해요.

활성화 구현

활성화를 구현하는 단계는 다음과 같아요.

분석 실행자로 참여하는 모든 콜라보레이션에 참여하려면 REGISTER DATA OFFERING privilege 권한이 있는 역할을 사용해야 해요. 또한 콜라보레이션 사양에 activation_destinations 필드가 포함되어 있어야 해요.

모든 사양이 올바르게 구성되었는지 확인해요.

활성화할 열이 있는 테이블의 data offering specification에는 해당 열에 대해 activation_allowed: TRUE가 설정되어 있어야 해요.

api_version: 2.0.0
spec_type: data_offering
name: 2025_orders
version: 2025_01_01_v1
description: Activating Cleveland sales results for 2025

datasets:
  - alias: customers
    data_object_fqn: db1.schema1.orders
    allowed_analyses: template_only
    object_class: custom
    schema_and_template_policies:
      email:
        category: join_standard
        column_type: hashed_email_sha256
        activation_allowed: TRUE
      purchase_amount:
        category: passthrough
        activation_allowed: TRUE

collaboration specification은 분석 실행자를 위해 activation_destinations 값을 제공해야 해요. data offering specification은 활성화를 지정된 분석 실행자와 템플릿으로 추가로 제한해요.

api_version: 2.0.0
spec_type: collaboration
name: simple_activation_collaboration
description: Demonstrates a basic activation

collaborator_identifier_aliases:
  advertiser_1: some_complex_identifier
  publisher_1: another_complex_identifier

owner: publisher_1

analysis_runners:
  advertiser_1:
    data_providers:
      advertiser_1:
        data_offerings:
          - id: customer_list
      publisher_1:
        data_offerings:
          - id: user1.2025_orders.sales
    templates:
      - id: activation_template_v0
    activation_destinations:
      snowflake_collaborators:
        - publisher_1
...

analysis specification에는 snowflake_collaborator 및 segment_name 값이 있는 activation 섹션이 포함되어야 하며, activation template을 호출해야 해요. 표준 분석 템플릿을 실행하여 결과를 활성화할 수는 없어요.

api_version: 2.0.0
spec_type: analysis
name: my_analysis
description: Description of the analysis
template: my_activation_template
template_configuration:
  view_mappings:
    source_tables:
      - alias1.schema1.table1
      - alias2.schema2.table2
  arguments:
    join_column: ip_address
    advertiser_activation_column: purchase_amount
    publisher_activation_column: device_type
  activation:
    snowflake_collaborator: publisher_1
    segment_name: q1_2025

activation template을 사용해야 해요. 이 템플릿은 결과를 내부 테이블에 저장해요. 이 템플릿에서 프로젝션된 모든 열이 활성화돼요.

템플릿에서 activation_policy 필터가 적용된 열은 데이터 제공 사양에 activation_allowed: TRUE가 설정되어 있어야 해요.

참고

템플릿이 열에 activation_policy 필터를 적용하지 않으면, 데이터 제공 사양에서 해당 열에 activation_allowed: TRUE가 설정되어 있지 않아도 열을 활성화할 수 있어요.

다음 예제는 분석 실행자가 제공한 두 개의 열에 활성화 정책을 적용한 템플릿을 보여줘요.

BEGIN
  CREATE OR REPLACE TABLE cleanroom.activation_data_analysis_results AS
    SELECT count(*) AS ITEM_COUNT, c.status, c.age_band
    FROM IDENTIFIER({{ my_table[0] }}) AS c
    JOIN IDENTIFIER({{ source_table[0] }}) AS p
    ON {{ c_join_col | sqlsafe | activation_policy }} = {{ p_join_col | sqlsafe | activation_policy }}
    GROUP BY c.status, c.age_band
    ORDER BY c.age_band;
  RETURN 'analysis_results';
END;

참고

이 예제는 고정된 결과 테이블 이름에 기록해요. 동일한 클린 룸에서 여러 활성화를 동시에 실행하려면 각 실행에 대해 고유한 결과 테이블 이름을 생성하는 템플릿을 사용하세요. 그렇지 않으면 동시에 실행되는 CREATE OR REPLACE TABLE 문이 충돌하여 실행이 실패해요. Running activations concurrently를 참조하세요.

분석 실행자는 RUN을 호출하여 분석을 실행하고 결과를 활성화해요.

  • 자신에게 활성화하는 경우, 결과는 호출자의 계정에서 즉시 사용할 수 있어요.

  • 다른 협력자에게 활성화하는 경우:

협력자는 상태가 SHARED로 반환될 때까지 VIEW_ACTIVATIONS를 호출해요. 다른 계정으로 활성화하는 경우 결과 집합이 크면 데이터를 협력자의 계정에 공유해야 하므로 상당한 시간이 걸릴 수 있어요. 크로스 클라우드 협력자는 복제 빈도 설정으로 인해 추가 지연이 발생할 수도 있어요.

활성화 상태가 SHARED이면 협력자는 PROCESS_ACTIVATION을 호출하여 결과를 자신의 계정으로 보내요. PROCESS_ACTIVATION에 대한 응답에는 테이블 이름과 세그먼트 이름이 포함돼요. 이로써 활성화 상태가 PROCESSED로 설정돼요.

분석 실행자는 다음 섹션에서 설명하는 대로 결과를 읽을 수 있어요.

활성화 결과 읽기

이전 섹션에서 설명한 대로 활성화가 완료되면 결과는 계정의 *collaboration_name*.activation.segment_records 테이블에 저장돼요.

테이블의 스키마는 다음과 같아요.

Column Description
BATCH_ID 처리된 배치 작업의 UID.
SEGMENT_NAME 활성화 페이로드의 이름.
TEMPLATE_ID 활성화에 사용된 템플릿의 ID.
SHARED_BY 데이터를 활성화한 협력자의 이름.
UPDATED_ON 배치가 성공적으로 처리된 시점의 타임스탬프.
RECORDS 활성화 템플릿에서 활성화된 ID 및 속성의 페이로드.

참고

협력자가 클린 룸을 떠나면 활성화된 결과가 포함된 테이블을 포함한 애플리케이션에 대한 액세스 권한을 잃게 돼요.

활성화 결과를 검색하려면 다음 SQL 명령을 실행하세요. 선택적으로 세그먼트 이름으로 필터링할 수 있어요.

SELECT *
  FROM <collaboration_name>.activation.segment_records
    [WHERE segment_name = '<segment_name>'];

더 알아보기 (Learn more)