Snowflake Data Clean Rooms: 컨슈머 API 참조 가이드¶
이 페이지에서는 클린룸 API 컨슈머가 클린룸을 관리하는 데 사용하는 프로시저에 대해 설명합니다. 코딩 설정 지침은 코딩 설정 섹션을 참조하세요.
역할 액세스 관리하기¶
grant_run_on_cleanrooms_to_role¶
- 스키마:
CONSUMER
설명: 지정된 역할에 지정된 Clean Rooms에서 프로시저의 하위 세트를 실행할 수 있는 권한을 부여합니다. Clean Rooms는 이 계정으로 생성 하는 것이 아니라 이 계정에 설치 해야 합니다. (즉, 귀하가 컨슈머인 Clean Rooms만 해당됩니다.)
클린룸에 제한적인 사용 권한을 부여하려면 사용자에게 SAMOOHA_APP_ROLE이 아닌 지정된 역할을 부여합니다. 역할 액세스에 대한 자세한 내용은 제한된 API 액세스 권한 부여하기 섹션을 참조하세요.
여기에 지정된 역할을 사용하여 다음 프로시저를 실행할 수 있습니다.
consumer.view_added_templates
consumer.view_added_template_chains
consumer.get_arguments_from_template
consumer.view_column_policy
consumer.view_consumer_datasets
consumer.view_join_policy
consumer.view_provider_column_policy
consumer.view_provider_datasets
consumer.view_provider_join_policy
consumer.view_remaining_privacy_budget
consumer.run_analysis
consumer.view_provider_activation_policy
consumer.view_activation_policy
consumer.run_activation
인자:
:ref:`cleanroom_names <label-dcr_about_clean_room_names>`*(문자열 배열)* - 지정된 역할에 제한된 액세스 권한을 부여할 모든 클린룸의 이름입니다.
run_role_name- (문자열) 지정된 클린룸에 대한 권한이 제한된 역할의 이름입니다. 이 프로시저를 호출하기 전에 역할을 만들어야 합니다.
반환: (문자열) - 성공 메시지.
예:
CREATE ROLE MARKETING_ANALYST_ROLE;
CALL samooha_by_snowflake_local_db.consumer.grant_run_on_cleanrooms_to_role(
['overlap_cleanroom', 'market_share_cleanroom'],
'MARKETING_ANALYST_ROLE'
);
revoke_run_on_cleanrooms_from_role¶
- 스키마:
CONSUMER
설명: 지정된 클린룸에서 지정된 역할의 권한을 취소합니다. 사용자에게 취소되지 않은 역할에 대한 액세스 권한이 있거나 SAMOOHA_APP_ROLE이 있는 경우에도 지정된 클린룸에서 클린룸 프로시저를 실행할 수 있습니다.
인자:
:ref:`cleanroom_names <label-dcr_about_clean_room_names>`*(문자열 배열)* - 이 계정에 있는 하나 이상의 클린룸 이름입니다.
run_role_name- (문자열) 이 계정에서 지정된 클린룸에 대한 권한이 더 이상 제한되지 않아야 하는 역할의 이름입니다.
반환: (문자열) - 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.consumer.revoke_run_on_cleanrooms_from_role(
['overlap_cleanroom', 'market_share_cleanroom'],
'TEMP_USERS_ROLE'
);
클린룸 설치¶
클린룸을 설치하거나 제거하는 절차입니다.
install_cleanroom¶
- 스키마:
CONSUMER
설명: 지정된 공급자가 만든 클린룸을 설치(조인)합니다. 이를 여러 번 호출하면 매번 기존 클린룸이 지워집니다. 두 번째 설치가 완료되기 전에 중단하면 클린룸이 손상되며, 이 절차를 완료해야 클린룸을 사용할 수 있습니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 설치할 클린룸의 이름입니다.
provider_account_locator- (문자열) 이 클린룸을 만든 공급자의 계정 로케이터입니다.
반환: (문자열) 성공 메시지.
오류 처리:
“이 계정에 대해 클라우드 간 자동 복제가 활성화되지 않았습니다”라는 오류가 표시되면 공급자가 다른 클라우드 호스팅 리전에 있다는 의미입니다. :doc:`/user-guide/cleanrooms/enabling-laf`에 설명된 대로 클라우드 간 자동 복제를 활성화해야 합니다.
예:
CALL samooha_by_snowflake_local_db.consumer.install_cleanroom(
$cleanroom_name,
$provider_locator);
is_enabled¶
- 스키마:
CONSUMER
설명: 클린룸 설치 후 사용할 준비가 되기까지 약간의 지연이 있을 수 있습니다. 이 프로시저를 호출하여 설치 후 클린룸을 사용할 준비가 되었는지 확인할 수 있습니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 상태를 확인할 클린룸의 이름입니다.
반환: (부울) 지정된 클린룸이 설치되어 사용할 준비가 되었는지 여부입니다.
예:
CALL samooha_by_snowflake_local_db.consumer.is_enabled($cleanroom_name);
uninstall_cleanroom¶
- 스키마:
CONSUMER
설명: 컨슈머 계정에서 클린룸을 제거합니다. 이렇게 하면 공유 클린룸 데이터베이스를 포함하여 클린룸과 관련된 모든 데이터베이스가 제거됩니다. 클린룸은 항상 ``consumer.install_cleanroom``을 호출하여 다시 설치할 수 있습니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 제거할 클린룸의 이름입니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.consumer.uninstall_cleanroom($cleanroom_name);
클라우드 간 협업¶
다른 클라우드 리전에 생성된 클린룸을 설치합니다. 자세히 알아보기.
enable_laf_on_account¶
- 스키마:
LIBRARY
설명: 현재 계정에서 클라우드 간 자동 복제를 사용하도록 설정합니다. ACCOUNTADMIN 역할이 필요합니다.
중요
먼저 :doc:`/sql-reference/functions/system_enable_global_data_sharing_for_account`를 호출하여 계정에 대한 클라우드 간 자동 복제를 활성화해야 합니다.
인자: 없음
반환: (문자열) 성공 메시지.
예:
USE ROLE ACCOUNTADMIN;
CALL samooha_by_snowflake_local_db.library.enable_laf_on_account();
disable_laf_on_account¶
- 스키마:
LIBRARY
설명: 현재 계정에서 클라우드 간 자동 복제를 비활성화합니다. ACCOUNTADMIN 역할이 필요합니다.
중요
이 프로시저를 호출하기 전에 :doc:`/sql-reference/functions/system_enable_global_data_sharing_for_account`를 호출해야 합니다.
인자: 없음
반환: (문자열) 성공 메시지.
예:
USE ROLE ACCOUNTADMIN;
CALL samooha_by_snowflake_local_db.library.disable_laf_on_account();
is_laf_enabled_for_cleanroom¶
- 스키마:
CONSUMER
설명: 이 클린룸에 대해 클라우드 간 자동 복제가 활성화되었는지 여부를 설명합니다. 클라우드 간 자동 복제는 :doc:`계정 관리자가 구성</user-guide/cleanrooms/enabling-laf>`해야 합니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열) - 클린룸의 이름입니다.
반환: 이 Clean Room에 대해 클라우드 간 자동 복제가 활성화되었는지 여부.
예:
CALL samooha_by_snowflake_local_db.consumer.is_laf_enabled_for_cleanroom($cleanroom_name);
request_laf_cleanroom¶
- 스키마:
CONSUMER
설명: 다른 클라우드 리전에 생성된 클린룸을 설치하기 위한 전제 조건을 설정합니다. 이 프로시저를 호출하기 전에 ``consumer.install_cleanroom``을 호출하면 실패합니다. 이 프로시저는 호출할 때마다 현재 상태를 반환합니다. 상태가 FULFILLED가 될 때까지 주기적으로 호출한 다음, ``consumer.install_cleanroom``을 호출합니다. 상태가 FULFILLED가 될 때까지 최대 10분이 걸릴 수 있습니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 설치할 리전 간 클린룸의 이름입니다.
provider_locator- (문자열) 이 클린룸을 만든 공급자의 계정 로케이터입니다.
반환: (문자열) 요청의 상태 메시지. 상태가 FULFILLED 가 될 때까지 계속 호출합니다.
예:
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.consumer.request_laf_cleanroom(
$cleanroom_name,$provider_locator);
공급자 실행 분석¶
공급자 실행 분석에 대한 자세한 내용은 공급자 실행 분석 섹션을 참조하세요.
is_provider_run_enabled¶
- 스키마:
LIBRARY
설명: 이 클린룸에서 공급자 실행 분석을 허용하는지 확인합니다. 공급자가 이 클린룸에서 분석을 실행하려면 컨슈머가 여전히 ``consumer.enable_templates_for_provider_run``을 호출하여 명시적 권한을 부여해야 합니다.
인자:
:ref:`cleanroom_name<label-dcr_about_clean_room_names>`*(문자열) - 클린룸의 이름입니다.
반환: (문자열) 클린룸이 공급자 실행 분석을 지원하는지 여부에 대한 설명입니다.
예:
CALL samooha_by_snowflake_local_db.library.is_provider_run_enabled($cleanroom_name)
approve_template¶
- 스키마:
CONSUMER
설명: 지정된 클린룸에서 공급자 실행 분석을 위한 단일 템플릿을 승인합니다. 클린룸 공급자는 일반적으로 클린룸에서 특정 템플릿을 실행할 수 있는 권한을 요청하기 위해 사전에 연락을 취합니다. 공급자 실행 분석을 위해 템플릿을 승인하기 전에 템플릿에 조인 및 열 정책을 설정해야 합니다.
컨슈머 조인 정책이 없는 클린룸은 공급자가 모든 컨슈머 열에 조인할 수 있음을 의미합니다.
컨슈머 열 정책이 없는 클린룸은 공급자가 모든 컨슈머 열을 프로젝션할 수 있음을 의미합니다.
이 승인된 템플릿을 포함하지 않는 컨슈머 열 정책이 포함된 클린룸은 공급자가 이 템플릿을 사용할 때 컨슈머 열을 프로젝션할 수 없음을 의미합니다.
consumer.approve_template``은 공급자에게 지정된 클린룸에서 지정된 템플릿을 원하는 횟수만큼 실행할 수 있는 권한을 부여합니다. 모든 공급자의 ``provider.submit_analysis_request 호출은 마지막으로 승인된 템플릿 버전에 대해 수행됩니다. 공급자가 나중에 템플릿 수정하는 경우, 마지막으로 승인된 버전은 ``provider.submit_analysis_request``가 호출될 때 실행됩니다.
한 번에 여러 템플릿을 승인하려면 ``provider.enable_templates_for_provider_run``을 호출할 수 있습니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 승인할 템플릿이 있는 클린룸의 이름입니다.
template_name- (문자열) - 공급자가 지정된 클린룸에서 실행할 수 있는 템플릿의 이름입니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.consumer.approve_template(
$cleanroom_name,
$template_name);
enable_templates_for_provider_run¶
- 스키마:
CONSUMER
설명: 공급자에게 요청된 클린룸에서 하나 이상의 지정된 템플릿을 실행할 수 있는 권한을 부여합니다. 컨슈머가 이 프로시저를 호출하려면 먼저 공급자가 클린룸에서 공급자 실행 분석을 활성화해야 합니다. ``consumer.approve_template``의 다중 템플릿 버전으로, 요구 사항과 제한 사항은 모두 동일합니다.
consumer.enable_templates_for_provider_run``은 공급자에게 지정된 클린룸에서 지정된 템플릿을 원하는 횟수만큼 실행할 수 있는 권한을 부여합니다. 모든 공급자의 ``provider.submit_analysis_request 호출은 마지막으로 승인된 템플릿 버전에 대해 수행됩니다. 공급자가 나중에 템플릿 수정하는 경우, 마지막으로 승인된 버전은 ``provider.submit_analysis_request``가 호출될 때 실행됩니다.
공급자는 컨슈머의 계정에서 활성화된 템플릿을 실행하며 사용량에 따른 요금이 컨슈머에게 청구됩니다. 특정 템플릿을 실행할 때 공급자에게 허용되는 웨어하우스 유형 또는 크기를 제한하려면 ``set_provider_run_configuration``을 호출합니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 공급자가 분석을 실행할 수 있는 클린룸의 이름입니다.
template_names- (문자열 배열) 공급자가 실행할 수 있는 클린룸에 있는 하나 이상의 템플릿 이름 배열입니다.enable_differential_privacy- (부울) TRUE인 경우 ``template_names``에 나열된 모든 템플릿에 대해 차등 개인정보 보호를 활성화합니다. 클린룸 자체에 차등 개인정보 보호가 활성화된 경우에만 이러한 템플릿에 대해 차등 개인정보 보호를 활성화할 수 있습니다. 클린룸의 차등 개인정보 보호 상태는 ``consumer.is_dp_enabled``를 호출하여 확인할 수 있습니다. ``consumer.set_privacy_settings``를 호출하여 개인정보 설정을 사용자 지정할 수 있습니다. 자세히 알아보기.template_configuration- (오브젝트, 선택 사항) ``template_names``의 각 템플릿에 대해 추가 설정을 지정하기 위한 선택적 오브젝트입니다. 이 오브젝트에는 키-값 페어가 포함되어 있으며, 여기서 키는 템플릿 이름(``template_names``에서 가져옴)이며 값은 공급자가 이 템플릿을 사용하는 방법에 대한 제한을 설정하는 오브젝트입니다. 템플릿 구성을 제공하지 않는 경우, ‘ALL’은 ``template_names``의 모든 템플릿에 대한 모든 속성의 기본값입니다. 템플릿 구성을 제공하는 경우, ``template_names``에 나열된 모든 템플릿에 대한 구성을 제공하고 해당 템플릿의 구성에 대한 모든 속성을 정의해야 합니다. ``consumer.set_provider_run_configuration``을 호출하여 템플릿에 대해 허용되는 값을 설정할 수도 있습니다.다음 속성이 지원됩니다.
``warehouse_type``(문자열) - 공급자가 이 템플릿과 함께 사용할 수 있는 허용된 웨어하우스 유형입니다. 허용되는 값은 다음과 같습니다.
ALL - 모든 웨어하우스 유형을 허용합니다.
STANDARD - 표준 웨어하우스만 허용합니다.
SNOWPARK-OPTIMIZED - Snowpark에 최적화된 웨어하우스만 허용합니다.
``warehouse_size``(문자열 배열) - 이 웨어하우스 유형 및 템플릿과 함께 사용할 수 있는 하나 이상의 허용된 웨어하우스 크기입니다. 허용되는 값은 :doc:`WAREHOUSE_SIZE </sql-reference/sql/create-warehouse> `에 정의된 값 또는 그 동의어(예: XLARGE 또는 X-LARGE)입니다. ‘ALL’을 지정하여 모든 웨어하우스 크기를 허용합니다.
반환: (문자열) 성공 메시지.
예제:
-- Simple example
CALL samooha_by_snowflake_local_db.consumer.enable_templates_for_provider_run(
$cleanroom_name,
['prod_overlap_analysis'],
FALSE);
-- Specify what types of warehouse the provider can use to run these templates.
CALL samooha_by_snowflake_local_db.CONSUMER.enable_templates_for_provider_run(
$cleanroom_name,
['template1', 'template2', 'template3'],
TRUE,
{
'template1': {'warehouse_type': 'ALL', 'warehouse_size': ['MEDIUM', 'LARGE']},
'template2': {'warehouse_type': 'SNOWPARK-OPTIMIZED', 'warehouse_size': ['MEDIUM', 'XLARGE']},
'template3': {'warehouse_type': 'STANDARD', 'warehouse_size': ['MEDIUM', 'XLARGE']}
});
set_provider_run_configuration¶
- 스키마:
CONSUMER
설명: 공급자가 클린룸에서 지정된 템플릿을 실행하는 방법을 제어하는 설정을 템플릿에 적용합니다. 컨슈머가 템플릿에 대한 구성을 제공하지 않으면 기본값이 적용됩니다. 컨슈머가 ``consumer.approve_template``을 호출하여 공급자 실행 분석을 위한 템플릿을 승인할 때까지 공급자는 템플릿을 실행할 수 없습니다.
인자:
‘:ref:`cleanroom_name<label-dcr_about_clean_room_names>`*(문자열) - 클린룸의 이름입니다. 이 클린룸에 템플릿이 없으면 프로시저에서 오류가 발생합니다. 공급자 실행 분석을 위해 템플릿을 아직 승인할 필요는 없지만, 컨슈머가 승인할 때까지 공급자는 템플릿을 실행할 수 없습니다.
template_configuration- (오브젝트) 공급자가 이 클린룸에서 특정 템플릿을 실행하는 방법에 대한 제한을 지정하는 오브젝트입니다. 공급자 실행 분석은 컨슈머의 계정에서 실행되고 컨슈머에게 비용이 청구되므로, 컨슈머는 특정 템플릿에 사용할 수 있는 웨어하우스에 대한 제한을 설정할 수 있습니다. 구성 오브젝트의 형식은 다음과 같습니다.{ <template_name>: { 'warehouse_type': '<warehouse_type>', 'warehouse_size': '<warehouse_size>' } }
다음 값을 모두 제공해야 합니다.
template_name- 오브젝트 키는 템플릿 이름입니다. 구성이 이 템플릿에 적용됩니다. 이 템플릿은 클린룸에 있어야 합니다.:samp:`{warehouse_type}`(문자열) - 공급자가 이 템플릿을 실행하는 데 사용할 수 있는 웨어하우스 유형입니다. 허용되는 값은 다음과 같습ㄴ디ㅏ.
ALL - (기본값) 모든 웨어하우스 유형을 허용합니다.
STANDARD - 표준 웨어하우스만 허용합니다.
SNOWPARK-OPTIMIZED - Snowpark에 최적화된 웨어하우스만 허용합니다. XLARGE또는 X-LARGE)가 지원됩니다.
ALL - (기본값) 모든 웨어하우스 크기가 허용됩니다.
:doc:`WAREHOUSE_SIZE </sql-reference/sql/create-warehouse>`에 정의된 모든 크기 또는 동의어(예: XLARGE 또는 X-LARGE)가 지원됩니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.consumer.set_provider_run_configuration(
$cleanroom_name,
{
'some_template': {
'warehouse_type': 'STANDARD',
'warehouse_size': ['MEDIUM', 'LARGE']
}
}
);
데이터 등록 및 등록 취소¶
다음 절차에 따라 데이터베이스, 스키마, 오브젝트를 등록 및 등록 해제합니다. 클린룸에 연결하려면 먼저 테이블과 뷰를 등록해야 합니다. 데이터베이스 또는 스키마를 등록하면 해당 데이터베이스 또는 스키마의 모든 오브젝트가 등록됩니다. 데이터 등록에 대한 자세한 내용은 데이터 등록하기 섹션을 참조하세요.
register_db¶
- 스키마:
CONSUMER
설명: 계정에 데이터베이스를 등록하면 해당 데이터베이스의 모든 오브젝트를 해당 계정의 클린룸에 연결할 수 있습니다. 더 세분화된 제어를 위해 대신 register_schema, register_managed_access_schema 또는 ``register_object``를 호출할 수 있습니다. 등록된 후 데이터베이스에 추가된 오브젝트에는 연결하지 못할 수 있으며, 이 경우 데이터베이스를 다시 등록하거나 오브젝트 자체를 등록해야 합니다.
이 프로시저를 실행하려면 데이터베이스에 대한 MANAGE GRANTS 권한이 있어야 합니다.
인자:
db_name- (문자열) 이 계정에 등록할 데이터베이스의 이름입니다.
반환: (문자열) 성공 메시지.
예:
USE ROLE <ROLE_WITH_MANAGE_GRANTS>;
CALL samooha_by_snowflake_local_db.consumer.register_db('SAMOOHA_SAMPLE_DATABASE');
register_schema¶
- 스키마:
LIBRARY
설명: 계정에 스키마를 등록하면 해당 스키마의 모든 오브젝트를 해당 계정의 클린룸에 연결할 수 있습니다. 더 세분화된 제어를 위해 대신 ``register_object``를 호출할 수 있습니다. 등록된 후 스키마에 추가된 오브젝트에는 연결하지 못할 수 있으며, 이 경우 스키마를 다시 등록하거나 오브젝트 자체를 등록해야 합니다.
관리형 액세스 스키마(즉, WITH MANAGED ACCESS 매개변수를 사용하여 생성된 스키마)를 등록하려면 대신 ``library.register_managed_access_schema``를 사용합니다.
인자:
schema_names- (문자열 배열) 등록할 정규화된 스키마의 배열입니다.
반환: (문자열) 성공 메시지.
예:
USE ROLE <ROLE_WITH_MANAGE_GRANTS>;
CALL samooha_by_snowflake_local_db.library.register_schema(
['SAMOOHA_SAMPLE_DATABASE.DEMO']
);
register_managed_access_schema¶
- 스키마:
LIBRARY
설명: 계정에 관리형 액세스 스키마를 등록하면 해당 스키마의 모든 오브젝트를 해당 계정의 클린룸에 연결할 수 있습니다. 더 세분화된 제어를 위해 대신 ``register_object``를 호출할 수 있습니다. 등록된 후 스키마에 추가된 오브젝트에는 연결하지 못할 수 있으며, 이 경우 스키마를 다시 등록하거나 오브젝트 자체를 등록해야 합니다.
인자:
schema_names- (문자열 배열) 등록할 정규화된 관리형 스키마의 배열입니다.
반환: (문자열) 성공 메시지.
예:
USE ROLE <ROLE_WITH_MANAGE_GRANTS>;
CALL samooha_by_snowflake_local_db.library.register_managed_access_schema(
['SAMOOHA_SAMPLE_DATABASE.DEMO']
);
register_objects¶
- 스키마:
LIBRARY
설명: 클린룸에 모든 유형의 테이블과 뷰에 대한 액세스 권한을 부여하여 consumer.link_datasets 호출을 통해 클린룸에 연결할 수 있도록 합니다. library.register_schema, library.register_managed_access_schema, ``consumer.register_db``를 호출하여 더 광범위한 오브젝트 그룹을 등록할 수 있습니다. 이 프로시저를 실행하려면 데이터베이스에 대해 MANAGE GRANTS 권한이 있어야 합니다.
인자:
object_names- (배열) 정규화된 오브젝트 이름의 배열입니다. 이러한 오브젝트를 클린룸에 연결할 수 있습니다.
반환: (문자열) 성공 메시지.
예
테이블과 뷰를 등록하려면 다음을 수행합니다.
USE ROLE <ROLE_WITH_MANAGE_GRANTS>;
CALL samooha_by_snowflake_local_db.library.register_objects(
[
'SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS',
'SAMOOHA_SAMPLE_DATABASE.INFORMATION_SCHEMA.FIELDS'
]
);
enable_external_tables_on_account¶
- 스키마:
LIBRARY
설명: 이 계정의 모든 Clean Rooms에서 Iceberg 또는 외부 테이블을 사용하도록 설정합니다. Iceberg 또는 외부 테이블을 어느 한 계정으로 연결할 수 있도록 하려면 공급자 및 컨슈머 계정 :emph:`모두`에서 ACCOUNTADMIN으로 호출해야 합니다. 이 기능을 이 계정의 특정 클린룸으로 제한하려면 ``enable_external_tables_for_cleanroom``을 대신 호출합니다.
인자: 없음
반환: (문자열) 성공 메시지.
예:
USE ROLE ACCOUNTADMIN;
CALL samooha_by_snowflake_local_db.library.enable_external_tables_on_account();
enable_external_tables_for_cleanroom¶
- 스키마:
CONSUMER
설명: 컨슈머가 이 계정의 지정된 클린룸에서 Iceberg 또는 외부 테이블을 연결할 수 있도록 활성화합니다. 이 계정의 모든 클린룸에 대해 Iceberg 및 외부 테이블을 허용하려면 ``enable_external_tables_on_account``를 대신 호출합니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 공급자가 Iceberg 테이블 또는 외부 테이블을 연결할 수 있는 클린룸의 이름입니다.
반환: (문자열) 성공 메시지. 성공하면 보안 검사를 트리거하고 보안 검사에 성공하면 생성되는 패치 번호도 제공합니다.
예:
CALL samooha_by_snowflake_local_db.provider.enable_external_tables_for_cleanroom(
$cleanroom_name);
unregister_db¶
- 스키마:
LIBRARY
설명: SAMOOHA_APP_ROLE 역할 및 Snowflake Data Clean Room 네이티브 애플리케이션에 부여된 데이터베이스 수준 권한을 제거합니다. 클린룸에 연결된 이 데이터베이스의 모든 데이터는 이 계정에서 더 이상 액세스할 수 없습니다. 이 프로시저를 실행하려면 데이터베이스에 대해 MANAGE GRANTS 권한이 있어야 합니다.
인자:
db_name- (문자열) 등록 해제할 데이터베이스의 이름입니다.
반환: (문자열) 성공 메시지.
예:
USE ROLE <ROLE_WITH_MANAGE_GRANTS>;
CALL samooha_by_snowflake_local_db.library.unregister_db('SAMOOHA_SAMPLE_DATABASE');
unregister_schema¶
- 스키마:
LIBRARY
설명: 하나 이상의 스키마를 등록 해제하여 사용자가 테이블과 뷰를 클린룸에 연결하지 못하게 합니다.
관리형 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)를 등록 해제하려면 ``library.unregister_managed_access_schema``를 대신 사용합니다. 이 프로시저를 실행하려면 데이터베이스에 대해 MANAGE GRANTS 권한이 있어야 합니다.
인자:
schema_names- (문자열 배열) 등록 해제할 스키마의 정규화된 이름입니다.
반환: (문자열) 성공 메시지.
예:
USE ROLE <ROLE_WITH_MANAGE_GRANTS>;
CALL samooha_by_snowflake_local_db.library.unregister_schema(
['SAMOOHA_SAMPLE_DATABASE.PUBLIC', 'MY_DB.MY_SCH']
);
unregister_managed_access_schema¶
- 스키마:
LIBRARY
설명: 하나 이상의 관리형 액세스 스키마를 등록 해제하여 사용자가 테이블과 뷰를 클린룸에 연결하지 못하게 합니다.
인자:
schema_names- (문자열 배열) 등록 해제할 스키마의 정규화된 이름입니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.library.unregister_managed_access_schema(
['SAMOOHA_SAMPLE_DATABASE.DEMO']
);
unregister_objects¶
- 스키마:
LIBRARY
설명: 모든 유형의 테이블과 뷰에 대한 클린룸 액세스를 취소합니다. 이 계정으로 관리되는 클린룸의 사용자는 더 이상 오브젝트를 사용할 수 없습니다.
인자:
object_names- (배열) 액세스 권한을 취소할 정규화된 오브젝트 이름의 배열입니다.
반환: (문자열) 성공 메시지.
예
테이블 및 뷰 등록을 취소하려면 다음을 수행합니다.
USE ROLE <ROLE_WITH_MANAGE_GRANTS>;
CALL samooha_by_snowflake_local_db.library.unregister_objects(
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS','MY_DB.MY_SCH.MY_VIEW']
);
데이터 세트 연결 및 연결 해제¶
데이터 세트가 등록되면 해당 데이터 세트의 테이블이나 뷰를 특정 클린룸에 연결할 수 있습니다. 특정 클린룸에서 테이블이나 뷰의 연결을 해제하여 클린룸에서 해당 데이터에 대한 액세스를 제거할 수도 있습니다.
link_datasets¶
- 스키마:
CONSUMER
설명: 테이블 또는 뷰를 클린룸에 연결하여 지정한 조인 및 열 정책에 따라 해당 클린룸 내의 템플릿에 테이블에 대한 액세스 권한을 부여합니다.
데이터 세트에 다른 데이터베이스에 저장된 Snowflake 정책이 포함된 경우 사용자(또는 클린룸 관리자)는 데이터를 클린룸에 연결하기 위해 :ref:`클린룸에 해당 정책 데이터베이스에 대한 액세스 권한을 부여<label-dcr_link_views_with_external_policies>`해야 합니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 데이터를 연결할 클린룸의 이름입니다.
full_tables- (문자열 배열) 클린룸에 노출할 정규화된 테이블 또는 뷰 이름의 목록입니다. 이러한 오브젝트는 먼저 적절한 :ref:`등록 방법<cleanroom_consumer_library_register_objects>`을 사용하여 등록되어야 합니다(클린룸 환경에서 사용할 수 있도록 설정).
참고
클린룸에 연결된 테이블이 삭제, 이름 변경, 이동 또는 제한적 권한이 추가된 경우, 동일한 위치, 이름, 권한으로 이전 테이블을 복원하지 않는 한, 클린룸에서 해당 테이블을 더 이상 사용할 수 없습니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.consumer.link_datasets(
$cleanroom_name,
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS', 'MY_DB.MY_SCH.EXPOSURES']
);
unlink_datasets¶
- 스키마:
CONSUMER
설명: 모든 사용자에 대해 지정된 클린룸의 지정된 테이블 또는 뷰에 대한 액세스를 제거합니다. 이는 클린룸에 연결한 데이터에만 작동합니다.
인자:
:ref:`cleanroom_name<label-dcr_about_clean_room_names>`*(문자열)* - 액세스 권한을 제거해야 하는 클린룸의 이름입니다.
tables_list- (문자열 배열) 액세스를 차단해야 하는 정규화된 테이블 또는 뷰 이름의 목록입니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.consumer.unlink_datasets(
$cleanroom_name,
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS', 'MYDB.MYSCH.EXPOSURES']);
view_consumer_datasets¶
- 스키마:
CONSUMER
설명: 모든 컨슈머가 지정된 클린룸에 링크한 모든 테이블과 뷰를 볼 수 있습니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열) - 클린룸의 이름입니다.
반환: 지정된 클린룸에 연결된 오브젝트 테이블과 각 오브젝트에 대한 클린룸의 내부 뷰 이름입니다.
예:
CALL samooha_by_snowflake_local_db.consumer.view_consumer_datasets($cleanroom_name);
정책 관리 및 보기¶
설치한 클린룸의 데이터에 대한 :doc:`정책을 관리</user-guide/cleanrooms/policies>`합니다.
set_join_policy¶
- 스키마:
CONSUMER
Description: Specifies which columns other users can join on when they run a template in the specified clean room.
Calling this function completely replaces the old policy with the new one.
와일드카드가 포함된 쿼리는 조인 정책을 우회할 수 있으므로, 분석 템플릿을 디자인할 때는 신중을 기해야 합니다.
Learn more about clean room policies: Clean Room 테이블 정책 이해.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 조인 정책을 적용해야 하는 클린룸의 이름입니다.
table_col_names- (문자열 배열) 조인할 수 있는 열의 정규화된 이름으로,database name.schema name:column name형식으로 나타냅니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.consumer.set_join_policy(
$cleanroom_name,
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL', 'MYDB.MYSCH.EXPOSURES:HASHED_EMAIL']
);
view_join_policy¶
- 스키마:
CONSUMER
Description: Shows the column policy for your data in this clean room.
Learn more about clean room policies: Clean Room 테이블 정책 이해.
인자:
:ref:`cleanroom_name<label-dcr_about_clean_room_names>`*(문자열)*
반환: 조인 정책 (table)
예:
CALL samooha_by_snowflake_local_db.consumer.view_join_policy($cleanroom_name);
view_provider_join_policy¶
- 스키마:
CONSUMER
Description: Shows which provider columns the consumer can join on in the specified clean room.
Learn more about clean room policies: Clean Room 테이블 정책 이해.
인자:
:ref:`cleanroom_name<label-dcr_about_clean_room_names>`*(문자열)*
반환: (Table) 조인 정책.
예:
CALL samooha_by_snowflake_local_db.consumer.view_provider_join_policy($cleanroom_name);
set_column_policy¶
- 스키마:
CONSUMER
Description: Specifies which columns of your data can be projected in templates run by other collaborators.
Calling this function completely replaces the old policy with the new one.
일반적으로 이러한 종류의 데이터가 프로젝션되는 것을 원하지 않으므로 ID 열이나 이메일과 같은 민감한 열에는 열 정책을 설정하지 마세요.
와일드카드가 포함된 쿼리는 이러한 검사를 사용하여 포착되지 않을 수 있으므로 분석 템플릿을 설계할 때는 신중을 기해야 합니다.
Learn more about clean room policies: Clean Room 테이블 정책 이해.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 열 정책을 적용해야 하는 클린룸의 이름입니다.
analysis_table_cols- (문자열 배열) 프로젝션할 수 있는 열의 정규화된 이름으로,database name.schema name:column name형식으로 나타냅니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.consumer.set_column_policy(
$cleanroom_name,
['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'
]
);
view_column_policy¶
- 스키마:
CONSUMER
Description: Shows your column policy in the specified clean room. To see the provider’s column policy, call
consumer.view_provider_column_policy.
Learn more about clean room policies: Clean Room 테이블 정책 이해.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 설명할 클린룸의 이름입니다.
반환: (테이블) 클린룸의 모든 컨슈머 열 정책에 대한 정보입니다.
예:
CALL samooha_by_snowflake_local_db.consumer.view_column_policy($cleanroom_name);
view_provider_column_policy¶
- 스키마:
CONSUMER
Description: Shows the provider’s column policy.
Learn more about clean room policies: Clean Room 테이블 정책 이해.
인자:
:ref:`cleanroom_name<label-dcr_about_clean_room_names>`*(문자열)*
반환: 열 정책 (table)
예:
CALL samooha_by_snowflake_local_db.consumer.view_provider_column_policy($cleanroom_name);
템플릿¶
다음 프로시저를 통해 사용자는 클린룸에서 템플릿으로 작업할 수 있습니다.
view_template_definition¶
- 스키마:
CONSUMER
설명: 지정된 템플릿의 원시 JinjaSQL을 봅니다. is_obfuscated 인자를 적용하여 템플릿이 난독 처리된 경우, 템플릿 소스 코드를 볼 수 없습니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 템플릿을 보관하는 클린룸의 이름입니다.
template_name- (문자열) 보려는 템플릿의 이름입니다.
반환: (문자열) 템플릿 정의입니다.
예:
CALL samooha_by_snowflake_local_db.consumer.view_template_definition(
$cleanroom_name,
'prod_overlap_analysis');
get_arguments_from_template¶
- 스키마:
CONSUMER
설명: 템플릿에서 사용하는 인자 목록을 가져옵니다. ``consumer.run_analysis``를 호출할 때 이러한 인자의 값을 템플릿에 전달할 수 있습니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 템플릿이 있는 클린룸의 이름입니다.
template_name- (문자열) 인자를 반환할 템플릿의 이름입니다.
반환: (테이블) 인자 목록 및 사양입니다.
예:
CALL samooha_by_snowflake_local_db.consumer.get_arguments_from_template(
$cleanroom_name,
'prod_overlap_analysis');
템플릿 체인¶
다음 프로시저를 통해 사용자는 클린룸에서 :doc:`템플릿 체인</user-guide/cleanrooms/developer-template-chains>`으로 작업할 수 있습니다.
view_added_template_chains¶
- 스키마:
CONSUMER
설명: 주어진 클린룸에 정의된 모든 템플릿 체인을 나열합니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 템플릿 체인을 나열할 클린룸의 이름입니다.
반환: (테이블) 지정된 클린룸의 템플릿 체인에 대한 정보입니다.
예:
CALL samooha_by_snowflake_local_db.consumer.view_added_template_chains(
$cleanroom_name);
view_template_chain_definition¶
- 스키마:
CONSUMER
설명: 지정된 템플릿 체인의 특성을 반환합니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 설명할 템플릿 체인이 있는 클린룸의 이름입니다.
template_chain_name- (문자열) 설명할 템플릿 체인의 이름입니다.
반환: (문자열) 지정된 템플릿 체인의 정의입니다.
예:
CALL samooha_by_snowflake_local_db.consumer.view_template_chain_definition(
$cleanroom_name,
'insights_chain');
분석 실행¶
다음 프로시저는 지정된 템플릿을 기반으로 분석 또는 활성화를 실행합니다.
run_analysis¶
- 스키마:
CONSUMER
설명: 템플릿 또는 템플릿 체인을 사용하여 분석을 실행하고 결과 테이블을 반환합니다.
중요
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 분석을 실행할 클린룸의 이름입니다.
template_name- (문자열) 클린룸에서 실행할 템플릿 또는 템플릿 체인의 이름입니다. 이 템플릿은 공급자 또는 컨슈머가 클린룸에 추가한 것이어야 합니다.consumer_tables- (문자열 배열) 정규화된 컨슈머 테이블 이름의 배열입니다. 이는my_table템플릿 변수에 할당됩니다. 이러한 테이블은 이미 클린룸에 연결되어 있어야 합니다. 사용 가능한 테이블을 보려면 ``consumer.view_consumer_datasets``를 호출합니다.provider_tables- (문자열 배열) 정규화된 공급자 테이블 이름의 배열입니다. 이는source_table템플릿 변수에 할당됩니다. 이러한 테이블은 클린룸에 연결되어 있어야 합니다. ``consumer.view_provider_datasets``를 호출하여 사용 가능한 테이블을 확인합니다.analysis_arguments- (오브젝트) 템플릿에 전달된 키-값 페어가 있는 오브젝트입니다. 템플릿은 키 이름으로 변수에 액세스할 수 있습니다.{'age': 20}``을 전달하면 템플릿은 ``{{age}}``로 값에 액세스합니다. 값이 필요하지 않은 경우 빈 오브젝트를 전달합니다. 어떤 값이 필요한지 확인하려면 ``consumer.view_template_definition``을 호출하여 해당 템플릿을 검사합니다. 템플릿을 검사하여 사용된 열 이름을 정규화해야 하는지 여부를 확인합니다. 템플릿에서 테이블의 별칭이 ``p또는c``인 경우 열 이름에 소문자 ``p또는c테이블 별칭을 사용합니다.이 오브젝트에는 1개의 선택적 예약 값이 있습니다.
epsilon(Float, 선택 사항) - 이 클린룸에 대해 차등 개인정보 보호가 활성화된 경우 `차등 개인정보 보호를 위한 엡실론 값<https://www.google.com/search?q=differential+privacy+epsilon&oq=differential+privacy+epsilon>`_을 지정합니다. 기본값은 0.1입니다.
use_cache- (부울, 선택 사항) 동일한 쿼리에 캐시된 결과를 사용할지 여부입니다. 기본값은 FALSE입니다.
반환: (Table) 쿼리 결과.
예:
CALL samooha_by_snowflake_local_db.consumer.run_analysis(
$cleanroom_name,
'prod_overlap_analysis',
['DB1.MYDATA.CONVERSIONS'], -- Consumer tables
['MYDB.MYSCH.EXPOSURES'], -- Provider tables
object_construct(
'max_age', 30
)
);
활성화¶
다음 프로시저는 :doc:`활성화</user-guide/cleanrooms/activation>`를 관리하거나 컨슈머나 공급자의 Snowflake 계정에 결과를 저장하는 방법을 관리합니다. API를 사용하여 서드 파티 계정에 대한 데이터를 활성화할 수 없습니다.
view_activation_policy¶
- 스키마:
CONSUMER
설명: 지정된 클린룸에서 컨슈머의 활성화 정책을 보여줍니다.
인자:
:ref:`cleanroom_name<label-dcr_about_clean_room_names>`*(문자열)* - 보고할 클린룸의 이름입니다.
반환: (Table) 지정된 클린룸에서 공급자의 활성화 정책입니다.
예:
CALL samooha_by_snowflake_local_db.consumer.view_activation_policy($cleanroom_name);
view_external_activation_history¶
- 스키마:
LIBRARY
설명: 현재 계정의 활성화 요청 기록을 봅니다.
인자: 없음
반환: 활성화 요청의 세부 정보 및 상태가 포함된 테이블.
예:
CALL samooha_by_snowflake_local_db.library.view_external_activation_history();
set_activation_policy¶
- 스키마:
CONSUMER
Description: Indicates which columns should be allowed to be activated.
Your activation policies are enforced only on queries by other users; your activation policies are not enforced in your own queries.
Calling this function completely replaces the old policy with the new one.
Learn more about clean room policies: Clean Room 테이블 정책 이해.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 활성화 정책을 설정할 클린룸의 이름입니다.
columns- (배열) 활성화할 수 있는 자체 데이터의 열 이름으로template name:database name.schema name.table name:column_name형식으로 나타냅니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.consumer.set_activation_policy(
$cleanroom_name,
[
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE_NAME.DEMO.CUSTOMERS:HASHED_EMAIL',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE_NAME.DEMO.CUSTOMERS:REGION_CODE' ]);
consumer.approve_provider_activation_consent¶
- 스키마:
CONSUMER
설명: 공급자 활성화를 허용하라는 공급자의 요청을 승인하며, 이는 공급자의 Snowflake 계정으로 결과를 푸시하는 기능입니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 공급자가 템플릿 실행을 요청하는 클린룸의 이름입니다.
activation_template_name- (문자열) 공급자 실행하려는 활성화 템플릿의 이름입니다.
반환: (string) 성공 메시지입니다. 공급자가 지정된 템플릿이 있는 이 클린룸에서 ``provider.request_provider_activation_consent``를 호출하지 않은 경우 이 프로시저는 실패합니다.
예:
CALL samooha_by_snowflake_local_db.consumer.approve_provider_activation_consent(
$cleanroom_name,
'activation_my_template');
run_activation¶
- 스키마:
CONSUMER
설명: 컨슈머 또는 공급자의 Snowflake 계정으로 결과를 다시 푸시하는 템플릿을 실행합니다. consumer_direct_activation 인자는 컨슈머 활성화인지, 아니면 공급자 활성화인지를 결정합니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 활성화를 실행할 클린룸의 이름입니다.
segment_name- (문자열) 이 활성화 실행에 의해 생성된 행에 레이블을 지정하는 데 사용되는 임의의 문자열입니다. 각 활성화 실행은 기존 결과 테이블에 새 행을 추가합니다. 특정 실행으로 결과를 필터링할 수 있도록 이 프로시저를 호출할 때마다 이 필드에 고유한 문자열을 제공합니다.template_name- (문자열) 호출할 활성화 템플릿의 이름입니다.consumer_tables- (문자열 배열) 템플릿에 전달할 정규화된 컨슈머 테이블 이름의 배열입니다.provider_tables- (문자열 배열) 템플릿에 전달할 정규화된 공급자 테이블 이름의 배열입니다.activation_arguments- (오브젝트) 템플릿에 전달할 인자의 키-값 세트입니다.consumer_direct_activation- (부울, 선택 사항) - TRUE는 결과를 컨슈머 계정으로 다시 푸시하고, FALSE는 공급자에게 결과를 전송합니다. 기본값은 FALSE입니다.
반환: (문자열) 성공 메시지.
예:
-- Run a consumer activation, as specified by the final TRUE argument.
SET segment_name = 'my_activation_segment';
CALL samooha_by_snowflake_local_db.consumer.run_activation(
$cleanroom_name,
$segment_name,
$template_name,
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
object_construct(
'c_join_col', 'c.hashed_email',
'p_join_col', 'p.hashed_email'
),
TRUE);
dcr_health.provider_run_provider_activation_history¶
설명: 지정된 클린룸에 대한 공급자 활성화 요청 기록을 반환합니다. 공급자와 컨슈머가 모두 시작한 공급자 활성화 요청이 표시됩니다. 이 프로시저는 공급자 활성화 관련 문제를 디버그하는 데 도움이 되는 추가 정보를 제공합니다.
인자:
:ref:`cleanroom_name<label-dcr_about_clean_room_names>`*(문자열)* - 활성화가 요청된 클린룸의 이름입니다. 사용자는 이 클린룸의 공급자 또는 컨슈머여야 합니다.
반환: (테이블) - 템플릿 및 세그먼트 이름, 상태, 컨슈머 계정 로케이터, 요청에서 반환된 모든 오류 메시지 등 각각에 대한 정보가 포함된 활성화 요청 목록입니다.
예:
CALL samooha_by_snowflake_local_db.dcr_health.provider_run_provider_activation_history(
$cleanroom_name);
컨슈머 정의 템플릿¶
다음 APIs를 사용하면 클린룸에 컨슈머 정의 템플릿을 추가할 수 있습니다. 자세한 내용은 :ref:`컨슈머 작성 템플릿<label-dcr_consumer_written_templates>`을 참조하세요.
create_template_request¶
- 스키마:
CONSUMER
설명: 클린룸 공급자에게 사용자 지정 템플릿을 클린룸에 추가할 수 있도록 승인해 달라는 요청을 보냅니다. 컨슈머가 작성한 사용자 지정 템플릿 섹션을 참조하세요.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 템플릿이 추가될 클린룸의 이름입니다.
template_name- (문자열) 추가할 템플릿의 이름입니다. 모두 소문자, 숫자, 공백 또는 밑줄이어야 합니다. 활성화 템플릿 이름은 “activation”으로 시작해야 합니다.template_definition- (문자열) JinjaSQL 템플릿입니다. 템플릿 구문에 대해 알아보세요.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.consumer.create_template_request(
$cleanroom_name,
$template_name,
$$
SELECT
identifier({{ dimensions[0] | column_policy }})
FROM
identifier({{ my_table[0] }}) c
INNER JOIN
identifier({{ source_table[0] }}) p
ON
c.identifier({{ consumer_id }}) = p.identifier({{ provider_id | join_policy }})
{% if where_clause %} where {{ where_clause | sqlsafe | join_and_column_policy }} {% endif %};
$$);
get_sql_jinja¶
- 스키마:
CONSUMER
설명: JinjaSQL 템플릿을 SQL 문으로 평가합니다. 이 프로시저는 사용자 지정 템플릿을 개발할 때 지정된 매개 변수 세트로 처리한 후 템플릿이 렌더링되는 방식을 확인하는 데 사용됩니다.
이 프로시저는 표준 JinjaSQL 문만 처리하며 join_policy 또는 ``column_policy``와 같은 JinjaSQL에 대한 클린룸 확장은 처리할 수 없습니다.
인자:
template_string- (문자열) 처리할 JinjaSQL 코드입니다. 표준 JinjaSQL만 지원됩니다.arguments- (오브젝트) 필드 이름이 템플릿에서 사용되는 변수에 해당하는 오브젝트입니다.
반환: (문자열) 제공된 변수 값으로 제출된 템플릿에 의해 생성된 SQL 문.
예:
CALL samooha_by_snowflake_local_db.consumer.get_sql_jinja(
$$
SELECT COUNT(*), IDENTIFIER({{ group_by_col }})
FROM IDENTIFIER({{ my_table | sqlsafe }})
INNER JOIN IDENTIFIER({{ source_table | sqlsafe }})
ON IDENTIFIER({{ consumer_join_col }}) = IDENTIFIER({{ provider_join_col }})
GROUP BY IDENTIFIER({{ group_by_col }});
$$,
object_construct(
'group_by_col', 'city',
'consumer_join_col', 'hashed_email',
'provider_join_col', 'hashed_email',
'my_table', 'mydb.mysch.t1',
'source_table', 'mydb.mysch.t2'));
응답:
SELECT COUNT(*), IDENTIFIER('city')
FROM IDENTIFIER(mydb.mysch.t1)
INNER JOIN IDENTIFIER(mydb.mysch.t2)
ON IDENTIFIER('hashed_email') = IDENTIFIER('hashed_email')
GROUP BY IDENTIFIER('city');
consumer.generate_python_request_template¶
- 스키마:
CONSUMER
설명: 사용자 지정 Python 코드가 포함된 컨슈머 클린룸 템플릿을 생성합니다. 생성된 템플릿에는 Python 코드와 JinjaSQL 템플릿에 대한 자리 표시자가 포함됩니다. 최종 템플릿을 ``consumer.create_template_request``에 전달합니다.
컨슈머 정의 템플릿에 대한 자세한 내용은 컨슈머가 작성한 사용자 지정 템플릿 섹션을 참조하세요.
인자:
function_name- (문자열) 템플릿에서 함수를 호출하는 데 사용하는 함수 이름입니다.arguments- (문자열 쌍 배열)function_name함수에 필요한 인자의 배열입니다. 각 요소는 인자 이름과 해당 Snowflake SQL 데이터 타입을 제공하는 공백으로 구분된 쌍입니다(예:['size INT', 'start_date DATE']).packages- (문자열 배열) Python 코드에 필요한 패키지 이름의 배열입니다. 없는 경우 빈 배열을 지정합니다.지원되는 패키지의 전체 목록을 참조하세요<https://repo.anaconda.com/pkgs/snowflake/>`_(예: ``['pandas','numpy']`).imports- 지원되지 않으므로, 사용하지 않습니다rettype- (문자열) 함수의 Snowflake SQL 반환 유형입니다(예: INTEGER, VARCHAR).handler- (문자열) Python 코드에서 기본 처리기 함수의 이름입니다. 일반적으로 이는 ``’main’``입니다.code- (문자열) Python 코드 구현입니다. 가져오기를 포함하고 지정된 처리기가 가져오기에 정의된 경우 빈 문자열일 수 있습니다.
반환: (문자열) JinjaSQL 템플릿에 대한 자리 표시자가 있는 Python UDF를 반환합니다. 템플릿 문자열을 ``consumer.create_template_request``에 전달하기 전에 중첩된 모든 $$ 또는 작은따옴표 '`를 올바르게 이스케이프해야 합니다. :ref:`label-dcr_consumer_submitted_code 섹션을 참조하세요.
예:
간단한 Python 예제를 통해 헬퍼 함수를 호출해 보세요.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.CONSUMER.GENERATE_PYTHON_REQUEST_TEMPLATE(
'my_func', -- SQL should use this name to call your function.
['data VARIANT', 'index INTEGER'], -- Arguments and types for the function.
['pandas', 'numpy'], -- Standard libraries used.
[], -- Reserved.
'INTEGER', -- SQL return type.
'main', -- Standard main handler.
$$
import pandas as pd
import numpy as np
def main(data, index):
df = pd.DataFrame(data) # you can do something with df but this is just an example
return np.random.randint(1, 100)
$$
);
다음 예제는 생성된 코드를 보여줍니다. ``<INSERT SQL TEMPLATE HERE>``을 템플릿 JinjaSQL 코드로 바꾸세요.
BEGIN
-- First define the Python UDF
CREATE OR REPLACE FUNCTION CLEANROOM.my_func(data VARIANT, index INTEGER)
RETURNS INTEGER
LANGUAGE PYTHON
RUNTIME_VERSION = 3.10
PACKAGES = ('pandas', 'numpy')
HANDLER = 'main'
AS $$
import pandas as pd
import numpy as np
def main(data, index):
df = pd.DataFrame(data) # you can do something with df but this is just an example
return np.random.randint(1, 100)
$$;
-- Then define and run the SQL query
LET SQL_TEXT varchar := $$<INSERT SQL TEMPLATE HERE>$$;
-- Run the query and return the result
LET RES resultset := (EXECUTE IMMEDIATE :SQL_TEXT);
RETURN TABLE(RES);
END;
list_template_requests¶
- 스키마:
CONSUMER
설명: 컨슈머가 클린룸에 템플릿을 추가하기 위해 요청한 내용을 나열합니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 템플릿 요청을 나열할 클린룸입니다.
반환: 다음 열이 포함된 테이블입니다.
request_id- 클린룸 시스템에서 생성된 요청의 ID입니다.provider_identifier- 공급자 계정 로케이터입니다.template_name- 컨슈머가 요청에 제공한 템플릿 이름입니다.template_definition- 컨슈머가 클린룸에 추가하도록 요청한 템플릿의 소스 코드입니다.request_status- 요청 상태 PENDING, APPROVED 또는 REJECTED입니다.reason- 요청 상태가 REJECTED인 경우 공급자는 여기에 거부 사유를 제공해야 합니다.
예:
CALL samooha_by_snowflake_local_db.consumer.list_template_requests($cleanroom_name);
클린룸 메타데이터 getter 메서드¶
다음 메서드는 클린룸의 관련 속성을 보여줍니다.
describe_cleanroom¶
- 스키마:
CONSUMER
설명: 템플릿, 데이터 세트, 정책을 포함하여 지정된 클린룸에 대한 주요 정보의 요약을 제공합니다. is_obfuscated 인자를 적용하여 템플릿이 난독 처리된 경우, 템플릿 이름을 보려면 Snowflake Enterprise Edition 이상을 사용해야 합니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 설명할 클린룸의 이름입니다.
반환: (문자열) 클린룸에 대한 설명입니다.
예:
CALL samooha_by_snowflake_local_db.consumer.describe_cleanroom($cleanroom_name);
view_provider_datasets¶
- 스키마:
CONSUMER
설명: 공급자가 클린룸에 추가한 모든 데이터 세트를 나열합니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열) - 클린룸의 이름입니다.
반환: (테이블) 공급자가 추가한 데이터 세트의 테이블입니다. 여기에 반환된 테이블 이름을 쿼리에 사용합니다.
예:
CALL samooha_by_snowflake_local_db.consumer.view_provider_datasets($cleanroom_name);
view_added_templates¶
- 스키마:
CONSUMER
설명: 클린룸의 모든 템플릿을 나열합니다. is_obfuscated 인자를 적용하여 템플릿이 :ref:`난독 처리<dcr_provider_add_custom_sql_template>`된 경우 해당 템플릿을 보려면 Snowflake Enterprise Edition 이상을 사용해야 합니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열) - 클린룸의 이름입니다.
반환: 이 클린룸의 템플릿 목록과 각 템플릿의 소스 코드입니다(공급자가 템플릿을 난독 처리하지 않는 한).
예:
CALL samooha_by_snowflake_local_db.consumer.view_added_templates($cleanroom_name);
is_consumer_run_enabled¶
- 스키마:
LIBRARY
설명: 지정된 클린룸에 대해 컨슈머 실행 분석이 활성화되어 있는지 확인합니다. 이는 기본적으로 활성화되어 있지만, 클린룸 공급자가 비활성화할 수 있습니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열) - 클린룸의 이름입니다.
반환: (문자열) 클린룸이 컨슈머 실행 분석을 허용하는지 여부입니다.
예:
CALL samooha_by_snowflake_local_db.library.is_consumer_run_enabled($cleanroom_name);
view_cleanrooms¶
- 스키마:
CONSUMER
설명: 이 계정으로 조인(설치)되었거나 조인 가능한 모든 클린룸을 나열합니다. 설치된 클린룸만 보려면 ``consumer.view_installed_cleanrooms``를 실행합니다. 이 계정으로 생성된 클린룸을 보려면 ``provider.view_cleanrooms``를 호출합니다.
인자: 없음
반환: (테이블) 이 계정에 대해 설치되거나 초대된 모든 Clean Rooms.
예:
CALL samooha_by_snowflake_local_db.consumer.view_cleanrooms();
view_installed_cleanrooms¶
- 스키마:
CONSUMER
설명: 이 계정에 설치(조인)된 모든 클린룸을 나열합니다. 조인된 클린룸과 조인되지 않은 클린룸을 모두 보려면 ``consumer.view_cleanrooms``를 호출합니다. 이 계정으로 생성된 모든 클린룸을 보려면 ``provider.view_cleanrooms``를 호출합니다.
인자: 없음
반환: (테이블) 이 계정에 설치된 Clean Rooms.
예:
CALL samooha_by_snowflake_local_db.consumer.view_installed_cleanrooms();
차등 개인정보 보호¶
이러한 프로시저는 클린룸에서 :doc:`차등 개인정보 보호</user-guide/cleanrooms/differential-privacy>`를 제어합니다. ``consumer.enable_templates_for_provider_run``을 호출할 때 템플릿 수준에서 차등 개인정보 보호를 지정할 수도 있습니다.
is_dp_enabled¶
- 스키마:
CONSUMER
설명: 클린룸에서 차등 개인정보 보호가 활성화되어 있는지 확인합니다. 이 값을 확인하려면 클린룸을 설치해야 합니다.
인자:
:ref:`cleanroom_name<label-dcr_about_clean_room_names>`*(문자열)*
반환: (부울) 클린룸에 차등 개인정보 보호가 활성화되었는지 여부입니다.
예:
CALL samooha_by_snowflake_local_db.consumer.is_dp_enabled($cleanroom_name);
view_remaining_privacy_budget¶
- 스키마:
CONSUMER
설명: 클린룸에서 쿼리하는 데 사용할 수 있는 남은 개인정보 보호 예산을 봅니다. 예산이 소진된 후 예산이 재설정될 때까지 ``run_analysis``에 대한 추가 호출은 허용되지 않습니다. 예산은 매일 재설정됩니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 클린룸의 이름입니다. 이 프로시저가 성공하려면 클린룸을 설치해야 합니다.
반환: (부동 소수점) 남은 개인정보 보호 예산입니다.
예:
CALL samooha_by_snowflake_local_db.consumer.view_remaining_privacy_budget($cleanroom_name);
set_privacy_settings¶
- 스키마:
CONSUMER
설명: 사용자 지정 템플릿을 사용하는 공급자 실행 분석(활성화 포함)에 대한 개인정보 보호 설정을 지정합니다. 이 프로시저는 이전에 설정된 모든 값을 덮어씁니다. 이 메서드를 호출할 때마다 이전의 모든 구성 설정이 지워집니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 이러한 설정을 적용해야 하는 클린룸의 이름입니다.
privacy_settings- (문자열) 공급자가 사용자 지정 템플릿을 실행할 때 개인정보 설정을 지정하는 문자열 JSON 오브젝트입니다. 오브젝트의 구문은 다음과 같습니다.'{ "null" : <template_config> }'
- :samp:`{template_config}`는 차등 개인정보 보호 및 집계 설정이 있는 오브젝트입니다. 이 오브젝트에서 제공할 수 있는 필드를 보려면
사용 가능한 개인정보 보호 설정 섹션을 참조하세요.
예:
-- Apply differential privacy for provider-run analysis using all custom templates.
CALL samooha_by_snowflake_local_db.consumer.set_privacy_settings(
$cleanroom_name,
PARSE_JSON('{
"null":{ "differential": 1, "epsilon": 0.1, "privacy_budget": 3 }
}')
);
반환: (문자열) 성공 메시지.
Snowpark Container Services 프로시저¶
Read more about using Snowpark Container Services in your clean rooms.
start_or_update_service¶
- 스키마:
CONSUMER
설명: 이 클린룸에서 공급자가 정의한 최신 버전의 Snowpark Container Services를 만들고 시작합니다. 공급자가 컨테이너를 생성하거나 업데이트하기 위해 ``provider.load_service_into_cleanroom``을 호출할 때마다 컨슈머는 ``consumer.start_or_update_service``를 호출하여 서비스를 업데이트해야 합니다.
컨슈머는 이 프로시저를 호출하기 전에 풀을 정의하고 시작해야 합니다.
인자:
:ref:`cleanroom_name <label-dcr_about_clean_room_names>`*(문자열)* - 컨테이너를 로드할 클린룸의 이름입니다.
compute_pool_name- (문자열) 이 클린룸에서 컨슈머가 정의한 컴퓨팅 풀의 이름입니다. 풀이 이미 생성되어 있어야 하며 클린룸에 풀에 액세스할 수 있는 권한이 있어야 합니다.service_options- (오브젝트, 선택 사항) 이 서비스에 대한 매개 변수를 지정하는 오브젝트입니다. 지원되는 속성은 다음과 같습니다.query_warehouse- (문자열, 선택 사항) 이 서비스에 사용할 웨어하우스 의 이름입니다. 클린룸을 실행하는 웨어하우스와 동일한 웨어하우스일 필요는 없습니다.min_instances- (정수, 선택 사항) 이 서비스에 사용할 최소 인스턴스 수입니다.max_instances- (정수, 선택 사항) 이 서비스에 사용할 최소 인스턴스 수입니다.
반환: (테이블) 성공한 경우 로딩의 결과. 성공하지 못할 경우 오류를 발생시킵니다.
예:
CALL samooha_by_snowflake_local_db.consumer.start_or_update_service(
$cleanroom_name,
'dcr_lal_pool',
object_construct(
'query_warehouse', 'app_wh',
'min_instances', '1',
'max_instances', '1'
));
환경 관리¶
일반적인 클린룸 기능을 지원하려면 다음 방법을 사용하십시오.
set_cleanroom_ui_accessibility¶
- 스키마:
CONSUMER
설명: 현재 계정의 컨슈머를 위한 클린룸 UI에서 클린룸을 표시하거나 숨깁니다.
인자:
:ref:`cleanroom_name<label-dcr_about_clean_room_names>`*(문자열) - 클린룸의 이름입니다.
visibility_status- (문자열) 대소문자를 구분하는 다음 값 중 하나입니다.HIDDEN - 현재 컨슈머 계정의 모든 사용자로부터 클린룸 UI에 지정된 클린룸을 숨깁니다. API 호출을 사용하여 클린룸에 계속 액세스할 수 있습니다.
EDITABLE - 클린룸 UI에서 클린룸을 표시합니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.consumer.set_cleanroom_ui_accessibility(
$cleanroom_name,
'HIDDEN');
manage_datastats_task_on_account¶
- 스키마:
CONSUMER
설명: 클린룸 통계를 계산하는 백그라운드 작업을 활성화하거나 비활성화합니다. 작업은 기본적으로 실행 중이지만 비용을 절감하기 위해 비활성화할 수 있습니다.
중요
이 작업을 관리하려면 모든 공동 작업자가 동일한 값`을 사용하여 이 프로시저의 적절한 ``provider` 또는 consumer 버전을 호출해야 합니다.
인자:
enable- (부울) TRUE이면 작업을 활성화하고, FALSE이면 작업을 비활성화합니다.
반환: (문자열) 성공 메시지.
예:
-- Disable the task in this account.
CALL samooha_by_snowflake_local_db.consumer.manage_datastats_task_on_account(FALSE);
enable_local_db_auto_upgrades¶
- 스키마:
LIBRARY
설명: 새로운 프로시저나 기능이 릴리스될 때 Snowflake Data Clean Rooms 환경을 자동으로 업그레이드하는 작업을 활성화합니다(작업은 ``samooha_by_snowflake_local_db.admin.expected_version_task``임). 각 새 릴리스와 함께 ``library.apply_patch``를 호출하는 대신 이 프로시저를 호출하여 업그레이드를 자동화합니다.
이 작업을 비활성화하여 비용을 절감할 수 있지만, 시스템에 최신 버전의 클린룸 환경을 유지하려면 실행 중인 상태로 두는 것이 좋습니다.
인자: 없음
반환: (string) 성공 또는 실패 메시지.
예:
CALL samooha_by_snowflake_local_db.library.enable_local_db_auto_upgrades();
disable_local_db_auto_upgrades¶
- 스키마:
LIBRARY
설명: 새 버전이 릴리스될 때 Snowflake Data Clean Rooms 환경을 자동으로 업그레이드하는 작업을 비활성화합니다. 자동 업그레이드를 비활성화하는 경우 각 :ref:`새 릴리스<label-new_features_features>`와 함께 ``library.apply_patch``를 호출해야 합니다.
인자: 없음
반환: (string) 성공 또는 실패 메시지.
예:
CALL samooha_by_snowflake_local_db.library.disable_local_db_auto_upgrades();
apply_patch¶
- 스키마:
LIBRARY
설명: 클린룸 환경을 업데이트하여 환경의 새로운 기능과 수정 사항을 활성화합니다. 클린룸 환경의 새 버전이 릴리스되면 이를 호출합니다. (이는 일반적으로 매주 발생합니다. 최신 기능 업데이트 섹션의 클린룸 항목을 참조하세요.) 이 프로시저는 :doc:`SAMOOHA_BY_SNOWFLAKE_LOCAL_DB</user-guide/cleanrooms/installation-details>`를 업데이트합니다.
``library.enable_local_db_auto_upgrades``를 호출하여 패치 업데이트를 자동화할 수 있습니다. 자동 업데이트를 활성화하는 것이 좋습니다.
인자: 없음
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.library.apply_patch();
patch_cleanroom¶
- 스키마:
CONSUMER
설명: 지정된 클린룸을 최신 버전으로 업데이트하여 해당 클린룸의 새로운 기능과 수정 사항을 활성화합니다. 일반적으로 Snowflake 지원에서 호출하도록 지시한 경우에만 호출합니다.
공급자는 컨슈머가 ``library.patch_cleanroom``을 호출하기 전에 ``library.patch_cleanroom``을 호출해야 합니다. 그렇지 않으면 적용할 패치가 없습니다.
인자:
:ref:`cleanroom_name<label-dcr_about_clean_room_names>`*(문자열)* - 패치할 클린룸의 이름입니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.consumer.patch_cleanroom($cleanroom_name);
dcr_health.dcr_tasks_health_check¶
설명: 실행 중이거나 최근에 중지된 클린룸 작업에 대한 정보를 표시합니다.
인자: 없음
반환: (테이블) 일정, 웨어하우스 이름, 웨어하우스 크기 등 클린룸 작업에 대한 정보입니다.
예:
CALL samooha_by_snowflake_local_db.dcr_health.dcr_tasks_health_check();