Snowflake Data Clean Rooms: 컨슈머 API 참조 가이드¶
이 페이지에서는 Clean Rooms API 컨슈머가 Clean Rooms를 관리하기 위해 사용하는 프로시저에 대해 설명합니다. 코딩 설정 지침은 코딩 설정 섹션을 참조하십시오.
역할 액세스 관리하기¶
consumer.grant_run_on_cleanrooms_to_role¶
설명: 지정된 역할에 지정된 Clean Rooms에서 프로시저의 하위 세트를 실행할 수 있는 권한을 부여합니다. Clean Rooms는 이 계정으로 생성 하는 것이 아니라 이 계정에 설치 해야 합니다. (즉, 귀하가 컨슈머인 Clean Rooms만 해당됩니다.)
Clean Rooms에 제한적인 사용 권한을 부여하려면 SAMOOHA_APP_ROLE 대신 사용자에게 지정된 역할을 부여하십시오. 역할 액세스에 대해 자세히 알아보십시오.
여기에 지정된 역할을 사용하여 다음 프로시저를 실행할 수 있습니다.
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
인자:
cleanroom_names(문자열 배열) - 지정된 역할에 대한 제한된 액세스 권한을 부여할 모든 Clean Rooms의 이름입니다.
run_role_name(문자열) - 지정된 Clean Rooms에 대한 권한이 제한된 역할의 이름입니다. 이 프로시저를 호출하기 전에 역할을 만들어야 합니다.
반환: (string) - 성공 또는 실패 메시지.
예:
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'
);
consumer.revoke_run_on_cleanrooms_from_role¶
설명: 지정된 Clean Rooms에서 지정된 역할의 권한을 취소합니다. 사용자가 취소되지 않은 역할에 대한 액세스 권한이 있거나 SAMOOHA_APP_ROLE 을 가지고 있는 경우 지정된 Clean Rooms에서 여전히 Clean Rooms 프로시저를 실행할 수 있습니다.
인자:
cleanroom_names(문자열 배열) - 이 계정에 있는 하나 이상의 Clean Rooms 이름입니다.
run_role_name(문자열) - 이 계정에서 지정된 Clean Rooms에 대한 권한이 더 이상 제한되지 않아야 하는 역할의 이름입니다.
반환: (string) - 성공 또는 실패 메시지.
예:
CALL samooha_by_snowflake_local_db.consumer.revoke_run_on_cleanrooms_from_role(
['overlap_cleanroom', 'market_share_cleanroom'],
'TEMP_USERS_ROLE'
);
클린룸 설치¶
다음 명령을 통해 공급자가 공유한 클린룸을 설치합니다.
consumer.install_cleanroom¶
설명: 지정한 공급자가 만든 Clean Room을 설치(참여)합니다. 이 프로시저를 여러 번 호출하면 매번 기존 Clean Room이 지워지며, 두 번째 설치가 완료되기 전에 중단하면 Clean Room이 손상되므로 Clean Room을 사용 가능하게 하려면 이 프로시저를 완료해야 합니다.
인자:
cleanroom_name(문자열) - 설치할 Clean Room의 이름입니다.
provider_account_locator(문자열) - 이 Clean Room을 생성한 공급자의 계정 로케이터입니다.
반환: (문자열) 성공 메시지.
예:
call samooha_by_snowflake_local_db.consumer.install_cleanroom($cleanroom_name, $provider_locator);
consumer.is_enabled¶
설명: 클린룸이 설치되면 공급자 측에서 설정을 완료하고 활성화하는 데 약 1분이 걸립니다. 이 함수를 사용하면 사용자가 클린룸의 상태를 확인하고, 활성화되어 있는지 여부를 확인할 수 있습니다. 일반적으로 클린룸을 설치한 후 약 1분 후에 플래그가 True로 전환됩니다.
인자: cleanroom_name (string)
반환: 활성화됨 (boolean)
예:
call samooha_by_snowflake_local_db.consumer.is_enabled($cleanroom_name);
consumer.uninstall_cleanroom¶
설명: 컨슈머 계정에서 Clean Room을 제거합니다. 이렇게 하면 공유 Clean Room 데이터베이스를 포함하여 Clean Room과 관련된 모든 데이터베이스가 제거됩니다. Clean Room은 언제든지 consumer.install_cleanroom 을 사용하여 다시 설치할 수 있습니다.
인자: cleanroom_name (string)
반환: 성공 메시지 (string)
예:
call samooha_by_snowflake_local_db.consumer.uninstall_cleanroom($cleanroom_name);
클라우드 간 협업¶
다른 클라우드 리전에 생성된 Clean Room을 설치합니다. 자세히 알아보십시오.
library.enable_laf_on_account¶
설명: 현재 계정에서 클라우드 간 자동 복제를 사용하도록 설정합니다. ACCOUNTADMIN 역할이 필요합니다.
인자: 없음
반환: (문자열) 성공 메시지.
예:
USE ROLE ACCOUNTADMIN;
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.library.enable_laf_on_account();
consumer.is_laf_enabled_for_cleanroom¶
설명: 이 Clean Room에 대해 클라우드 간 자동 복제가 활성화되었는지 여부를 설명합니다. 클라우드 간 자동 복제는 계정 관리자가 구성해야 합니다.
인자:
cleanroom_name (string) - 클린룸의 이름입니다.
반환: 이 Clean Room에 대해 클라우드 간 자동 복제가 활성화되었는지 여부.
예:
CALL samooha_by_snowflake_local_db.consumer.is_laf_enabled_for_cleanroom($cleanroom_name);
consumer.request_laf_cleanroom¶
설명: 다른 클라우드 리전에 생성된 Clean Room을 설치하기 위한 전제 조건을 설정합니다. 이 프로시저를 호출하기 전에 consumer.install_cleanroom
을 호출하면 실패합니다. 이 프로시저는 호출할 때마다 현재 상태를 반환합니다. 반환 상태가 FULFILLED 가 될 때까지 주기적으로 호출을 계속한 다음 consumer.install_cleanroom
을 호출합니다. 상태가 FULFILLED 에 도달할 때까지 최대 10분이 소요될 수 있습니다.
인자:
cleanroom_name(문자열) - 설치할 리전 간 Clean Room의 이름입니다.
provider_locator(문자열) - 이 Clean Room을 만든 공급자의 계정 로케이터입니다.
반환: (문자열) 요청의 상태 메시지. 상태가 FULFILLED 가 될 때까지 계속 호출합니다.
예:
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.consumer.request_laf_cleanroom(
$cleanroom_name,$provider_locator);
공급자 실행 분석¶
library.is_provider_run_enabled¶
설명: 이 Clean Room에서 공급자 실행 분석을 허용하는지 확인합니다. 참고: 공급자가 이 Clean Room에서 분석을 실행하려면 먼저 consumer.enable_templates_for_provider_run
을 호출하여 명시적인 승인을 받아야 합니다.
인자: cleanroom_name (string)
반환: 활성화된 메시지 (string)
예:
call samooha_by_snowflake_local_db.library.is_provider_run_enabled($cleanroom_name)
consumer.enable_templates_for_provider_run¶
설명: 공급자에게 요청된 Clean Room에서 분석을 실행할 수 있는 권한을 부여합니다. 이는 공급자가 provider.enable_provider_run_analysis
를 호출하여 Clean Room에서 공급자 실행 분석을 활성화한 후에 호출됩니다. consumer.enable_templates_for_rovider_run
은 공급자에게 지정된 Clean Room에서 지정된 템플릿으로 원하는 횟수만큼 분석을 실행할 수 있는 권한을 부여합니다.
인자:
cleanroom_name(문자열) - 공급자가 분석을 실행할 수 있는 Clean Room의 이름입니다.
template_names(문자열 배열) - 공급자가 실행할 수 있는 Clean Room에 있는 하나 이상의 템플릿 이름 배열입니다.
enable_differential_privacy(부울) - TRUE 인 경우
template_names
에 나열된 모든 템플릿에 대해 차등 개인정보 보호를 활성화합니다. 클린룸 자체에 차등 개인정보 보호가 활성화된 경우에만 이러한 템플릿에 대해 차등 개인정보 보호를 활성화할 수 있습니다. 클린룸의 차등 개인정보 보호 상태는consumer.is_dp_enabled
에서 확인할 수 있습니다.consumer.set_privacy_settings
을 호출하여 개인정보 설정을 사용자 지정할 수 있습니다. 자세히 알아보십시오.template_configuration(오브젝트, 선택 사항) - 각 템플릿에 대한 추가 설정을 지정하는 선택적 오브젝트입니다. 이 오브젝트는 키-값 페어를 포함하며, 여기서 키는 템플릿 이름(
template_names
)이고 값은 다음 속성을 가진 오브젝트입니다.warehouse_type
(문자열) - 공급자가 이 템플릿과 함께 사용할 수 있는 허용된 웨어하우스 유형입니다. 허용되는 값은 WAREHOUSE_TYPE 에 정의된 값입니다.warehouse_size
(문자열 배열) - 이 웨어하우스 유형 및 템플릿과 함께 사용할 수 있는 하나 이상의 허용된 웨어하우스 크기입니다. 허용되는 값은 WAREHOUSE_SIZE 에 정의된 값입니다.
반환: (string) 성공 또는 실패 메시지.
예제:
-- Simple example
CALL samooha_by_snowflake_local_db.consumer.enable_templates_for_provider_run($cleanroom_name, ['prod_overlap_analysis'], FALSE);
-- Specify warehouse types that the provider can request for each template.
call samooha_by_snowflake_local_db.CONSUMER.enable_templates_for_provider_run(
$cleanroom_name,
[$template1, $template2],
TRUE,
{
$template1: {'warehouse_type': 'STANDARD', 'warehouse_size': ['MEDIUM', 'LARGE']},
$template2: {'warehouse_type': 'SNOWPARK-OPTIMIZED', 'warehouse_size': ['MEDIUM', 'XLARGE']},
$template3: {'warehouse_type': 'STANDARD', 'warehouse_size': ['MEDIUM', 'XLARGE']}
});
다중 공급자 분석¶
이러한 프로시저를 통해 다중 공급자 분석 을 활성화합니다.
consumer.prepare_multiprovider_flow¶
설명: 지정된 Clean Rooms의 공급자에게 다중 공급자 쿼리를 실행하라는 요청을 보냅니다. 이 프로시저는 실제로 요청을 실행하는 것이 아니라 consumer.execute_multiprovider_flow
를 호출하여 공급자에게 향후 이 요청을 실행할 권한을 요청할 뿐입니다.
공급자가 승인하면 컨슈머는 consumer.execute_multiprovider_flow
를 호출하여 원하는 만큼 쿼리를 실행할 수 있습니다(구성된 차등 개인정보 보호 설정에 따라 다름). prepare_multiprovider_flow
를 새 값으로 호출한 후 이전에 승인된 쿼리를 다시 실행하려는 경우, 여전히 정확한 이전 쿼리로 prepare_multiprovider_flow
를 호출해야 하지만 consumer.execute_multiprovider_flow
를 실행하기 전에 공급자의 승인을 기다릴 필요는 없습니다.
요청은 4시간 동안 유효하며, 그 이후에는 요청이 큐에서 제거됩니다.
인자:
cleanroom_names(문자열 배열) - 컨슈머 계정의 Clean Room 이름으로 구성된 배열입니다. 이러한 Clean Rooms는 반드시 설치해야 합니다.
template_name(문자열) -
cleanroom_names
에 나열된 각 Clean Rooms에서 실행할 템플릿의 이름입니다. 이는 Clean Room 공급자가 추가한 Snowflake 제공 템플릿이거나 이전에consumer.create_template_request
를 호출하여 Clean Room에 제출한 사용자 지정 템플릿일 수 있습니다. 두 경우 모두 Clean Room 공급자에게 요청을 제출하려면 템플릿이 Clean Room에 이미 있어야 합니다.인자(오브젝트) - 템플릿을 채우는 데 사용되는 다음 필드가 있는 오브젝트입니다.
source_table
(문자열 배열) - 템플릿에서 사용 가능한source_table
배열을 채우는 데 사용되는 테이블 이름의 배열입니다. 각 테이블 이름의 구문은cleanroom_name.db.schema.table
입니다. 각 공급자는 요청에 나열된 자신의 Clean Room 테이블만 볼 수 있습니다.my_table
(문자열 배열) - 템플릿에서 사용 가능한my_table
배열을 채우는 데 사용되는 자체 데이터의 테이블 이름 배열입니다.consumer.run_analysis
의consumer_tables
인자에 전달된 구문과 동일한 구문을 사용합니다.기타 템플릿 변수 - 템플릿에 필요한 모든 값을 키-값 페어로 전달합니다.
반환: (문자열) consumer.execute_multiprovider_flow
에 전달하기 위한 요청 ID.
예:
CALL samooha_by_snowflake_local_db.consumer.prepare_multiprovider_flow(
[$cleanroom_name_1, $cleanroom_name_2],
'prod_aggregate_data',
object_construct(
'source_table', [
CONCAT($cleanroom_name_1, '.SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'),
CONCAT($cleanroom_name_2, '.SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS')
],
'my_table', ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']),
'hem_col', ['p1.HASHED_EMAIL', 'p2.HASHED_EMAIL'],
'dimensions', ['p1.STATUS', 'p2.STATUS'],
'consumer_join_col', 'HASHED_EMAIL'
)
);
consumer.execute_multiprovider_flow¶
설명: 컨슈머가 consumer.prepare_multiprovider_flow
에 제출한 가장 최근 쿼리를 실행합니다. 프로시저는 공급자가 쿼리를 승인한 각 지정된 Clean Room에서 쿼리를 실행하고 모든 쿼리 결과의 합집합을 반환합니다. 이 프로시저를 실행해야만 공급자가 쿼리를 승인했는지 여부를 알 수 있습니다.
인자:
cleanroom_names(문자열 배열) - 준비된 쿼리를 실행할 Clean Room 이름의 배열입니다. 이 배열은 쿼리 요청의 전체 Clean Rooms 목록과 일치해야 합니다.
request_id(문자열, 선택 사항) -
prepare_multiprovider_flow
에서 반환한 ID 를 요청합니다.
반환: (테이블) 승인된 모든 Clean Rooms의 결과 합집합. 공급자가 이 컨슈머의 쿼리를 승인한 적이 없는 경우 쿼리는 실패합니다. 그러나 공급자가 이 컨슈머로부터 가장 최근 쿼리가 아닌 다른 쿼리를 승인한 경우 프로시저는 빈 결과 세트를 반환합니다.
예:
CALL samooha_by_snowflake_local_db.consumer.execute_multiprovider_flow([$cleanroom1, $cleanroom2], $request_id);
데이터 등록 및 등록 취소¶
다음 명령을 사용하여 데이터베이스, 스키마, 오브젝트를 등록하고 등록을 취소합니다. 테이블과 뷰는 클린룸에 연결하기 전에 등록되어야 합니다. 데이터베이스나 스키마를 등록하면 해당 데이터베이스나 스키마에 있는 모든 오브젝트가 등록됩니다.
consumer.register_db¶
설명: 클린룸에 데이터베이스를 추가하면 데이터베이스의 모든 데이터 세트를 연결할 수 있습니다. 이것이 호출되지 않으면 samooha_app_role에 개별적으로 권한을 부여해야 합니다.
인자: db_name (string)
반환: 성공 메시지 (string)
예:
USE ROLE <ROLE_WITH_MANAGE GRANTS>;
call samooha_by_snowflake_local_db.consumer.register_db('SAMOOHA_SAMPLE_DATABASE');
library.register_schema¶
설명: register_db
와 유사하지만, 스키마 수준에서 작동합니다. 정규화된 스키마 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여를 선택하면 사용자가 스키마의 오브젝트를 클린룸에 연결할 수 있습니다.
관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)를 등록하려면 library.register_managed_access_schema
를 대신 사용합니다.
인자: schema_name (array)
반환: 성공 메시지 (string)
예:
USE ROLE <ROLE_WITH_MANAGE GRANTS>;
call samooha_by_snowflake_local_db.library.register_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
library.register_managed_access_schema¶
설명: register_schema
와 유사하지만, WITH MANAGED ACCESS 매개 변수를 사용하여 생성한 스키마를 등록합니다. 정규화된 스키마 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여를 선택하면 사용자가 스키마의 오브젝트를 클린룸에 연결할 수 있습니다.
인자: schema_name (array)
반환: 성공 메시지 (string)
예:
USE ROLE <ROLE_WITH_MANAGE GRANTS>;
call samooha_by_snowflake_local_db.library.register_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
library.register_objects¶
설명: 클린룸에 모든 유형의 테이블 및 뷰에 대한 액세스 권한을 부여하여 consumer.link_datasets
를 호출하여 클린룸에 연결할 수 있도록 합니다. library.register_schema
, library.register_managed_access_schema
또는 consumer.register_db
를 호출하여 더 광범위한 오브젝트 그룹을 등록할 수 있습니다.
인자:
object_names (array) - 정규화된 오브젝트 이름의 배열입니다. 그런 다음 이러한 오브젝트를 클린룸에 연결할 수 있습니다.
반환: 성공 메시지 (string)
예
테이블과 뷰를 등록하려면 다음을 수행합니다.
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']);
library.enable_external_tables_on_account¶
설명: 이 계정의 모든 Clean Rooms에서 Iceberg 또는 외부 테이블을 사용하도록 설정합니다. Iceberg 또는 외부 테이블을 어느 한 계정으로 연결할 수 있도록 하려면 공급자 및 컨슈머 계정에서 모두 ACCOUNTADMIN 으로 호출해야 합니다. 이 기능을 이 계정의 특정 Clean Rooms로 제한하려면 enable_external_tables_for_cleanroom
을 대신 호출하십시오.
인자: 없음
반환: (string) 성공 또는 실패 메시지.
예:
USE ROLE ACCOUNTADMIN;
CALL samooha_by_snowflake_local_db.library.enable_external_tables_on_account();
consumer.enable_external_tables_for_cleanroom¶
설명: 컨슈머가 이 계정의 지정된 Clean Room에서 Iceberg 또는 외부 테이블을 연결할 수 있도록 설정합니다. 이 계정의 모든 Clean Rooms에 대해 Iceberg 및 외부 테이블을 허용하려면 enable_external_tables_on_account
를 대신 호출하십시오.
인자:
cleanroom_name(문자열) - 공급자가 Iceberg 또는 외부 테이블을 연결할 수 있는 Clean Room의 이름입니다.
반환: (string) 성공 또는 실패 메시지. 성공하면 보안 검사를 트리거하고 보안 검사에 성공할 경우 생성될 패치 번호도 제공합니다.
예:
CALL samooha_by_snowflake_local_db.provider.enable_external_tables_for_cleanroom(
$cleanroom_name);
library.register_table_or_view – 사용 중단됨¶
주의
이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.register_objects를 사용하십시오.
설명: 모든 유형의 테이블과 뷰를 등록합니다.
인자: object_names (array), is_view (boolean), is_iceberg (boolean), is_external (boolean), is_under_managed_access_schema (boolean)
출력: success message (string)
예
테이블을 등록하려면:
call samooha_by_snowflake_local_db.library.register_table_or_view(
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
false,
false,
false,
false);
Iceberg 테이블을 등록하려면:
call samooha_by_snowflake_local_db.library.register_table_or_view(
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
false,
true,
false,
false);
library.register_table – 사용 중단됨¶
주의
이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.register_objects를 사용하십시오.
설명: register_db
와 유사하지만 테이블 수준에서 작동합니다. 정규화된 테이블 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여가 이루어지면 사용자가 테이블을 클린룸에 연결할 수 있습니다.
관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)에 테이블을 등록하려면 대신 library.register_managed_access_table
을 사용합니다.
인자: table_name (array)
반환: 성공 메시지 (string)
예:
call samooha_by_snowflake_local_db.library.register_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.register_managed_access_table – 사용 중단됨¶
주의
이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.register_objects를 사용하십시오.
설명: register_table
과 유사하지만, WITH MANAGED ACCESS 매개 변수로 생성된 스키마에 테이블을 등록합니다. 정규화된 테이블 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여가 이루어지면 사용자가 테이블을 클린룸에 연결할 수 있습니다.
인자: table_name (array)
반환: 성공 메시지 (string)
예:
call samooha_by_snowflake_local_db.library.register_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.register_view – 사용 중단됨¶
주의
이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.register_objects를 사용하십시오.
설명: register_db
와 유사하지만, 뷰 수준에서 작동합니다. 정규화된 뷰 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여를 선택하면 사용자가 뷰를 클린룸에 연결할 수 있습니다.
관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 만든 스키마)에 보기를 등록하려면 대신 library.register_managed_access_view
를 사용합니다.
인자: view_name (array)
반환: 성공 메시지 (string)
예:
call samooha_by_snowflake_local_db.library.register_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.register_managed_access_view – 사용 중단됨¶
주의
이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.register_objects를 사용하십시오.
설명: register_view
와 유사하지만, WITH MANAGED ACCESS 매개 변수로 생성된 스키마에 뷰를 등록합니다. 정규화된 뷰 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여를 선택하면 사용자가 뷰를 클린룸에 연결할 수 있습니다.
인자: view_name (array)
반환: 성공 메시지 (string)
예:
call samooha_by_snowflake_local_db.library.register_managed_access_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.unregister_db¶
설명: register_db
프로시저를 되돌리고 SAMOOHA_APP_ROLE 역할 및 Snowflake Data Clean Room 기본 애플리케이션에 부여된 데이터베이스 수준 부여를 제거합니다. 이렇게 하면 UI 드롭다운 요소에서 모든 데이터베이스도 제거됩니다.
인자: db_name (string)
반환: 성공 메시지 (string)
예:
USE ROLE <ROLE_WITH_MANAGE GRANTS>;
call samooha_by_snowflake_local_db.library.unregister_db('SAMOOHA_SAMPLE_DATABASE');
library.unregister_schema¶
설명: 스키마의 등록을 취소하여 사용자가 해당 테이블과 뷰를 클린룸에 연결하는 것을 방지합니다.
관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)를 등록 해지하려면 library.unregister_managed_access_schema
를 대신 사용합니다.
인자: schema_name (array)
반환: 성공 메시지 (string)
예:
USE ROLE <ROLE_WITH_MANAGE GRANTS>;
call samooha_by_snowflake_local_db.library.unregister_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
library.unregister_managed_access_schema¶
설명: unregister_schema
와 유사하지만, WITH MANAGED ACCESS 매개 변수를 사용하여 생성한 스키마를 등록 취소합니다.
인자: schema_name (array)
반환: 성공 메시지 (string)
예:
call samooha_by_snowflake_local_db.library.unregister_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
library.unregister_objects¶
설명: 모든 유형의 테이블 및 뷰에 대한 클린룸 액세스를 취소합니다. 이 계정으로 관리되는 모든 클린룸의 사용자는 더 이상 오브젝트를 사용할 수 없게 됩니다.
인자:
object_names (array) - 액세스를 취소해야 하는 정규화된 오브젝트 이름의 배열입니다.
반환: 성공 메시지 (string)
예
테이블 및 뷰 등록을 취소하려면 다음을 수행합니다.
USE ROLE <ROLE_WITH_MANAGE GRANTS>;
call samooha_by_snowflake_local_db.library.unregister_objects(
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS','SAMOOHA_SAMPLE_DATABASE.INFORMATION_SCHEMA.FIELDS']);
library.unregister_table_or_view – 사용 중단됨¶
주의
이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.unregister_objects를 사용하십시오.
설명: 모든 유형의 테이블과 뷰를 등록 취소합니다.
인자: object_names (array), is_view (boolean), is_iceberg (boolean), is_external (boolean), is_under_managed_access_schema (boolean)
출력: success message (string)
예
테이블 등록을 취소하려면:
call samooha_by_snowflake_local_db.library.unregister_table_or_view(
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
false,
false,
false,
false);
library.unregister_table – 사용 중단됨¶
주의
이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.unregister_objects를 사용하십시오
설명: unregister_db
와 유사하지만, 테이블 수준에서 작동합니다. 완전히 정규화된 테이블 이름을 나타내는 배열이나 문자열을 전달하여 테이블의 등록을 취소할 수 있습니다. 사용자는 등록되지 않은 테이블을 클린룸에 연결할 수 없습니다.
관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)에 테이블을 등록 취소하려면 대신 library.unregister_managed_access_table
을 사용합니다.
인자: table_name (array)
반환: 성공 메시지 (string)
예:
call samooha_by_snowflake_local_db.library.unregister_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.unregister_managed_access_table – 사용 중단됨¶
주의
이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.unregister_objects를 사용하십시오
설명: unregister_table
과 유사하지만, 관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)의 테이블 등록을 취소합니다.
인자: table_name (array)
반환: 성공 메시지 (string)
예:
call samooha_by_snowflake_local_db.library.unregister_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.unregister_view – 사용 중단됨¶
주의
이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.unregister_objects를 사용하십시오
설명: unregister_db
와 유사하지만, 뷰 수준에서 작동합니다. 완전히 정규화된 뷰 이름을 나타내는 배열이나 문자열을 전달하여 뷰의 등록을 취소할 수 있습니다. 사용자는 등록되지 않은 뷰를 클린룸에 연결할 수 없습니다.
관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 만든 스키마)에 보기를 등록 취소하려면 대신 library.unregister_managed_access_view
를 사용합니다.
인자: view_name (array)
반환: 성공 메시지 (string)
예:
call samooha_by_snowflake_local_db.library.unregister_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.unregister_managed_access_view – 사용 중단됨¶
주의
이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.unregister_objects를 사용하십시오
설명: unregister_view
와 유사하지만, 관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)의 뷰 등록을 취소합니다.
인자: view_name (array)
반환: 성공 메시지 (string)
예:
call samooha_by_snowflake_local_db.library.unregister_managed_access_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
데이터 세트 연결 및 연결 해제¶
데이터 세트가 등록되면 해당 데이터 세트의 테이블이나 뷰를 특정 클린룸에 연결할 수 있습니다. 특정 클린룸에서 테이블이나 뷰의 연결을 해제하여 클린룸에서 해당 데이터에 대한 액세스를 제거할 수도 있습니다.
consumer.link_datasets¶
설명: 테이블 또는 뷰를 클린룸에 링크하여 지정한 조인 및 열 정책에 따라 해당 클린룸 내의 템플릿에 테이블에 대한 액세스 권한을 부여합니다.
인자:
cleanroom_name (string) - 접근 권한을 부여할 클린룸 이름
tables_list (array of strings) - 클린룸에 노출할 정규화된 테이블 또는 뷰 이름의 목록입니다. 이러한 오브젝트는 먼저 적절한 등록 메서드를 통해 등록(클린룸 환경에서 사용할 수 있도록 설정)해야 합니다.
반환: 성공 메시지 (string)
예:
call samooha_by_snowflake_local_db.consumer.link_datasets($cleanroom_name, ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS', 'MY_DB.MY_SCH.EXPOSURES']);
consumer.unlink_datasets¶
설명: 모든 사용자의 지정된 클린룸의 지정된 테이블 또는 뷰에 대한 액세스를 제거합니다. 이는 컨슈머가 제공한 데이터에 대해서만 작동합니다.
인자:
cleanroom_name (string) - 접근 권한을 제거해야 하는 클린룸의 이름입니다.
tables_list (array of strings) - 액세스를 차단해야 하는 정규화된 테이블 또는 뷰 이름의 목록입니다.
반환: 성공 메시지 (string)
예:
call samooha_by_snowflake_local_db.consumer.unlink_datasets($cleanroom_name,
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS', 'MYDB.MYSCH.EXPOSURES']);
consumer.view_consumer_datasets¶
설명: 이 계정의 모든 컨슈머가 지정된 클린룸에 링크한 모든 테이블과 뷰를 볼 수 있습니다.
인자:
cleanroom_name (string) - 클린룸의 이름입니다.
반환: 지정된 클린룸에 연결된 오브젝트 테이블과 각 오브젝트에 대한 클린룸의 내부 뷰 이름입니다.
예:
call samooha_by_snowflake_local_db.consumer.view_consumer_datasets($cleanroom_name);
정책 관리하기¶
consumer.set_join_policy¶
설명: Provider Run Analysis를 사용하여 클린룸 내에서 템플릿을 실행할 때 공급자가 조인을 수행할 수 있는 열을 지정합니다. 열 정책은 바꾸기 전용 이므로 함수가 다시 호출되면 이전에 설정된 열 정책이 현재 정책으로 완전히 바뀝니다.
이 검사는 승인되지 않은 열이 있는지 데이터에 대해 실행할 SQL 쿼리를 구문 분석하는 방식으로 수행됩니다. 와일드카드가 포함된 쿼리는 이러한 검사를 통해 포착되지 않을 수 있으며, 분석 템플릿을 설계할 때는 여전히 신중해야 합니다.
인자: cleanroom_name (string), table_and_col_names (array)
반환: 성공 메시지 (string)
예:
call samooha_by_snowflake_local_db.consumer.set_join_policy($cleanroom_name,
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL', 'MYDB.MYSCH.EXPOSURES:HASHED_EMAIL']);
consumer.set_column_policy¶
설명: 공급자가 작업을 수행할 수 있는 데이터의 열을 설정합니다. 이 작업은 템플릿을 추가한 후에만 호출해야 합니다. 이 함수도 템플릿의 함수이므로 입력은 template_name:full_table_name:column_name 형식이어야 합니다. 열 정책은 바꾸기 전용 이므로 함수가 재호출되면 이전에 설정된 열 정책이 현재 정책으로 완전히 바뀝니다.
이메일과 같은 ID 열에서는 열 정책을 호출해서는 안 됩니다. 이는 집계 및 그룹화 열에만 사용해야 합니다.
이 검사는 승인되지 않은 열이 있는지 데이터에 대해 실행할 SQL 쿼리를 구문 분석하는 방식으로 수행됩니다. 와일드카드가 포함된 쿼리는 이러한 검사를 통해 포착되지 않을 수 있으며, 분석 템플릿을 설계할 때는 여전히 신중해야 합니다.
확인은 차원 또는 measure_columns 라는 SQL Jinja 인자에 대해 수행됩니다. 이 검사를 활성화하려면 이러한 태그를 사용해야 합니다.
인자: cleanroom_name (string), analysis_and_table_and_columns (array)
반환: 성공 메시지 (string)
예:
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']);
consumer.view_column_policy¶
설명: 컨슈머가 클린룸에 적용한 모든 열 정책을 봅니다.
인자: cleanroom_name (string)
반환: 열 정책 (table)
예:
call samooha_by_snowflake_local_db.consumer.view_column_policy($cleanroom_name);
consumer.view_provider_column_policy¶
설명: 공급자가 클린룸에 적용한 모든 열 정책을 봅니다.
인자: cleanroom_name (string)
반환: 열 정책 (table)
예:
call samooha_by_snowflake_local_db.consumer.view_provider_column_policy($cleanroom_name);
템플릿¶
다음 명령을 사용하면 클린룸에서 사용 가능한 템플릿으로 작업할 수 있습니다.
consumer.view_template_definition¶
설명: 클린룸 템플릿 정의는 템플릿에 전달해야 할 매개 변수를 결정하는 데 도움이 됩니다.
is_obfuscated
인자를 적용하여 템플릿이 난독 처리된 경우 템플릿 정의를 볼 수 없습니다.
참고
모든 Samooha 프로시저는 암호화되어 있으며 기본적으로 볼 수 없습니다. 하지만 사용자가 추가한 사용자 지정 템플릿은 모두 표시됩니다.
인자: cleanroom_name (string), template_name (string)
반환: 템플릿 정의 (string)
예:
call samooha_by_snowflake_local_db.consumer.view_template_definition($cleanroom_name, 'prod_overlap_analysis');
consumer.get_arguments_from_template¶
설명: 데이터를 구성하는 방법과 각 템플릿에 필요한 데이터를 정의하여 출력을 쉽게 수집할 수 있도록 합니다.
인자: cleanroom_name (string), template_name (string)
반환: 인자 목록 및 사양 (table)
예:
call samooha_by_snowflake_local_db.consumer.get_arguments_from_template($cleanroom_name, 'prod_overlap_analysis');
템플릿 체인¶
다음 명령을 사용하면 사용자는 클린룸에서 사용할 수 있는 템플릿 체인을 사용하여 작업할 수 있습니다. 템플릿 체인 사용에 대한 일반적인 정보는 개발자 APIs를 사용하여 템플릿을 순차적으로 실행하기 를 참조하십시오.
consumer.view_added_template_chains¶
설명: 클린룸에서 현재 활성화된 템플릿 체인을 봅니다.
인자: cleanroom_name (string)
반환: 추가된 템플릿 체인 (table)
예:
call samooha_by_snowflake_local_db.consumer.view_added_template_chains($cleanroom_name);
consumer.view_template_chain_definition¶
설명: 템플릿 체인의 특성을 반환합니다.
인자: cleanroom_name (string), template_chain_name (string)
반환: 템플릿 체인 정의 (string)
예:
call samooha_by_snowflake_local_db.consumer.view_template_chain_definition($cleanroom_name, 'insights_chain');
분석 실행¶
다음 명령은 지정된 템플릿을 기반으로 특정 분석이나 활성화를 실행합니다.
consumer.run_analysis¶
설명: 템플릿 또는 템플릿 체인을 사용하여 분석을 실행하고 결과 테이블을 반환합니다.
차등 개인정보 보호를 사용하도록 설정한 경우 이 템플릿의 예산 한도에 도달하면 쿼리가 실패할 수 있습니다.
is_obfuscated
인자를 적용하여 템플릿이 난독 처리된 경우 해당 템플릿을 실행하려면 Snowflake Enterprise Edition 이상을 사용해야 합니다.
인자:
cleanroom_name (string) - 실행할 템플릿이 있는 클린룸의 이름입니다.
template_name (string) - 클린룸에서 실행할 템플릿 또는 템플릿 체인의 이름입니다.
consumer_tables (array of strings) - 정규화된 컨슈머 테이블 이름의 배열입니다.
my_table
템플릿 변수에 할당됩니다. 이러한 테이블은 이미 클린룸에 링크되어 있어야 합니다.consumer.view_consumer_datasets
를 호출하여 사용 가능한 테이블을 확인하십시오. 예를 들어, [‘mytable1’,’mytable2’,’mytable3’]을 전달하면 템플릿은 각각{{my_table[0]}}
,{{my_table[1]}}
및{{my_table[2]}}
로 이 값에 액세스할 수 있습니다.provider_tables (array of strings) - 정규화된 공급자 테이블 이름의 배열입니다.
source_table
템플릿 변수에 할당됩니다. 이러한 테이블은 이미 클린룸에 링크되어 있어야 합니다.consumer.view_provider_datasets
를 호출하여 사용 가능한 테이블을 확인하십시오. 예를 들어, [‘sourcetable1’,’sourcetable2’,’sourcetable3’]을 전달하면 템플릿은 각각{{source_table[0]}}
,{{source_table[1]}}
및{{source_table[2]}}
로 이 값에 액세스할 수 있습니다.analysis_arguments (object) - 템플릿에 전달된 키-값 페어가 있는 오브젝트입니다. 템플릿은 키 이름으로 변수에 액세스할 수 있습니다.
{'age': 20}
을 전달하면 템플릿은{{age}}
로 값에 액세스합니다. 요구 사항이 없는 경우 빈 오브젝트를 전달합니다. 어떤 값이 필요한지 확인하려면consumer.view_template_definition
을 호출하여 해당 템플릿을 살펴봅니다. 열 이름을 제공하는 경우 템플릿을 검토하여 열 이름에 테이블 이름을 한정해야 하는지 여부를 결정하십시오. 테이블 별칭이p
또는c
인 경우 열 이름에 소문자p
및c
테이블 별칭을 사용합니다. 즉,P.age_band
가 아니라p.age_band
입니다. 이 오브젝트에는 1개의 선택적 예약 값이 있습니다.엡실론
(부동 소수점, 선택 사항) - 이 클린룸에 차등 개인정보 보호가 활성화된 경우 차등 개인정보 보호를 위한 엡실론 값을 지정합니다. 기본값은 0.1입니다.
use_cache(부울, 선택 사항) - 동일한 쿼리에 캐시된 결과를 사용할지 여부입니다. 기본값은 FALSE 입니다.
반환: (Table) 쿼리 결과.
예:
call samooha_by_snowflake_local_db.consumer.run_analysis(
$cleanroom_name,
'prod_overlap_analysis',
['SAMOOHA_SAMPLE_DATABASE.MYDATA.CONVERSIONS'], -- Consumer tables
['MYDB.MYSCH.EXPOSURES'], -- Provider tables
object_construct(
'max_age', 30
)
);
활성화¶
결과 활성화에 대한 자세한 내용은 활성화 개요 섹션을 참조하십시오.
library.view_external_activation_history¶
설명: 현재 계정의 활성화 요청 기록을 봅니다.
인자: 없음
반환: 활성화 요청의 세부 정보 및 상태가 포함된 테이블.
예:
call SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.LIBRARY.view_external_activation_history();
consumer.set_activation_policy¶
설명: 활성화 템플릿 내에서 사용할 수 있는 열을 정의합니다. 이렇게 하면 컨슈머가 승인한 열만 활성화 템플릿과 함께 사용할 수 있습니다.
입력: cleanroom_name (string), columns (array)
열 인자는 <template_name>:<fully_qualified_table_name>:<column_name>
형식으로 전달됩니다.
출력: Success message
예:
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' ]);
consumer.approve_provider_activation_consent¶
설명: 공급자 활성화를 허용하라는 공급자의 요청을 승인하며, 이는 공급자의 Snowflake 계정으로 결과를 푸시하는 기능입니다. 공급자가 이 Clean Room에서 지정된 템플릿으로 provider.request_provider_activation_consent
를 호출하지 않은 경우 이 프로시저는 실패합니다.
*입력: *cleanroom_name (string), activation_template_name (string)
출력: Success message
예:
call consumer.approve_provider_activation_consent('my_cleanroom', 'activation_my_template');
consumer.run_activation¶
설명: 결과를 컨슈머 또는 공급자의 Snowflake 계정으로 푸시하는 템플릿을 실행합니다. consumer_direct_activation
인자에 따라 이것이 컨슈머 활성화인지 공급자 활성화인지 결정됩니다.
인자:
cleanroom_name(문자열) - 활성화를 실행할 Clean Room의 이름입니다.
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);
컨슈머 정의 템플릿¶
다음 APIs 을 사용하면 클린룸에 컨슈머 정의 템플릿을 추가할 수 있습니다. 자세한 내용은 개발자 API를 사용하여 컨슈머 정의 템플릿 추가하기 섹션을 참조하십시오.
consumer.create_template_request¶
설명: Clean Room 공급자에게 사용자 지정 템플릿을 Clean Room에 추가할 수 있도록 승인해 달라는 요청을 보냅니다. 개발자 API를 사용하여 컨슈머 정의 템플릿 추가하기 섹션을 참조하십시오.
인자:
cleanroom_name (string) - 이 템플릿이 적용되는 클린룸의 이름입니다.
template_name (string) - 템플릿 이름입니다. 모두 소문자, 숫자, 공백 또는 밑줄이어야 합니다. 활성화 템플릿의 이름은 “활성화”로 시작해야 합니다.
template_definition(문자열) - JinjaSQL 템플릿입니다. 템플릿 구문을 알아보십시오.
반환: 성공 메시지 (string)
예:
CALL samooha_by_snowflake_local_db.consumer.create_template_request('dcr_cleanroom',
'my_analysis',
$$
SELECT
identifier({{ dimensions[0] | column_policy }})
FROM
identifier({{ my_table[0] }}) c
INNER JOIN
identifier({{ source_table[0] }}) p
ON
c.identifier({{ consumer_id }}) = identifier({{ provider_id | join_policy }})
{% if where_clause %} where {{ where_clause | sqlsafe | join_and_column_policy }} {% endif %};
$$);
consumer.get_sql_jinja¶
설명: JinjaSQL 템플릿을 유효한 SQL 문으로 평가합니다. 이 프로시저는 표준 JinjaSQL 문만 처리할 수 있습니다. join_policy
또는 column_policy
와 같은 JinjaSQL 로의 Clean Room 확장을 처리할 수 없습니다.
인자:
template_string(문자열) - 처리할 템플릿입니다. 표준 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¶
설명: 사용자 정의 Python 코드가 포함된 컨슈머 클린룸 템플릿을 생성합니다. 생성된 템플릿에는 Python 코드와 JinjaSQL 템플릿의 자리 표시자가 포함됩니다. 최종 템플릿을 consumer.create_template_request
로 전달합니다.
인자:
function_name (string) - SQL 템플릿이 함수를 실행하기 위해 호출해야 하는 Python 함수의 이름입니다.
인자 (array of strings) - 각 인자가 “<argument_name> <argument_type>” 형식의 공백으로 구분된 문자열 쌍인 Python 함수에 대한 인자 목록입니다. 예를 들어,
['데이터 베리언트', '소수 자릿수 정수']
.packages (array of strings) - Python 코드에 필요한 패키지 이름의 배열입니다. 없는 경우 빈 배열을 지정합니다. 예:
['pandas','numpy']
.imports (array of strings) - Python 코드에 필요한 모든 사용자 정의 Python 라이브러리입니다. 0개 이상의 스테이지 주소로 구성된 배열이어야 합니다. 예:
['@db.schema.stage/my_python_sproc.py']
rettype (string) - 함수의 SQL 반환 유형입니다. 예:
'정수'
,'varchar'
.처리기 (string) - Python 코드에서 기본 처리기 함수의 이름입니다. 일반적으로 이는
'main'
입니다.코드 (string) - Python 코드 구현입니다. 가져오기를 포함하고 지정된 처리기가 가져오기 내에 정의되어 있는 경우 빈 문자열일 수 있습니다.
반환: 생성된 Python 템플릿 (string). 자리 표시자를 SQL 코드로 바꿉니다.
예:
간단한 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
[], // No custom libraries needed.
'integer', // Return type integer
'main', // Standard main handler
// Python implementation as UDF
$$
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)
$$
);
이전 호출에 대한 응답은 다음과 같습니다. 자리 표시자에 표시된 대로 JinjaSQL 을 삽입하고 consumer.create_template_request
에 전달합니다.
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 execute the SQL query
LET SQL_TEXT varchar := '<INSERT SQL TEMPLATE HERE>';
-- Execute the query and return the result
LET RES resultset := (EXECUTE IMMEDIATE :SQL_TEXT);
RETURN TABLE(RES);
END;
consumer.list_template_requests¶
설명: 컨슈머가 Clean Room에 템플릿을 추가하기 위해 요청한 내용을 나열합니다.
인자: cleanroom_name (string)
반환값: request_id (string), provider_identifier (string), template_name (string), template_definition (string), request_status (string), reason (string)
예:
CALL samooha_by_snowflake_local_db.consumer.list_template_requests('dcr_cleanroom');
클린룸 메타데이터 getter 메서드¶
다음 메서드는 클린룸의 관련 속성을 보여줍니다.
consumer.describe_cleanroom¶
설명: 템플릿, 데이터 세트, 정책 등 Clean Room에 추가된 항목에 대한 모든 정보가 포함된 텍스트 요약을 만듭니다. is_obfuscated
인자를 적용하여 템플릿이 난독 처리된 경우 해당 템플릿 이름을 보려면 Snowflake Enterprise Edition 이상을 사용해야 합니다.
인자: cleanroom_name (string)
반환: 클린룸의 광범위한 설명 문자열 (table)
예:
call samooha_by_snowflake_local_db.consumer.describe_cleanroom($cleanroom_name);
consumer.view_provider_datasets¶
설명: 공급자가 클린룸에 추가한 모든 데이터 세트를 봅니다.
인자: cleanroom_name (string)
반환: 클린룸의 모든 공급자 데이터 세트 이름 (table)
예:
call samooha_by_snowflake_local_db.consumer.view_provider_datasets($cleanroom_name);
consumer.view_join_policy¶
설명: 컨슈머가 컨슈머 데이터 세트에 설정한, 클린룸 내부에서 사용자가 안전하게 참여할 수 있는 열을 간략하게 설명합니다.
인자: cleanroom_name (string)
반환: 조인 정책 (table)
예:
call samooha_by_snowflake_local_db.consumer.view_join_policy($cleanroom_name);
consumer.view_provider_join_policy¶
설명: 공급자가 공급자 데이터 세트에 설정한 클린룸 내에서 사용자가 안전하게 조인할 수 있는 열을 간략하게 설명합니다.
인자: cleanroom_name (string)
반환: 조인 정책 (table)
예:
call samooha_by_snowflake_local_db.consumer.view_provider_join_policy($cleanroom_name);
consumer.view_added_templates¶
설명: Clean Room에 있는 모든 활성 템플릿을 봅니다. is_obfuscated
인자를 적용하여 템플릿이 난독 처리된 경우 해당 템플릿을 보려면 Snowflake Enterprise Edition 이상을 사용해야 합니다.
인자: cleanroom_name (string)
반환: 추가된 템플릿 (table)
예:
call samooha_by_snowflake_local_db.consumer.view_added_templates($cleanroom_name);
library.is_consumer_run_enabled¶
설명: 이 Clean Room에 컨슈머 분석이 활성화되어 있는지 확인합니다. 이 플래그에 따라 Clean Room 컨슈머(설치 관리자)가 이 Clean Room에서 분석을 실행할 수 있는지 여부가 결정됩니다.
인자: cleanroom_name (string)
반환: 활성화된 메시지 (string)
예:
CALL samooha_by_snowflake_local_db.library.is_consumer_run_enabled($cleanroom_name);
consumer.view_cleanrooms¶
설명: 이 계정이 조인(설치)했거나 조인 가능한 모든 클린룸을 표시합니다. 설치된 Clean Rooms만 보려면 consumer.view_installed_cleanrooms
를 실행하십시오.
인자: 없음
반환: (테이블) 이 계정에 대해 설치되거나 초대된 모든 Clean Rooms.
예:
call samooha_by_snowflake_local_db.consumer.view_cleanrooms();
consumer.view_installed_cleanrooms¶
설명: 이 계정에 설치(가입)된 모든 Clean Rooms를 나열합니다. 조인된 Clean Rooms와 조인되지 않은 Clean Rooms를 모두 보려면 consumer.view_cleanrooms
를 호출하십시오. 이 계정에서 생성된 모든 Clean Rooms를 보려면 provider.view_cleanrooms
를 호출하십시오.
인자: 없음
반환: (테이블) 이 계정에 설치된 Clean Rooms.
예:
CALL samooha_by_snowflake_local_db.consumer.view_installed_cleanrooms();
차등 개인정보 보호¶
이 명령은 클린룸의 차등 개인정보 보호를 제어합니다. consumer.enable_templates_for_provider_run
을 호출할 때 템플릿 수준에서 차등 개인정보 보호를 지정할 수도 있습니다.
consumer.is_dp_enabled¶
설명: 클린룸에서 차등 개인정보 보호가 활성화되었는지 확인합니다.
인자: cleanroom_name (string)
반환: 클린룸에 DP 활성화 여부 (boolean)
예:
call samooha_by_snowflake_local_db.consumer.is_dp_enabled($cleanroom_name);
consumer.view_remaining_privacy_budget¶
설명: 클린룸에서 쿼리를 수행하는 데 사용할 수 있는 잔여 개인정보 보호 예산을 봅니다. 예산이 재설정될 때까지 run_analysis에 대한 추가 호출은 허용되지 않습니다. 예산은 매일 재설정됩니다.
SELECT cleanroom_name FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) WHERE is_already_installed = TRUE;
인자: cleanroom_name (string)
반환: 남은 개인정보 보호 예산(부동 소수점)
예:
call samooha_by_snowflake_local_db.consumer.view_remaining_privacy_budget($cleanroom_name);
consumer.set_privacy_settings¶
설명: 사용자 지정 템플릿을 사용하는 공급자 실행 분석(활성화 포함)에 대한 개인정보 보호 설정을 지정합니다. 이전에 설정한 모든 값을 지웁니다. 이 메서드를 호출할 때마다 이전 구성 설정이 모두 지워집니다.
인자:
cleanroom_name(문자열) - 이 설정을 적용해야 하는 Clean Room의 이름입니다.
privacy_settings(문자열) - 공급자가 사용자 지정 템플릿을 실행할 때 개인정보 설정을 지정하는 문자열 JSON 오브젝트입니다. 오브젝트의 구문은 다음과 같습니다.
'{ "null" : <template_config> }'
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 명령¶
Clean Rooms에서 Snowplark Container Services를 사용하는 방법에 대해 자세히 알아보십시오.
consumer.start_or_update_service¶
설명: 이 Clean Room에서 공급자가 정의한 SPCS 의 최신 버전을 생성하고 시작합니다. 공급자가 컨테이너를 생성하거나 업데이트하기 위해 provider.load_service_into_cleanroom
을 호출할 때마다, 컨슈머는 consumer.start_or_update_service
를 호출하여 서비스를 업데이트해야 합니다.
컨슈머는 이 프로시저를 호출하기 전에 풀을 정의하고 시작해야 합니다.
인자:
cleanroom_name(문자열) - 컨테이너를 로딩할 Clean Room의 이름입니다.
compute_pool_name(문자열) - 이 Clean Room에서 컨슈머가 정의한 컴퓨팅 풀의 이름입니다. 풀이 이미 생성되어 있어야 하며 Clean Room에 풀에 액세스할 수 있는 권한이 있어야 합니다.
service_options(오브젝트, 선택 사항) - 이 서비스에 대한 매개 변수를 지정하는 오브젝트입니다. 지원되는 속성은 다음과 같습니다.
query_warehouse
- (문자열, 선택 사항) 이 서비스에 사용할 웨어하우스 이름입니다. Clean Room을 운영하는 웨어하우스와 동일한 웨어하우스일 필요는 없습니다.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'
));
일반 도우미 메서드¶
일반적인 클린룸 기능을 지원하려면 다음 방법을 사용하십시오.
consumer.set_cleanroom_ui_accessibility¶
설명: 현재 계정의 컨슈머를 위해 웹 앱에서 클린룸을 표시하거나 숨깁니다.
인자:
cleanroom_name (string) - 클린룸의 이름입니다.
visibility_status (string) - 대소문자를 구분하는 다음 값 중 하나입니다.
HIDDEN - 웹 앱에서 지정된 클린룸을 현재 컨슈머 계정의 모든 사용자로부터 숨깁니다. 클린룸은 API 호출을 통해 계속 액세스할 수 있습니다.
EDITABLE - 웹 앱에서 클린룸을 표시합니다.
반환: 성공 메시지 (string)
예:
CALL samooha_by_snowflake_local_db.consumer.set_cleanroom_ui_accessibility($cleanroom_name, 'HIDDEN');
library.enable_local_db_auto_upgrades¶
설명: 새 버전이 릴리스될 때 Snowflake Data Clean Rooms용 Snowflake Native App을 자동으로 업그레이드하는 작업 samooha_by_snowflake_local_db.admin.expected_version_task
를 활성화합니다.
인자: 없음
반환: 성공 메시지 (string)
예:
CALL samooha_by_snowflake_local_db.library.enable_local_db_auto_upgrades();
library.disable_local_db_auto_upgrades¶
설명: 새 버전이 릴리스될 때 Snowflake Data Clean Rooms용 Snowflake Native App을 자동으로 업그레이드하는 작업 samooha_by_snowflake_local_db.admin.expected_version_task
를 비활성화합니다.
인자: 없음
반환: 성공 메시지 (string)
예:
CALL samooha_by_snowflake_local_db.library.disable_local_db_auto_upgrades();