공급자 실행 분석¶
개요¶
기본 클린룸 구성에서는 컨슈머만 클린룸에서 분석을 실행할 수 있습니다. 그러나 공급자는 특정 클린룸에서 컨슈머 데이터를 사용하여 특정 템플릿을 실행할 수 있는 권한을 컨슈머에게 요청할 수 있습니다. 공급자 실행 분석은 클린룸 UI 또는 코드를 사용하여 활성화하고 실행할 수 있습니다.
다음 다이어그램은 기본 공급자 실행 분석에서의 데이터 흐름 및 주요 구성 요소를 보여줍니다.
기본 공급자 실행 분석에서 컨슈머와 공급자는 모두 데이터를 클린룸에 연결합니다. 소스 데이터는 데이터가 있는 계정의 비공개 뷰로 클린룸에 연결됩니다.
공급자가 분석을 실행하면 공급자의 데이터가 컨슈머 계정의 클린룸 앱과 공유됩니다. 분석은 컨슈머의 계정에서 실행됩니다.
암호화된 결과는 컨슈머 계정의 컨슈머 DB에 임시로 기록됩니다.
암호화된 결과는 공급자 계정의 분석 결과 백 쉐어(거버넌스 백 쉐어라고도 함)에 복사되고 암호가 해독됩니다. 분석은 컨슈머의 계정에서 실행되므로 분석 요금이 컨슈머에게 청구됩니다.
자세한 내용은 Snowflake Data Clean Rooms: 설치된 오브젝트 섹션을 참조하십시오.
공급자 실행 분석을 지원하는 템플릿¶
다음 템플릿은 공급자 실행 분석을 지원합니다.
Audience Overlap & Segmentation
:ui:`SQL Query`(UI만 해당)
사용자 지정 템플릿(API 전용)
청구 및 비용 세부 정보¶
공급자 실행 분석은 컨슈머의 계정에서 실행되며, 컨슈머에게는 공급자 실행 분석에 대한 요금이 청구됩니다. 공급자 실행 분석에서 비용이 발생하지 않도록 하려면 컨슈머가 클린룸을 제거해야 합니다.
컨슈머는 다음 쿼리를 실행하여 이전 일수를 음수로 지정해 공급자가 지난 *N*일 동안 소비한 크레딧 수를 추정할 수 있습니다.
-- Estimate the number of credits consumed in the past 5 days.
SELECT * FROM TABLE(SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.LIBRARY.PRA_CONSUMPTION_UDTF(-5));
공급자가 클린룸 UI에서 분석을 실행할 때, 클린룸은 데이터 세트 크기를 기반으로 자동 크기 조정 논리를 사용하여 공급자의 분석을 위한 웨어하우스를 선택합니다.
공급자가 API를 사용하여 클린룸을 만들고 실행하는 경우 공급자는 컨슈머가 지정한 허용 값 세트에서 웨어하우스 크기와 유형을 명시적으로 선택할 수 있습니다.
일반 노트¶
공급자는 UI 또는 API를 사용하여 자신의 계정에 결과를 활성화하거나 UI를 사용하는 경우 서드 파티 공급자에게 결과를 활성화할 수 있습니다. 활성화를 지원하고 결과를 보는 방법에 대한 자세한 내용은 쿼리 결과 활성화하기 섹션을 참조하세요.
컨슈머와 공급자가 서로 다른 클라우드 리전에 있는 경우 두 계정과 두 클린룸 모두에 대해 :doc:`클라우드 간 자동 복제</user-guide/cleanrooms/enabling-laf>`를 활성화해야 합니다.
공급자 실행 클라우드 간 쿼리는 모든 클라우드 리전에서 공급자 소스 데이터를 공급자에서 컨슈머로 복제하고 쿼리 결과를 컨슈머에서 공급자로 복제해야 하므로 실행하는 데 시간이 다소 걸릴 수 있습니다.
공급자가 실행하는 모든 템플릿에는 결과에서 생성된 모든 열에 대한 열 이름 또는 별칭이 필요합니다. 열이 집계된 경우(예:
SUM(col1)) 또는 사용자 지정 함수 호출(예:cleanroom.my_function(p.hashed_email))의 경우 템플릿은 다음과 같이 열 이름 별칭을 명시적으로 지정해야 합니다.SELECT SUM(col1) AS TOTAL FROM my_db.my_sch.T; -- Correct SELECT SUM(col1) FROM my_db.my_sch.T; -- Error: aggregated column needs an explicit alias.
UI에서 공급자 실행 분석¶
클린룸 UI를 사용할 때 새로운 클린룸에서 공급자 실행 분석을 활성화하는 방법은 다음과 같습니다.
공급자는 지원되는 템플릿 중 하나를 사용하여 클린룸을 생성하고 구성<label_dcr_create_cleanroom>`합니다. 클린룸을 :ui:`Share Clean Room 단계까지 구성합니다.
클린룸 구성의 Share Clean Room 단계에서 공급자는 공급자 실행 분석을 지원하는 해당 클린룸에서 모든 템플릿을 실행할 수 있도록 자체 계정 옆에 있는 :ui:`Enable run analysis & query`를 선택합니다.
클린룸이 생성된 후에는 이 설정을 변경할 수 없습니다. 게시된 클린룸에서 쿼리를 실행하기 위해 특정 계정의 권한을 변경하려면 클린룸을 삭제하고 새 클린룸을 만들어야 합니다.
컨슈머는 공급자 분석을 지원하는 모든 템플릿을 포함하여 클린룸의 모든 템플릿에 대해 정상적으로 :ref:`클린룸에 조인하고 구성<label-cleanrooms_web_app_install>`합니다. 컨슈머는 공급자가 특정 템플릿을 실행하는 것을 지원하지 않는 경우 해당 템플릿에 대한 필수 세부 정보를 생략할 수 있습니다.
컨슈머가 클린룸에 조인하면 조인하기 전에 해당 클린룸에 대해 공급자 실행 분석이 활성화되어 있다는 경고가 표시됩니다.
컨슈머는 클린룸에 조인하는 즉시 쿼리를 실행할 수 있지만, 공급자가 템플릿을 실행할 수 있기까지 최대 30분의 지연이 있습니다. 이 설정 지연은 초기 조인 단계에만 적용됩니다. 공급자가 나중에 다른 공급자 실행 템플릿을 추가하는 경우 컨슈머가 해당 템플릿에 대한 클린룸을 구성하는 즉시 공급자는 이를 실행할 수 있습니다.
조인 단계가 완료되면 공급자 실행 분석 및 컨슈머 실행 분석 모두에 클린룸을 사용할 수 있습니다.
중요:
공급자는 컨슈머가 클린룸을 설치한 후 약 10분을 기다려야 분석을 실행할 수 있습니다. 지연은 공급자 실행 분석에 필요한 추가 백그라운드 구성을 위한 것입니다.
공급자 또는 컨슈머가 실행하는 이 클린룸의 모든 분석에 대해 컨슈머에게 요금이 청구됩니다.
API에서 공급자 실행 분석¶
클린룸 API를 사용하여 새로운 클린룸에서 공급자 실행 분석을 활성화하는 방법은 다음과 같습니다.
공급자
표준 방식으로 클린룸과 데이터 및 정책을 생성하고 구성합니다.
표준 방식으로 컨슈머를 추가합니다.
``provider.enable_provider_run_analysis``를 호출하여 클린룸의 특정 컨슈머 계정에 대한 공급자 실행 분석을 활성화합니다.
중요:
공급자는 컨슈머를 클린룸에 추가한 후 컨슈머가 클린룸을 설치하기 **전**에 ``provider.enable_provider_run_analysis``를 호출해야 합니다. 각 컨슈머 계정은 이 클린룸에서 공급자 실행 분석을 위해 데이터에 액세스할 수 있도록 이 요청을 승인해야 합니다.
공급자가 클린룸에 대한 공급자 실행 분석 설정을 변경할 때마다 변경 사항을 적용하려면 모든 컨슈머가 클린룸을 다시 설치해야 합니다. 모든 공동 작업자가 클린룸을 강제로 다시 설치하도록 하는 것은 어려울 수 있으므로, 공급자 분석 권한을 변경할 때 게시된 공유 클린룸을 삭제한 다음 원하는 권한으로 새 클린룸을 만드는 것이 더 안정적입니다.
클린룸을 게시합니다.
클린룸의 가용성, 클린룸 이름, 클린룸에서 실행할 템플릿을 컨슈머에게 알립니다.
컨슈머
표준 방식으로 데이터에 클린룸과 링크를 설치합니다.
데이터에 필요한 모든 :doc:`조인 및 열 정책</user-guide/cleanrooms/policies>`을 설정합니다.
``consumer.enable_templates_for_provider_run``(여러 템플릿의 경우) 또는 ``consumer.approve_template``(하나의 템플릿의 경우) 중 하나를 호출하여 클린룸의 특정 템플릿에 대한 공급자 실행 분석을 허용합니다.
참고
컨슈머가 템플릿을 승인한 후 공급자가 템플릿을 변경하는 경우 컨슈머는 템플릿을 다시 승인해야 합니다. 템플릿이 다시 승인될 때까지, 승인된 템플릿의 이전에 캐시된 버전이 공급자에 의해 실행됩니다.
(선택 사항) 컨슈머는 공급자 실행 분석에 사용할 수 있는 웨어하우스 유형 또는 크기를 제한할 수 있습니다. 웨어하우스 크기 및 유형 한도 제한하기 섹션을 참조하세요.
클린룸을 설치하고 공급자 실행 분석을 승인했음을 공급자에게 알립니다.
공급자
컨슈머가 클린룸을 설치한 후 공급자는 컨슈머에서 공급자 계정으로의 데이터 공유를 활성화하여 컨슈머 데이터에 액세스할 수 있도록 분석을 활성화 합니다. 이를 위한 프로세스는 공급자와 컨슈머가 동일한 클라우드 리전에 있는지 아니면 다른 클라우드 리전에 있는지에 따라 다릅니다.
공급자와 컨슈머가 **동일한 클라우드 리전**에 있는 경우 공급자는 ``provider.mount_request_logs_for_all_consumers``를 한 번 호출합니다. 나중에 새 컨슈머 계정이 클린룸을 설치하고 이 템플릿에서 공급자가 컨슈머 데이터를 사용하려는 경우 공급자가 해당 데이터에 액세스하려면 이 프로시저를 다시 실행해야 합니다.
공급자와 컨슈머가 **다른 클라우드 리전**에 있는 경우 공급자와 컨슈머는 :doc:`클라우드 간 자동 복제</user-guide/cleanrooms/enabling-laf>`를 활성화해야 합니다. 공급자가 여러 리전에서 분석을 실행할 때 쿼리 데이터가 공급자의 리전에서 컨슈머의 리전으로 전송되고 공급자의 리전으로 다시 전송되므로 쿼리를 완료하는 데 다소 시간이 걸릴 수 있습니다.
컨슈머가 분석에 사용되는 웨어하우스의 유형과 크기를 제한했는지 확인하려면
provider.view_warehouse_sizes_for_template``을 호출합니다. 컨슈머가 공급자 실행 분석을 위한 웨어하우스 크기를 제한하는 경우 공급자는 다음 단계의 분석 요청에서 허용된 ``warehouse_type및warehouse_size값을 지정해야 합니다. 컨슈머가 웨어하우스 제한을 지정하지 않은 경우 해당 필드는 분석 요청에서 선택 사항입니다. 자세한 내용은 웨어하우스 크기 및 유형 한도 제한하기 섹션을 참조하십시오.템플릿 이름, 테이블 이름, 템플릿 인자를 통해 ``provider.submit_analysis_request``를 호출하여 분석을 실행합니다. 컨슈머가 웨어하우스 크기 또는 유형에 대한 제한을 지정한 경우 공급자도 분석 요청에 웨어하우스 크기와 유형을 지정해야 합니다.
``provider.submit_analysis_request``에 의해 반환된 요청 ID를 저장합니다. 이 ID는 분석의 상태와 결과를 확인하는 데 필요합니다.
``provider.check_analysis_status``를 호출하여 분석 상태를 확인합니다. 상태가 ``COMPLETED``로 보고되면 ``provider.get_analysis_result``를 호출하여 분석 결과를 확인합니다.
웨어하우스 크기 및 유형 한도 제한하기¶
공급자 실행 분석에 대한 요금은 컨슈머에게 청구되므로, 컨슈머는 공급자가 자신의 계정에서 분석을 실행하는 데 사용할 수 있는 웨어하우스의 크기와 유형을 지정할 수 있습니다. 컨슈머가 웨어하우스 크기 및 유형 제한을 설정하는 방법과 공급자가 분석을 실행할 때 웨어하우스 크기 및 유형을 선택하는 방법은 다음과 같습니다.
컨슈머는
consumer.set_provider_run_configuration``을 호출하고 공급자가 특정 템플릿에 사용할 수 있는 웨어하우스 크기와 유형을 지정합니다. 다음 코드 조각에서 컨슈머는 공급자가 ``template_1템플릿을 실행할 때 MEDIUM 또는 LARGE 크기의 STANDARD 웨어하우스를 사용하도록 제한합니다.CALL samooha_by_snowflake_local_db.consumer.set_provider_run_configuration( $cleanroom_name, { 'template_1': { 'warehouse_type': 'STANDARD', 'warehouse_size': ['MEDIUM', 'LARGE']} });
공급자는 ``provider.view_warehouse_sizes_for_template``을 호출하여 해당 템플릿에 대한 공급자 실행 분석에 허용되는 웨어하우스 크기와 유형을 확인합니다.
CALL samooha_by_snowflake_local_db.provider.view_warehouse_sizes_for_template( $cleanroom_name, 'template_1', $consumer_account_loc );
공급자는 분석 실행 요청에 사용할 웨어하우스 크기와 유형을 지정합니다.
CALL samooha_by_snowflake_local_db.provider.submit_analysis_request( $cleanroom_name, $consumer_locator_id, 'template_1', ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'], ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'], object_construct( 'dimensions', ['c.REGION_CODE'], 'measure_type', ['AVG'], 'measure_column', ['c.DAYS_ACTIVE'], 'warehouse_type', 'STANDARD', -- Any other value would cause the request to fail. 'warehouse_size', 'LARGE' -- Only MEDIUM and LARGE supported. ) );
팁
다음 프로시저는 Clean Room에서 분석을 실행할 수 있는 측을 관리합니다.
컨슈머 실행 분석 (기본적으로 허용됨): 변경 사항은 즉시 적용됩니다.
provider.enable_consumer_run_analysis
provider.disable_consumer_run_analysis
공급자 실행 분석 (기본적으로 비활성화됨): 변경 사항은 컨슈머가 다시 설치해야 합니다.
provider.enable_provider_run_analysis(컨슈머가 consumer.enable_templates_for_provider_run을 호출하여 승인해야 함)
provider.disable_provider_run_analysis
코드 예제 설치 및 실행하기¶
공급자 실행 분석을 생성하고 실행하는 전체 실행 예제를 다운로드하여 설치할 수 있습니다. 이 예제를 실행하려면 동일한 조직 및 클라우드 호스팅 리전 내에 Snowflake Data Clean Room 환경이 설치된 두 개의 Snowflake 계정이 필요합니다.
공급자 계정과 컨슈머 계정 모두에 노트북을 설치합니다.
노트북 업로드하려면 다음을 수행합니다.
Sign in to Snowsight.
In the navigation menu, select Projects » Notebooks.
+ Notebook » Import .ipynb file 를 선택합니다.
다운로드한 .ipynb 파일을 선택합니다.
파일 이름을 원하는 대로 지정하고 데이터베이스와 스키마를 선택합니다.
기본 웨어하우스
APP_WH를 유지합니다.Create 를 선택합니다.
클린룸을 생성하려면 공급자 계정에서 노트북을 열고 공급자 부분을 작성합니다.
컨슈머 계정에서 노트북을 열고 컨슈머 부분을 완료하여 Clean Room을 설치 및 구성하고 템플릿을 실행합니다.
노트북에 표시된 순서대로 공급자 및 컨슈머 작업을 실행합니다.