데이터 오퍼링

*데이터 오퍼링*은 공동 작업에서 특정 분석 실행자와 공유되는 하나 이상의 뷰 세트로, *데이터 세트*라고 부릅니다. 공동 작업 사양 에서 데이터 공급자로 정의된 분석 실행자와 데이터를 공유할 수 있습니다.

데이터 오퍼링은 소스 데이터의 라이브 뷰이며, 데이터 오퍼링이 등록된 시점의 데이터 스냅샷이 아닙니다. 소스 데이터에 적용된 모든 Snowflake 정책은 데이터 오퍼링에서 활성화됩니다.

데이터 오퍼링을 등록하면 Snowflake는 데이터 오퍼링 사양 될 수 있습니다.

또한 데이터 오퍼링을 공동 작업에 연결하면 Snowflake는 등록된 뷰의 복사본을 생성하고 공동 작업 사양 에 따라 지정된 분석 실행자로 뷰에 대한 액세스를 제한합니다.

중요

기본 테이블에 대한 액세스 권한을 이동하거나 이름을 변경하거나 변경하면 이전에 등록된 링크를 통해 데이터 오퍼링을 사용할 수 없게 됩니다.

Snowflake Standard Edition을 사용하는 경우 정책 적용으로 Data Clean Room을 통해 데이터를 공유할 수 없습니다. 따라서 자신의 계정에 있는 사용자에 대해서도 다른 당사자와 데이터를 공유하거나 오퍼링에 지정된 데이터 클린룸 정책을 활용할 수 없습니다. 그러나 다른 공동 작업자의 데이터 오퍼링에 액세스하거나 정책 없이 자체 데이터를 로컬 데이터 오퍼링으로 사용 할 수 있습니다.

데이터 오퍼링 요구 사항:

  • 공유하려는 모든 데이터에 대해 GRANT OPTION이 있는 REFERENCE_USAGE 권한이 있어야 합니다 그렇지 않은 경우 공동 작업에 등록하고 조인하거나 데이터를 연결하려고 할 때 “참조 사용 권한 누락” 오류가 발생합니다.

    GRANT REFERENCE_USAGE ON DATABASE my_database TO ROLE my_role WITH GRANT OPTION;
    
  • 공동 작업에는 데이터 공급자 공동 작업 역할 이 있어야 합니다.

  • 현재, 공동 작업을 생성하거나 조인한 계정 역할만 공동 작업에 데이터를 연결하거나 데이터 연결을 해제할 수 있습니다.

공동 작업에 데이터 오퍼링을 등록하고 연결하는 방법을 알아보려면 계속 읽으세요.

데이터 오퍼링 등록

  1. 데이터에 대한 :ref:`데이터 오퍼링 사양 <label-dcr_collaboration_data_yaml>`을 생성합니다. 데이터 오퍼링에 대한 다음 세부 정보를 지정합니다.

    • 데이터 오퍼링의 각 데이터 세트에 대한 소스 오브젝트.

    • 각 데이터 세트에 포함할 열.

    • Clean Room 정책 을 채우는 데 사용되는 각 열의 유형(조인 또는 기타). 경우에 따라 개별 열의 형식도 지정합니다.

    • 데이터 오퍼링의 열에 적용할 모든 Snowflake 데이터 보호 정책.

    • 사용자가 데이터에 액세스하는 방법: 템플릿만 사용 또는 자유 형식 SQL 쿼리 도 사용.

  2. 데이터 오퍼링 ID를 반환하는 REGISTER_DATA_OFFERING을 호출하여 데이터 오퍼링을 등록합니다.

    이 단계에서는 레지스트리에 대한 읽기 액세스 권한이 있는 계정의 모든 역할이 데이터 오퍼링을 모든 공동 작업에 연결*할 수 있게* 됩니다. 동일한 데이터 오퍼링 ID를 사용하여 여러 공동 작업과 데이터 오퍼링을 공유할 수 있습니다.

소스 열 이름 바꾸기

데이터 오퍼링의 열 이름은 분석 실행자에 노출하기 전에 바꿀 수 있습니다. 이름 바꾸기는 이 테이블에 설명된 대로 데이터 오퍼링 사양 에서 열을 정의하는 categorycolumn_type 값에 따라 다릅니다.

category

새 열 이름

join_standard

column_type

timestamp

timestamp

join_custom, passthrough 또는 event_type

원래 열 이름이 사용됩니다.

예를 들어, 소스 테이블의 열 이름이 user_email_address 인 경우, 이 열이 분석 실행자에 노출되는 방식은 데이터 오퍼링 사양에 정의된 방식에 따라 다릅니다.

데이터 오퍼링 사양

열이 참조되는 방법

...
schema_and_template_policies:
  user_email_address:
    category: join_standard
    column_type: hashed_email_sha256

column_typejoin_standard 열에 사용됩니다.

SELECT HASHED_EMAIL_SHA256
FROM source_table[0];

데이터 오퍼링에 데이터 보호 정책 적용하기

Clean Room에서 공유되는 데이터는 여러 가지 방법으로 보호됩니다.

  • Clean Room 환경에 등록된 데이터는 데이터 오퍼링 사양에 나열되지 않은 모든 열을 생략하는 보안 뷰로 생성됩니다.

  • 보안 뷰는 공동 작업 사양에 지정된 특정 사용자 및 템플릿과만 공유됩니다.

  • 데이터에 Snowflake 정책을 추가하여 데이터 사용 방식을 추가로 관리할 수 있습니다.

  • Data Clean Room 템플릿 정책 은 또한 데이터 오퍼링 열 분류를 기반으로 적용됩니다.

조인 또는 집계 정책과 같은 Snowflake 데이터 보호 정책을 공유 데이터에 적용하는 두 가지 방법이 있습니다.

소스 데이터에 Snowflake 정책 적용

소스 데이터에 적용된 모든 Snowflake 정책은 공동 작업의 데이터 오퍼링 뷰에도 적용됩니다.

소스 데이터에 Snowflake 정책을 적용하는 경우, 공동 작업자에게 이에 대해 알려야 공동 작업자가 조인할 수 없는 열에 조인하거나 집계 요구 사항을 충족하지 않는 쿼리를 자신도 모르게 실행하는 상황을 방지할 수 있습니다. 데이터 오퍼링의 description 필드에 Snowflake 정책을 언급합니다.

중요

Snowflake 데이터 정책이 있는 데이터 오퍼링을 등록할 때 해당 정책이 적용되지 않는 역할을 사용하거나 데이터가 등록될 때까지 정책을 일시적으로 일시 중단해야 합니다.

Snowflake Data Clean Rooms 는 등록 프로세스의 일부로 소스 테이블에서 유효성 검사 쿼리를 실행하기 때문입니다. 테스트 쿼리가 의미 있는 결과를 반환하지 못하면 등록이 실패합니다. 일부 Snowflake 데이터 정책으로 인해 테스트가 실패할 수 있습니다. 예를 들어, 테이블에 집계 정책이 있고 유효성 검사 쿼리가 집계 정책의 최소 그룹 크기 요구 사항을 충족하기에 충분한 행을 반환하지 않을 수 있습니다.

데이터 오퍼링에 Snowflake 정책 적용(자유 형식 쿼리 사용만 해당)

Snowflake 정책을 소스 데이터에 적용하지 않고 자유 형식 쿼리 를 통해 액세스할 때 공유 데이터에 적용할 수 있습니다. 이러한 정책은 소스 테이블에 직접 적용되는 모든 Snowflake 정책에 추가로 적용됩니다.

**데이터에 자유 형식 SQL 정책을 추가**하려면:

  1. Collaboration Data Clean Rooms에서 지원하는 정책 유형 을 생성합니다.

  2. 데이터 오퍼링 사양에 다음 정보를 추가합니다.

    • ``allowed_analyses: template_and_freeform_sql``을 설정합니다.

    • freeform_sql_policies 섹션을 데이터 세트 항목에 추가합니다.

    • freeform_sql_policies 아래에 적절한 정책 유형 섹션을 추가하고, 생성한 Snowflake 정책 및 해당 정책을 적용할 공동 작업 열을 나열합니다. 지원되는 정책 유형은 다음과 같습니다.

      • aggregation_policy: 선택적 엔터티 키가 있는 단일 집계 정책.

      • projection_policies: 각각 열 바인딩이 있는 프로젝션 정책의 배열.

      • join_policy: 선택적 열 바인딩이 있는 단일 조인 정책.

      • masking_policies: 각각 열 바인딩이 있는 마스킹 정책의 배열.

      • row_access_policy: 선택적 열 바인딩이 있는 단일 행 액세스 정책.

    데이터 오퍼링을 등록하는 역할에는 정책에 대한 USAGE 권한이 있어야 합니다.

공동 작업자는 ``COLLABORATION.VIEW_DATA_OFFERINGS``를 호출할 때 데이터에 적용된 정책 유형을 확인합니다.

여러 테이블의 여러 열에 대한 정책을 재사용할 수 있습니다.

예:

CREATE OR REPLACE AGGREGATION POLICY my_db.public.my_agg_policy AS ()
  RETURNS AGGREGATION_CONSTRAINT ->
    AGGREGATION_CONSTRAINT(MIN_GROUP_SIZE => 5);

Snowflake Data Clean Room 템플릿 정책

Snowflake Data Clean Rooms는 Snowflake 정책 시스템 외에 자체 정책 시스템도 지원합니다. 공동 작업의 각 데이터 공급자는 데이터 오퍼링에 대해 다음 정책을 설정할 수 있습니다.

  • 조인*할 수 있는* 열을 지정하는 조인 정책.

  • 프로젝션*할 수 있는* 열을 지정하는 열 정책.

  • 활성화*할 수 있는* 열을 지정하는 활성화 정책.

데이터 공급자는 데이터 오퍼링 사양에서 다음 정책을 설정할 수 있습니다.

  • 열의 categoryjoin_standard 또는 join_custom 인 경우 열이 Clean Room의 조인 정책에 추가됩니다.

  • 열의 category 가 다른 값으로 설정된 경우 열이 Clean Room의 열 정책에 추가됩니다.

  • 열의 activation_allowed 값이 TRUE로 설정된 경우 Clean Room의 활성화 정책에도 추가됩니다.

템플릿에 적절한 정책 검사 필터 가 있는 경우 정책이 적용됩니다. 해당 필터는 join_policy, column_policy, activation_policy, join_and_column_policy 입니다. 템플릿 실행 시 이러한 필터는 참조된 열이 데이터 오퍼링 사양에서 설정된 해당 정책에 의해 허용되는지 확인합니다. 지정된 정책의 일부가 아닌 열에 필터가 적용되면 템플릿이 실패합니다.

예를 들어, col1col2 는 모두 데이터 공급자 조인 정책(category: join_standard 또는 category: join_custom)의 일부여야 합니다. 그렇지 않은 경우 다음 템플릿 스니펫에서 오류가 발생합니다.

SELECT *
FROM T1
JOIN T2
ON {{ t1_col | sqlsafe | join_policy }} = {{ t2_col | sqlsafe | join_policy }}

명명 경로를 사용하여 데이터 오퍼링 구성하기

명명 경로를 사용하여 데이터 오퍼링을 개념적으로 그룹화할 수 있습니다. 이는 각 데이터 오퍼링이 하나 이상의 테이블 또는 뷰를 나타내기 때문에 특히 효과적입니다. 개별 테이블은 collaborator alias.data offering ID.dataset alias 구문을 사용하여 액세스할 수 있습니다. 여기서 데이터 오퍼링 ID는 사용자가 제공한 이름과 버전 값의 조합이며, 별칭은 오퍼링의 단일 테이블입니다.

데이터 오퍼링을 등록할 때 이름, 버전, 별칭을 범위 지정 시스템으로 고려하여 오퍼링 및 별칭별로 데이터를 구성할 수 있습니다. 예를 들어, US 주에 고유한 테이블이 있는 다음과 같은 판매 데이터 오퍼링을 등록할 수 있습니다.

api_version: 2.0.0
spec_type: data_offering
version: v0
name: examplecorp_sales_by_state
datasets:
 - alias: AL
   data_object_fqn: mydb.mysch.al_data
 - alias: NY
   data_object_fqn: mydb.mysch.ny_data
 - alias: CA
   data_object_fqn: mydb.mysch.ca_data

분석 실행자는 이러한 테이블을 user_alias.offering_id.AL, user_alias.offering_id.NY, user_alias.offering_id.CA 로 참조합니다.