Clean Room 테이블 정책 이해

Clean Rooms는 공동 작업자가 데이터를 사용하는 방법을 제어하기 위한 몇 가지 데이터 정책을 제공합니다. 이는 Clean Room에 연결된 기본 테이블에 설정된 모든 Snowflake 테이블 정책에 추가됩니다. 기본 테이블의 정책에 대한 모든 변경 사항은 create_or_update_cleanroom_listing 을 호출하거나 원본 테이블을 다시 연결할 필요 없이 Clean Room의 연결된 뷰에 전파됩니다.

Clean Room의 각 공동 작업자는 자신의 데이터에 대한 자체 정책을 설정합니다.

참고

테이블을 Clean Room에 연결하면 원본 테이블의 Snowflake 테이블 정책이 Clean Room의 연결된 테이블에 적용되지만 이러한 정책은 Clean Room API 또는 UI 에서 반드시 보고되지는 않습니다. 예를 들어, Snowflake 조인 정책 은 Clean Room에서 계속 적용되지만 consumer.view_provider_join_policy 또는 consumer.view_join_policy 를 호출하면 해당 조인 정책이 표시되지 않습니다. 따라서 기본 연결된 테이블에서 정책을 제거하거나, 동등한 Clean Room 정책을 만들거나(있는 경우), 공동 작업자에게 이러한 정책의 존재를 명확하게 전달하여 쿼리가 실패하거나 예기치 않게 작동하지 않도록 해야 합니다(“이 열에 참여할 수 없는 이유는 무엇인가요?”).

Clean Room 정책은 Clean Room API 또는 UI 를 사용하여 설정할 수 있습니다.

Snowflake 개인정보 처리방침 에 따라 보호된 테이블에서 뷰를 만들 수 없으므로 개인정보 처리방침이 있는 테이블에 연결할 수 없습니다.

Clean Rooms에는 다음과 같은 정책이 적용됩니다.

Clean Room 정책

설명

동등한 Snowflake 정책

조인 정책

조인할 수 있는 열을 지정합니다.

조인 정책

열 정책

투영할 수 있는 열을 지정합니다.

프로젝션 정책

활성화 정책

Clean Room에서 내보낼 수 있는 열을 지정합니다.

이에 상응하는 Snowflake 정책이 없습니다.

Snowflake 집계 정책 준수

쿼리에서 집계할 행과 그룹당 최소 행 수를 요구합니다.

집계 정책

조인 정책

Clean Room 조인 정책은 Clean Room의 모든 템플릿이 테이블의 어떤 열을 조인할 수 있는지 지정합니다. 조인 정책은 Clean Room 수준에서 설정됩니다.

조인 정책 열은 투영할 수 없습니다(열은 Clean Room 조인 정책과 열 정책에 모두 포함될 수 없음). 조인 열을 투영할 수 있게 하려면 Clean Room 외부의 조인 정책과 Clean Room의 투영 정책을 설정하십시오(또는 그 반대).

조인 정책 열은 활성화 정책 열이 될 수도 있습니다.

Clean Room 조인 정책은 조인해야 하는 열을 지정하는 Snowflake 조인 정책과 다릅니다.

데이터에 대한 조인 정책을 지정하지 않으면 모든 열을 조인할 수 있습니다(또한 투영할 수도 있음).

조인 정책 구현하기

Clean Room 조인 정책은 템플릿이 join_policy 또는 join_and_column_policy 필터를 사용하는 경우에만 열에 대해 적용됩니다. 템플릿 정의를 보고 다음과 같은 구문에서 이 필터가 있는지 확인하여 템플릿을 검사하여 조인 정책이 적용되는 위치를 확인할 수 있습니다.

{{ my_column | join_policy }}
Copy

템플릿에 열에 join_policy 필터가 있는지 여부에 관계없이 기본 테이블의 Snowflake 조인 정책이 적용됩니다.

다음 코드는 서로 다른 두 테이블의 두 열을 조인하도록 허용하는 방법을 보여줍니다. 이 정책은 이 Clean Room의 모든 사용자와 모든 템플릿에 적용됩니다. Clean Room에서 공급자와 컨슈머를 위한 동일한 프로시저가 있으므로 Clean Room에서 자신의 역할을 반영하는 프로시저를 호출하십시오. 데이터가 Clean Room에 연결된 후 언제든지 조인 정책을 설정할 수 있습니다.

-- Set join policies on a clean room where you are a provider
CALL samooha_by_snowflake_local_db.provider.set_join_policy('my_provider_cleanroom',
  ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL', 'MYDB.MYSCH.EXPOSURES:HASHED_EMAIL']);

-- Set join policies on a clean room where you are a consumer
CALL samooha_by_snowflake_local_db.consumer.set_join_policy('my_consumer_cleanroom',
  ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL', 'MYDB.MYSCH.EXPOSURES:HASHED_EMAIL']);
Copy

set_join_policy 는 이전 조인 정책을 새 조인 정책으로 대체합니다.

다음 프로시저는 코드에서 조인 정책을 보거나 관리하는 데 사용됩니다.

  • consumer.set_join_policy

  • consumer.view_provider_join_policy

  • consumer.view_join_policy

  • provider.view_join_policy

  • provider.set_join_policy

열 정책

열 정책은 특정 템플릿으로 액세스할 때 분석 결과에 어떤 열을 투영할 수 있는지 지정합니다. 데이터를 연결하고 템플릿을 Clean Room에 추가한 후에는 언제든지 열 정책을 설정할 수 있습니다.

열은 조인 및 열 정책에 모두 포함될 수 없습니다. 열은 활성화 및 열 정책에 모두 포함될 수 있습니다.

데이터에 대한 열 정책을 지정하지 않으면 모든 열이 투영될 수 있습니다.

열 정책 구현하기

열 정책은 템플릿에서 허용하는 경우 Clean Rooms UI 에서 설정할 수 있습니다.

Clean Room 열 정책은 템플릿이 column_policy 또는 join_and_column_policy 필터를 사용하는 경우에만 열에 대해 적용됩니다. 템플릿 정의를 보고 다음과 같은 구문에서 이 필터가 있는지 확인하여 템플릿을 검사하여 열 정책이 적용되는 위치를 확인할 수 있습니다.

{{ my_column | column_policy }}
Copy

템플릿에 열에 column_policy 필터가 있는지 여부에 관계없이 기본 테이블의 Snowflake 투영 정책이 적용됩니다.

다음 코드는 prod_overlap_analysis 템플릿으로만 세 개의 열을 투영할 수 있도록 허용하는 예제입니다. 템플릿 이름은 열 정책을 지정할 때 열 이름 지정 구문의 일부로 제공됩니다. 이 정책은 Clean Room의 모든 사용자에게 영향을 주지만 해당 템플릿에만 적용됩니다. Clean Room에서 공급자와 컨슈머를 위한 동일한 프로시저가 있으므로 Clean Room에서 자신의 역할을 반영하는 프로시저를 호출하십시오.

-- Set column policies on a clean room where you are a provider
call samooha_by_snowflake_local_db.provider.set_column_policy('my_provider_cleanroom',
  ['prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:STATUS',
   'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:AGE_BAND',
   'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:DAYS_ACTIVE']);

-- Set column policies on a clean room where you are a consumer
call samooha_by_snowflake_local_db.consumer.set_column_policy('my_consumer_cleanroom',
  ['prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:STATUS',
   'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:AGE_BAND',
   'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:DAYS_ACTIVE']);
Copy

이 프로시저를 다시 호출하면 이전 열 정책이 삭제되고 새 열 정책으로 바뀝니다.

다음 프로시저는 코드에서 열 정책을 보거나 관리하는 데 사용됩니다.

  • consumer.set_column_policy

  • consumer.view_column_policy

  • consumer.view_provider_column_policy

  • provider.set_column_policy

  • provider.view_column_policy

활성화 정책

활성화 정책은 활성화 템플릿으로 어떤 열을 활성화할 수 있는지 지정합니다. 활성화 템플릿은 공급자 또는 컨슈머의 Snowflake 계정에 있는 테이블이나 서드 파티 활성화 커넥터에 쿼리 결과를 저장합니다.

열은 다른 정책과 마찬가지로 활성화 정책의 일부가 될 수 있습니다.

데이터에 대한 활성화 정책을 지정하지 않으면 데이터의 열을 활성화할 수 없습니다.

활성화 정책 구현하기

활성화 정책은 템플릿에서 활성화를 허용하는 경우 Clean Rooms UI 에서 설정할 수 있습니다.

활성화 정책은 템플릿이 activation_policy 필터를 사용하는 경우에만 열에 대해 적용됩니다. 템플릿 정의를 보고 다음과 같은 구문에서 이 필터가 있는지 확인하여 템플릿을 검사하여 활성화 정책이 적용되는 위치를 확인할 수 있습니다.

{{ my_column | activation_policy }}
Copy

다음 코드는 Clean Room에서 HASHED_EMAIL 및 REGION_CODE 열을 활성화하도록 허용하는 방법을 보여줍니다. 이 정책은 Clean Room의 모든 사용자와 모든 활성화 템플릿에 영향을 줍니다. Clean Room에는 공급자와 컨슈머를 위한 동일한 프로시저가 있습니다. Clean Room에서 자신의 역할을 반영하는 프로시저를 호출하십시오.

-- Set column policies on a clean room where you are a provider
call samooha_by_snowflake_local_db.provider.set_activation_policy('my_cleanroom', [
    'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL',
    'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:REGION_CODE' ]);

-- Set column policies on a clean room where you are a consumer
call samooha_by_snowflake_local_db.consumer.set_activation_policy('my_cleanroom', [
    'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE_NAME.DEMO.CUSTOMERS:HASHED_EMAIL',
    'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE_NAME.DEMO.CUSTOMERS:REGION_CODE' ]);
Copy

이 프로시저를 다시 호출하면 이전 활성화 정책이 삭제되고 새 활성화 정책으로 바뀝니다.

다음 프로시저는 코드에서 활성화 정책을 관리하는 데 사용됩니다.

  • consumer.set_activation_policy

  • provider.set_activation_policy

집계 정책

집계 정책에서는 테이블에 대한 모든 쿼리에 집계(GROUP BY, COUNT, 기타 함수)가 포함되어야 하며, 결과 그룹당 최소 행 수를 지정하지 않으면 해당 그룹이 결과에서 생략됩니다. 집계 정책에서는 집계 정책이 있는 테이블에 대한 모든 쿼리를 집계해야 하며(GROUP BY, COUNT, 기타 집계 함수), 결과 그룹당 최소 행 수를 지정하지 않으면 해당 그룹이 결과에서 생략됩니다.

Clean Rooms에는 자체 집계 정책이 구현되어 있지 않으므로 연결된 데이터에 집계 제약 조건을 적용하려면 원본 테이블에 집계 정책 을 적용하거나 템플릿에 집계 제약 조건을 구현하십시오.

일부 Snowflake 제공 템플릿은 사용자 또는 템플릿에 대해 설정된 thresholdthreshold_value 매개 변수를 사용합니다. 이러한 값은 Clean Rooms UI 에서 수정하거나 provider.add_consumers 또는 provider/consumer.set_privacy 를 호출하여 수정할 수 있습니다. 컨슈머용으로 설정된 경우 템플릿에서 이 값에 액세스할 수 있습니다.