Snowflake Data Clean Rooms: 공급자 API 참조 가이드¶
이 가이드에서는 공급자가 클린룸을 생성, 구성, 공유할 수 있는 개발자 APIs에 대해 설명합니다. 모든 함수는 다음 스키마 내부에 있습니다.
samooha_by_snowflake_local_db.provider
환경 설정¶
개발자 APIs를 사용하여 Snowflake Data Clean Room으로 작업하기 전에 다음 명령을 실행하여 Snowflake 환경을 설정합니다. SAMOOHA_APP_ROLE 역할이 없는 경우 계정 관리자에게 문의하십시오.
use role samooha_app_role;
use warehouse app_wh;
클린룸의 이름을 만듭니다. 클린룸 이름에는 영숫자 문자만 사용할 수 있습니다. 클린룸 이름에는 공백과 밑줄 외에 특수 문자를 사용할 수 없습니다.
set cleanroom_name = 'Test Cleanroom 1'; -- This must only have alphanumeric characters.
클린룸 만들기¶
다음 명령을 사용하여 클린룸을 만들고 삭제합니다.
provider.cleanroom_init¶
설명: 계정에 클린 룸을 만듭니다. 클린룸의 이름을 영숫자 문자와 공백만 포함하여 지정할 수 있습니다. 또한 클린룸의 분배 를 통해 조직 내부에서만 공유하려는 테스트 클린룸인지(INTERNAL), 다른 조직과 외부에서 공유하려는 생산 클린룸인지(EXTERNAL)를 지정해야 합니다.
배포를 지정하지 않으면 기본값은 INTERNAL입니다.
다음을 사용하여 INTERNAL 클린룸을 EXTERNAL 클린룸으로 변경할 수 있습니다.
alter application package samooha_cleanroom_<CLEANROOM_ID> SET DISTRIBUTION = EXTERNAL;
참고
분포 는 EXTERNAL 또는 INTERNAL 중 하나일 수 있습니다. 클린룸이 EXTERNAL 배포로 표시된 경우, Snowflake는 자동 보안 검사를 먼저 수행해야 공동 작업자와 공유할 수 있습니다. 자세한 내용은 provider.set_default_release_directive를 참조하십시오.
입력: cleanroom_name(string), distribution(string)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.cleanroom_init($cleanroom_name, 'INTERNAL');
provider.set_default_release_directive¶
설명: 클린룸에 대한 릴리스 지시문, 즉 공동 작업자가 받을 버전과 패치를 설정합니다.
기본적으로 모든 클린룸은 다음 버전 및 패치 번호로 생성됩니다.
버전: V1_0
패치: 0
참고
클린룸 배포가 EXTERNAL로 설정된 경우, 클린룸 보안 스캔이 APPROVED 상태로 전환된 경우에만 호출할 수 있습니다. 현재 스캔 상태를 보려면 다음을 호출합니다.
show versions in application package samooha_cleanroom_<CLEANROOM_ID>;
입력: cleanroom_name(string), version(string), patch(string)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.set_default_release_directive($cleanroom_name, 'V1_0', '0');
provider.drop_cleanroom¶
설명: 기존의 클린룸은 생성자에 의해 삭제될 수 있습니다. 이렇게 하면 클린룸이 완전히 삭제되어 클린룸을 설치한 컨슈머는 더 이상 액세스하거나 사용할 수 없게 됩니다.
입력: cleanroom_name(string)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.drop_cleanroom($cleanroom_name);
데이터 등록 및 등록 취소¶
다음 명령을 사용하여 데이터베이스, 스키마, 오브젝트를 등록하고 등록을 취소합니다. 테이블과 뷰는 클린룸에 연결하기 전에 등록되어야 합니다. 데이터베이스나 스키마를 등록하면 해당 데이터베이스나 스키마에 있는 모든 오브젝트가 등록됩니다.
provider.register_db¶
설명: 호출자 권한으로 실행되며 계정 관리자가 Snowflake Data Clean Room 애플리케이션에서 볼 수 있는 데이터베이스를 등록할 수 있도록 합니다. SELECT 기능은 데이터베이스의 모든 스키마와 테이블, 그리고 Snowflake Data Clean Room 기본 애플리케이션(SAMOOHA_BY_SNOWFLAKE)에 부여됩니다.
입력: db_name (string)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.register_db('SAMOOHA_SAMPLE_DATABASE');
library.register_schema¶
설명: register_db
와 유사하지만, 스키마 수준에서 작동합니다. 정규화된 스키마 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여를 선택하면 사용자가 스키마의 오브젝트를 클린룸에 연결할 수 있습니다.
관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)를 등록하려면 library.register_managed_access_schema
를 대신 사용합니다.
입력: schema_name (array)
출력: 성공 메시지(문자열)
예제:
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)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.library.register_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
library.register_table_or_view¶
설명: 모든 유형의 테이블과 뷰를 등록합니다.
입력: 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¶
설명: register_db
와 유사하지만 테이블 수준에서 작동합니다. 정규화된 테이블 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여가 이루어지면 사용자가 테이블을 클린룸에 연결할 수 있습니다.
관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)에 테이블을 등록하려면 대신 library.register_managed_access_table
을 사용합니다.
입력: table_name (array)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.library.register_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.register_managed_access_table¶
설명: register_table
과 유사하지만, WITH MANAGED ACCESS 매개 변수로 생성된 스키마에 테이블을 등록합니다. 정규화된 테이블 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여가 이루어지면 사용자가 테이블을 클린룸에 연결할 수 있습니다.
입력: table_name (array)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.library.register_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.register_view¶
설명: register_db
와 유사하지만, 뷰 수준에서 작동합니다. 정규화된 뷰 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여를 선택하면 사용자가 뷰를 클린룸에 연결할 수 있습니다.
관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 만든 스키마)에 보기를 등록하려면 대신 library.register_managed_access_view
를 사용합니다.
입력: view_name (array)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.library.register_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.register_managed_access_view¶
설명: register_view
와 유사하지만, WITH MANAGED ACCESS 매개 변수로 생성된 스키마에 뷰를 등록합니다. 정규화된 뷰 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여를 선택하면 사용자가 뷰를 클린룸에 연결할 수 있습니다.
입력: view_name (array)
출력: 성공 메시지(문자열)
예제:
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)
출력: 성공 메시지(문자열)
예제:
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)
출력: 성공 메시지(문자열)
예제:
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)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.library.unregister_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
library.unregister_table_or_view¶
설명: 모든 유형의 테이블과 뷰를 등록 취소합니다.
입력: 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¶
설명: unregister_db
와 유사하지만, 테이블 수준에서 작동합니다. 완전히 정규화된 테이블 이름을 나타내는 배열이나 문자열을 전달하여 테이블의 등록을 취소할 수 있습니다. 사용자는 등록되지 않은 테이블을 클린룸에 연결할 수 없습니다.
관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)에 테이블을 등록 취소하려면 대신 library.unregister_managed_access_table
을 사용합니다.
입력: table_name (array)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.library.unregister_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.unregister_managed_access_table¶
설명: unregister_table
과 유사하지만, 관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)의 테이블 등록을 취소합니다.
입력: table_name (array)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.library.unregister_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.unregister_view¶
설명: unregister_db
와 유사하지만, 뷰 수준에서 작동합니다. 완전히 정규화된 뷰 이름을 나타내는 배열이나 문자열을 전달하여 뷰의 등록을 취소할 수 있습니다. 사용자는 등록되지 않은 뷰를 클린룸에 연결할 수 없습니다.
관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 만든 스키마)에 보기를 등록 취소하려면 대신 library.unregister_managed_access_view
를 사용합니다.
입력: view_name (array)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.library.unregister_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
library.unregister_managed_access_view¶
설명: unregister_view
와 유사하지만, 관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)의 뷰 등록을 취소합니다.
입력: view_name (array)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.library.unregister_managed_access_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
데이터 세트 추가 및 정책 생성¶
다음 명령을 사용하여 클린룸에 대한 데이터를 추가하고 정책을 설정합니다.
provider.link_datasets¶
설명: Snowflake 테이블을 클린룸에 연결합니다. 이 절차를 사용하면 클린룸 내부에서 테이블을 안전하게 볼 수 있어 테이블에 자동으로 액세스할 수 있으므로 테이블 사본을 만들 필요가 없습니다.
세 번째 인자는 선택 사항입니다. 컨슈머 목록을 지정하는 데 사용하지 않으면 클린룸의 모든 컨슈머가 지정된 테이블에 액세스할 수 있습니다. 컨슈머를 지정하면 해당 컨슈머만 지정된 테이블에 액세스할 수 있습니다.
입력: cleanroom_name (string), tables_list (array), consumer_list (array)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.link_datasets($cleanroom_name, ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS', 'SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES']);
참고
뷰를 클린룸에 연결하기 전에 ACCOUNTADMIN 역할이 있는 사용자는 Snowflake에서 다음을 실행해야 합니다.
grant reference_usage on database <DB NAME> to share in application package samooha_cleanroom_<cleanroom_name>;
provider.restrict_table_options_to_consumers¶
설명: 특정 컨슈머가 클린룸의 테이블에 액세스할 수 있는지 여부를 제어합니다.
두 번째 인자는 JSON 오브젝트로, 여기서 각 이름/값 페어는 테이블의 이름과 테이블에 액세스할 수 있는 컨슈머의 배열입니다. 각 컨슈머는 계정 로케이터를 사용하여 지정됩니다.
입력: cleanroom_name(string), access_details(variant)
출력: success message (string)
예제:
call samooha_by_snowflake_local_db.provider.restrict_table_options_to_consumers(
$cleanroom_name,
{
'DB.SCHEMA.TABLE1': ['CONSUMER_1_LOCATOR'],
'DB.SCHEMA.TABLE2': ['CONSUMER_1_LOCATOR', 'CONSUMER_2_LOCATOR']
}
);
provider.set_join_policy¶
설명: 클린룸 내에서 템플릿을 실행할 때 컨슈머가 조인을 수행할 수 있는 열을 지정합니다. 열 정책은 바꾸기 전용 이므로 함수가 다시 호출되면 이전에 설정된 열 정책이 현재 정책으로 완전히 바뀝니다.
이 검사는 SQL Jinja 템플릿의 where_clause 인자 또는 join_policy 필터가 추가된 모든 인자를 검사하여 수행됩니다. 이 검사에서는 승인되지 않은 열을 찾습니다. 와일드카드가 포함된 쿼리는 이러한 검사를 통해 포착되지 않을 수 있으며, 분석 템플릿을 설계할 때는 여전히 신중해야 합니다.
기본적으로, 검사는 이름이 where_clause 인 SQL Jinja 인자에 대해 수행됩니다. 이 검사를 활성화하려면 이 태그를 사용해야 합니다.
입력: cleanroom_name(string), table_and_col_names(array)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.set_join_policy($cleanroom_name, ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:EMAIL', 'SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES:EMAIL']);
템플릿¶
다음 명령을 사용하여 이 클린룸에서 지원되는 템플릿/분석을 추가합니다.
provider.add_templates¶
설명: 이름 식별자를 사용하여 미리 정의된 템플릿 목록을 추가합니다. 예로는 “prod_overlap_analysis” 및 “prod_provider_data_analysis”가 있습니다.
입력: cleanroom_name(string), template_names(array)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.add_templates($cleanroom_name, ['prod_overlap_analysis']);
provider.view_template_definition¶
설명: 템플릿 이름이 주어지면 클린룸에서 템플릿 정의를 검색합니다. 이를 통해 사용자는 시각적으로 이를 검토하고 템플릿을 실행할 때 어떤 매개 변수를 전달해야 하는지 판단할 수 있습니다.
입력: cleanroom_name (string), template_name (string)
출력: 템플릿 정의(문자열)
예제:
call samooha_by_snowflake_local_db.provider.view_template_definition($cleanroom_name, 'prod_overlap_analysis');
provider.clear_template¶
설명: 클린룸에서 지정된 템플릿(이름으로 표시됨)을 제거합니다.
입력: cleanroom_name(string), template_name(string)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.clear_template($cleanroom_name, 'prod_custom_template');
provider.clear_all_templates¶
설명: 클린룸에 추가된 모든 템플릿을 제거합니다. 이 함수가 호출되면 템플릿을 다시 추가해야 합니다.
입력: cleanroom_name(string)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.clear_all_templates($cleanroom_name);
provider.set_column_policy¶
설명: 컨슈머가 작업을 수행할 수 있는 데이터의 열을 설정합니다. 이 작업은 템플릿을 추가한 후에만 호출해야 합니다. 이 함수도 템플릿의 함수이므로 입력은 template_name:full_table_name:column_name
형식이어야 합니다. 열 정책은 바꾸기 전용 이므로 함수가 재호출되면 이전에 설정된 열 정책이 현재 정책으로 완전히 바뀝니다.
이메일과 같은 ID 열에서는 열 정책 API를 호출해서는 안 됩니다. 이는 집계 및 그룹화 열에만 사용해야 합니다.
이 검사는 승인되지 않은 열이 있는지 데이터에 대해 실행할 SQL 쿼리를 구문 분석하는 방식으로 수행됩니다. 와일드카드가 포함된 쿼리는 이러한 검사를 통해 포착되지 않을 수 있으며, 분석 템플릿을 설계할 때는 여전히 신중해야 합니다.
기본적으로, 검사는 이름이 차원 또는 measure_columns 인 SQL Jinja 인자에 대해 수행됩니다. 이 검사를 활성화하려면 이러한 태그를 사용해야 합니다.
또는 SQL Jinja 템플릿에서 join_policy 및 column_policy 태그를 사용하여 사용자 지정 SQL Jinja 인자에 대해 보안 정책을 적용할 수 있습니다.
입력: cleanroom_name(string), analysis_and_table_and_columns(array)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.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',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES:CAMPAIGN']);
provider.add_custom_sql_template¶
설명: 클린룸에 사용자 지정 SQL Jinja 템플릿을 추가합니다. 이렇게 하면 컨슈머가 템플릿을 호출할 수 있습니다.
이 API를 두 번 이상 호출하여 여러 사용자 지정 템플릿을 클린룸에 추가할 수 있습니다. 이 프로시저는 이름이 동일한 모든 기존 템플릿을 덮어씁니다. 기존 템플릿을 편집하려면 기존 템플릿 이름을 API에 인자로 전달합니다.
컨슈머가 템플릿을 사용하여 결과를 공급자에게 다시 활성화하는 경우 명령은 다음 요구 사항을 충족해야 합니다.
사용자 지정 템플릿의 이름은
activation
문자열로 시작해야 합니다. 예를 들어,activation_custom_template
일 수 있습니다.템플릿의 정의는
cleanroom.activation_data_
로 시작하는 테이블을 생성해야 합니다. 예를 들어,CREATE TABLE cleanroom.activation_data_analysis_results AS ...
일 수 있습니다.템플릿의 정의는 정의에서 생성된 테이블 이름의 고유 부분, 즉
cleanroom.activation_data_
에 추가된 문자열을 반환해야 합니다. 예를 들어,return 'data_analysis_results'
일 수 있습니다.
SQL Jinja 템플릿에는 다음의 두 가지 특수 인자가 있습니다.
source_table: 공급자 측의 테이블 배열
my_table: 컨슈머 측의 테이블 배열
모든 공급자/컨슈머 테이블은 이러한 인자를 사용하여 참조되어야 합니다. 왜냐하면 클린룸에 실제로 연결된 보안 뷰의 이름이 테이블 이름과 다르기 때문입니다. 중요한 사항으로, 공급자 테이블 별칭은 반드시 p(또는 p1), p2, p3, p4 등이어야 하며, 컨슈머 테이블 별칭은 반드시 c(또는 c1), c2, c3 등이어야 합니다. 이는 클린룸의 보안 정책을 시행하기 위해 필요합니다.
또한, 컨슈머 분석 요청에 대한 검사를 수행하기 위해 “column_policy” 및 “join_policy”가 SQL Jinja 템플릿에서 모든 열 이름을 dimensions 또는 measure_columns 로 참조해야 합니다. 사용자 지정 SQL Jinja 템플릿에서 확인할 열을 참조할 때 기본적으로 이 태그를 사용합니다.
또는 사용자 지정 SQL Jinja 템플릿의 모든 인자가 다음 필터를 사용하여 조인 및 열 정책을 준수하는지 확인할 수 있습니다.
join_policy: 문자열 값 또는 필터 절이 조인 정책을 준수하는지 확인합니다.
column_policy: 문자열 값 또는 필터 절이 열 정책을 준수하는지 확인합니다.
join_and_column_policy: 필터 절에서 조인에 사용된 열이 조인 정책을 준수하는지, 필터로 사용된 열이 열 정책을 준수하는지 확인합니다.
예를 들어, 절 {{ where_clause | sqlsafe | join_and_column_policy }} 에서 p.HEM = c.HEM 및 p.STATUS = 1 의 입력이 구문 분석되어 p.HEM 가 조인 정책에 있고 p.STATUS 가 열 정책에 있는지 확인합니다.
참고: sqlsafe 필터는 공동 작업자가 템플릿에 순수 SQL을 삽입할 수 있도록 허용하므로 주의해서 사용해야 합니다.
컨슈머 목록을 지정하지 않으면 모든 컨슈머가 사용자 지정 템플릿을 사용할 수 있습니다. 매개 변수를 사용하여 컨슈머 목록을 지정하는 경우, 해당 컨슈머만 클린룸에서 템플릿을 사용할 수 있습니다.
입력: cleanroom_name(string), template_name(string), template(string), differential_privacy_sensitivity(float, OPTIONAL), consumer_list(array, OPTIONAL)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.add_custom_sql_template(
$cleanroom_name, 'prod_custom_template',
$$
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 %};
$$);
provider.restrict_template_options_to_consumers¶
설명: 특정 컨슈머가 클린룸에서 템플릿을 사용할 수 있는지 여부를 제어합니다.
두 번째 인자는JSON오브젝트, 각 이름/값 페어는 템플릿의 이름과 이를 사용할 수 있는 컨슈머의 배열입니다. 각 컨슈머는 계정 로케이터를 사용하여 지정됩니다.
입력: cleanroom_name(string), access_details(variant)
출력: success message (string)
예제:
call samooha_by_snowflake_local_db.provider.restrict_template_options_to_consumers(
$cleanroom_name,
{
'prod_template_1': ['CONSUMER_1_LOCATOR', 'CONSUMER_2_LOCATOR']
}
);
컨슈머 정의 템플릿¶
다음은APIs컨슈머가 클린룸에 템플릿을 추가하라는 요청을 승인하거나 거부할 수 있습니다. 컨슈머가 정의한 템플릿은 공급자가 컨슈머의 추가 요청을 승인하는 경우에만 클린룸에 추가됩니다. 자세한 내용은 개발자 API를 사용하여 컨슈머 정의 템플릿 추가하기 섹션을 참조하십시오.
provider.list_template_requests¶
설명: 클린룸에 컨슈머 정의 템플릿을 추가할 컨슈머의 모든 요청을 나열합니다. 여기에는 보류 중 요청, 승인된 요청, 거부된 요청이 포함됩니다.
입력: cleanroom_name (string)
출력: request_id(string), consumer_identifier(string), template_name(string), template_definition(string), status(string)
예제:
CALL samooha_by_snowflake_local_db.provider.list_template_requests('dcr_cleanroom');
provider.approve_template_request¶
설명: 템플릿을 클린룸에 추가하는 요청을 승인합니다. <request_id> 인자를 얻으려면 provider.list_template_requests
명령을 실행하여 요청의 UUID를 검색합니다.
입력: cleanroom_name (string), request_id (string)
출력: 성공 메시지(문자열)
예제:
CALL samooha_by_snowflake_local_db.provider.approve_template_request('dcr_cleanroom',
'01b4d41d-0001-b572');
provider.reject_template_request¶
설명: 템플릿을 클린룸에 추가하는 요청을 거부합니다. <request_id> 인자를 얻으려면 provider.list_template_requests
명령을 실행하여 요청의 UUID를 검색합니다.
입력: cleanroom_name (string), request_id (string), reason_for_rejection(string)
출력: 성공 메시지(문자열)
예제:
CALL samooha_by_snowflake_local_db.provider.reject_template_request('dcr_cleanroom',
'01b4d41d-0001-b572',
'Failed security assessment');
분석을 실행할 수 있는 사용자 구성¶
다음 명령을 사용하여 클린룸에서 분석을 실행할 수 있는 사용자를 구성합니다. 공급자(클린룸 생성자), 컨슈머(클린룸 설치 관리자) 또는 둘 다를 지정할 수 있습니다.
provider.enable_provider_run_analysis¶
설명: 공급자(클린룸 생성자)가 클린룸에서 분석을 실행할 수 있도록 합니다(기본적으로 비활성화되어 있음).
참고
매우 중요: 컨슈머가 클린룸을 설치하기 전에 provider.add_consumer
이후에 호출되어야 합니다. 컨슈머가 이미 클린룸을 설치한 후에 이를 변경하는 경우, 새로운 구성을 반영하기 위해 클린룸을 다시 설치해야 합니다.
입력: cleanroom_name(string), consumer_account_locator(string)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.enable_provider_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']);
provider.disable_provider_run_analysis¶
설명: 공급자(클린룸 생성자)가 클린룸에서 분석을 실행하지 못하도록 합니다(기본적으로 비활성화되어 있음).
참고
매우 중요: 컨슈머가 클린룸을 설치하기 전에 provider.add_consumer
이후에 호출되어야 합니다. 컨슈머가 이미 클린룸을 설치한 후에 이를 변경하는 경우, 새로운 구성을 반영하기 위해 클린룸을 다시 설치해야 합니다.
입력: cleanroom_name(string), consumer_account_locator(string)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.disable_provider_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']);
provider.enable_consumer_run_analysis¶
설명: 컨슈머(클린룸 설치 관리자)가 클린룸에서 분석을 실행할 수 있도록 합니다(기본적으로 활성화되어 있음).
참고
매우 중요: 컨슈머가 클린룸을 설치하기 전에 provider.add_consumer
이후에 호출되어야 합니다. 컨슈머가 이미 클린룸을 설치한 후에 이를 변경하는 경우, 새로운 구성을 반영하기 위해 클린룸을 다시 설치해야 합니다.
입력: cleanroom_name(string), consumer_account_locator(string)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.enable_consumer_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']);
provider.disable_consumer_run_analysis¶
설명: 컨슈머(클린룸 설치 관리자)가 클린룸에서 분석을 실행하지 못하도록 합니다(기본적으로 활성화되어 있음).
참고
매우 중요: 컨슈머가 클린룸을 설치하기 전에 provider.add_consumer
이후에 호출되어야 합니다. 컨슈머가 이미 클린룸을 설치한 후에 이를 변경하는 경우, 새로운 구성을 반영하기 위해 클린룸을 다시 설치해야 합니다.
입력: cleanroom_name(string), consumer_account_locator(string)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.disable_consumer_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']);
library.is_provider_run_enabled¶
설명: 이 클린룸에 Provider Run Analysis가 활성화되어 있는지 확인합니다. 참고: 여전히 consumer.enable_templates_for_provider_run
을 호출하여 명시적인 승인을 받아야 합니다. (아래 참조)
입력: cleanroom_name (string)
출력: 활성화된 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.library.is_provider_run_enabled($cleanroom_name)
library.is_consumer_run_enabled¶
설명: 이 클린룸에서 Consumer Run Analysis가 활성화되었는지 확인합니다. 이 플래그는 클린룸 컨슈머(설치 관리자)가 분석을 실행할 수 있는지, 아니면 공동 작업에 대한 데이터 기여자 역할을 할 수 있는지 여부를 결정합니다.
입력: cleanroom_name (string)
출력: 활성화된 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.library.is_consumer_run_enabled($cleanroom_name)
템플릿 체인¶
다음 명령을 사용하여 템플릿 체인을 생성하고 관리할 수 있습니다. 템플릿 체인 사용에 대한 일반적인 정보는 개발자 APIs를 사용하여 템플릿을 순차적으로 실행하기를 참조하십시오.
provider.add_template_chain¶
설명: 새로운 템플릿 체인을 생성합니다. 이전에 존재하는 템플릿만 템플릿 체인에 추가할 수 있습니다.
입력: cleanroom_name(string), template_chain_name(string), templates(array of objects)
템플릿을 나타내는 JSON 오브젝트에는 다음 필드가 포함될 수 있습니다.
template_name
(string) - 템플릿 체인에 추가할 템플릿을 지정합니다. 템플릿은 이미 존재해 있어야 합니다.cache_results
(boolean) - 템플릿 체인의 다른 템플릿이 액세스할 수 있도록 템플릿의 결과를 임시로 저장할지 여부를 결정합니다. 결과를 캐시하려면 TRUE로 지정합니다.output_table_name
(string) - cache_results = TRUE인 경우 템플릿 결과가 저장되는 Snowflake 테이블의 이름을 지정합니다.jinja_output_table_param
(string) - cache_results = TRUE인 경우 output_table_name에 저장된 결과를 수락하기 위해 다른 템플릿이 포함해야 하는 Jinja 매개 변수의 이름을 지정합니다.cache_expiration_hours
(integer) - cache_results = TRUE인 경우 캐시의 결과가 삭제될 때까지 걸리는 시간을 지정합니다. 캐시가 만료되면 다음에 템플릿 체인이 실행될 때 캐시가 템플릿 결과로 새로 고쳐집니다.
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.add_template_chain(
'collab_clean_room',
'my_chain',
[
{
'template_name': 'crosswalk',
'cache_results': True,
'output_table_name': 'crosswalk',
'jinja_output_table_param': 'crosswalk_table_name',
'cache_expiration_hours': 2190
},
{
'template_name': 'transaction_insights',
'cache_results': False
}
]
);
provider.view_added_template_chains¶
설명: 클린룸에서 현재 활성화된 템플릿 체인을 봅니다.
입력: cleanroom_name (string)
출력: The added template chains (table)
예제:
call samooha_by_snowflake_local_db.provider.view_added_template_chains($cleanroom_name);
provider.view_template_chain_definition¶
설명: 템플릿 체인의 특성을 반환합니다.
입력: cleanroom_name (string), template_chain_name (string)
출력: The template chain definition (string)
예제:
call samooha_by_snowflake_local_db.provider.view_template_chain_definition($cleanroom_name, 'insights_chain');
provider.clear_template_chain¶
설명: 클린룸에서 지정된 템플릿 체인(이름으로 참조됨)을 제거합니다.
입력: cleanroom_name(string), template_chain_name(string)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.clear_template_chain($cleanroom_name, 'insights_chain');
provider.clear_all_template_chains¶
설명: 클린룸에 추가된 모든 템플릿 체인을 제거합니다.
입력: cleanroom_name(string)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.clear_all_template_chains($cleanroom_name);
클린룸 생성자로 분석 실행하기¶
provider.submit_analysis_request¶
설명: 클린룸 공급자로 분석을 실행하려면 분석 요청을 제출해야 합니다. 이러한 분석 요청은 클린룸으로 전달되어 컨슈머의 보안 정책과 일치하는지 검사됩니다. 보안 검사와 차등 개인정보 보호 계층을 통해 분석이 진행되면 분석은 클린룸에서 실행되고 그 결과는 클린룸 내부에 안전하게 저장됩니다.
공급자가 분석을 실행할 수 있도록 하면 공급자만 알고 있는 암호화 키가 클린룸에 추가됩니다. 이 키는 분석 결과를 암호화하는 데 사용되며, 이후 공급자 테넌트로 다시 전송된 후 보안 키를 사용하여 암호를 해독합니다. 이를 통해 공급자가 요청한 분석 결과를 공급자 이외의 어떠한 사용자도 볼 수 없도록 보장합니다.
입력: cleanroom_name (string), consumer_account_locator (string), template_name (string), consumer_tables (array), provider_tables (array), analysis_arguments (object)
출력: 요청 ID(문자열)
예제:
call samooha_by_snowflake_local_db.provider.submit_analysis_request(
$cleanroom_name,
'<CONSUMER_ACCOUNT>',
'prod_overlap_analysis',
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
object_construct(
'dimensions', ['c.REGION_CODE'],
'measure_type', ['AVG'],
'measure_column', ['c.DAYS_ACTIVE']
));
-- This API returns a request ID that we save into a local variable.
set request_id = '<REQUEST_ID';
provider.check_analysis_status¶
설명: 분석 요청이 제출되면 이 API를 사용하여 요청의 상태를 확인합니다. 요청은 제출 후 최대 1분 정도 걸릴 수 있습니다. 완료되면 상태는 COMPLETED로 표시됩니다.
입력: cleanroom_name (string), request_id (string), consumer_account_locator (string)
출력: 상태(문자열)
예제:
-- It can take up to 2 minutes for this to pick up the request ID after the initial request
call samooha_by_snowflake_local_db.provider.check_analysis_status(
$cleanroom_name,
$request_id,
'<CONSUMER_ACCOUNT>'
);
provider.get_analysis_result¶
설명: 주어진 요청 ID에 대한 분석 상태가 COMPLETED로 표시되면, 이 API를 사용하여 request_id에 대한 결과를 얻을 수 있습니다. 결과를 가져와서 분석이 활성화된 동안 계정에서 생성된 시크릿 키로 해독한 다음 분석 결과를 출력합니다.
입력: cleanroom_name (string), request_id (string), consumer_account_locator (string)
출력: 분석 결과(테이블)
예제:
call samooha_by_snowflake_local_db.provider.get_analysis_result(
$cleanroom_name,
$request_id,
'<CONSUMER_ACCOUNT>'
);
클린룸에 Python 코드를 로드하는 함수¶
provider.load_python_into_cleanroom¶
설명: 기밀로 Python 함수를 클린룸에 로드합니다. 이 API를 사용하여 클린룸에 로드된 모든 코드는 컨슈머에게 표시되지 않습니다. 결과 함수는 모든 SQL Jinja 템플릿 내에서 클린룸으로 호출할 수 있습니다.
참고
이 프로시저를 수행하면 Python 코드가 기존 버전에 대한 패치로 클린룸에 추가됩니다. 이렇게 하면 보안 검사가 다시 트리거되며 최신 버전을 공동 작업자에게 공유하기 전에 APPROVED가 될 때까지 기다려야 할 수도 있습니다. 이러한 경우, 최신 버전/패치로 클린룸을 공급자에게 공유하기 전에 provider.set_default_release_directive
를 호출합니다. 자세한 내용은 Snowflake Native App 설명서를 참조하십시오.
입력: cleanroom_name(string), function_name(string), arguments(array), packages(array), ret_type(string), handler(string), code(string)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.load_python_into_cleanroom(
$cleanroom_name,
'assign_group', // Name of the UDF
['data variant', 'index integer'], // Arguments of the UDF, along with their type
['pandas', 'numpy'], // Packages UDF will use
'integer', // Return type of UDF
'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)
$$
);
클린룸 UI 등록 방법¶
다음 명령을 사용하여 사용자 지정 분석이 로드된 클린 룸을 Snowflake 데이터 클린 룸 웹 앱의 사용자 지정 분석 탭 아래에 등록합니다.
provider.add_ui_form_customizations¶
설명:: 컨슈머를 위해 웹 앱에 등록할 클린룸의 UI 양식에 대한 사용자 지정 기능을 추가합니다. 최소한으로, display_name
, 설명
, 방법
에 대한 값을 지정해야 합니다.
허용되는 사용자 지정은 다음과 같습니다.
유형
: 다음 UI 요소 중 하나:부울
: 참/거짓 선택기정수
: 화살표를 사용하여 숫자를 변경다중 선택
: 드롭다운에서 여러 항목을 선택드롭다운
: 드롭다운에서 1개 항목을 선택날짜
: 날짜 선택기임의
: 일반 텍스트 입력 필드
선택
: 드롭다운 및 다중 선택 유형에 사용 가능한 선택 목록기본
: 모든 기본값display_name
(필수): UI 요소의 표시 이름설명
(필수): 이름 아래에 나타나는 설명방법
(필수): 컨슈머가 양식을 사용하여 분석을 실행하는 방법에 대한 설명입니다.infoMessage
: 이름 옆에 있는 “i” 아이콘 위에 마우스를 올려 놓으면 표시되는 정보 메시지크기
:XS
,S
,M
,L
,XL
중에서 요소 크기 선택필수
: 요소가 필수인지 여부를 나타냅니다.TRUE
또는FALSE
를 지정합니다.그룹
: 여러 요소에 동일한 값을 입력하여 UI 형식으로 모두 그룹화합니다.render_table_dropdowns
: 사용자가 테이블을 선택할 수 있는 기본 드롭다운 목록을 템플릿에 표시할지 여부를 제어합니다. 지정하지 않으면 공급자와 컨슈머 테이블 모두에 드롭다운이 표시됩니다. 모든 공급자 또는 모든 컨슈머 테이블로 구성된 드롭다운 목록을 원하지만 목록을 나열하지 않으려면 대신참조
매개 변수를 사용합니다.render_table_dropdowns
의 값은 다음 키로 구성된 사전입니다.render_consumer_table_dropdown
:FALSE
인 경우 컨슈머 테이블의 기본 드롭다운 목록이 숨겨집니다. 기본값은TRUE
입니다.render_provider_table_dropdown
:FALSE
인 경우 공급자 테이블의 기본 드롭다운 목록이 숨겨집니다. 기본값은TRUE
입니다.
기본 드롭다운 목록을 숨기는 경우 사용자 지정 템플릿에서
{{ source_table }}
및{{ my_table}}
특수 인자를 사용한 다음 원하는 테이블이 포함된 자체 드롭다운 목록을 정의할 수 있습니다. 사용자 지정 템플릿을 정의할 때 이러한 특수 변수를 사용하는 것에 대한 자세한 내용은 provider.add_custom_sql_template을 참조하십시오.참조
: 클린룸에서 사용할 수 있는 테이블이나 열이 포함된 드롭다운 목록을 생성합니다. 사용자가 사용자 인터페이스를 생성할 때 각 테이블이나 열을 개별적으로 지정할 필요 없이 웹 앱에서 분석을 실행할 때 테이블과 열을 선택할 수 있도록 허용합니다.가능한 문자열 값은 다음과 같습니다.
PROVIDER_TABLES
: 드롭다운 목록은 클린룸에 있는 모든 공급자의 테이블로 구성됩니다.CONSUMER_TABLES
: 드롭다운 목록은 클린룸 내 모든 컨슈머 테이블로 구성됩니다.PROVIDER_COLUMN_POLICY
: 드롭다운 목록은 공급자의 열 정책에 있는 열(예: 필터링할 수 있는 열)로 구성됩니다. 지정된 경우, 열 정책이 포함된 공급자 테이블을 식별할 수 있도록provider_parent_table_field
매개 변수도 포함시켜야 합니다.PROVIDER_JOIN_POLICY
: 드롭다운 목록은 공급자의 조인 정책에 있는 열, 즉 컨슈머가 조인 키로 사용할 수 있는 공급자 테이블의 열로 구성됩니다. 지정된 경우, 조인 정책이 포함된 공급자 테이블을 식별할 수 있도록provider_parent_table_field
매개 변수도 포함시켜야 합니다.CONSUMER_COLUMNS
: 드롭다운 목록은 컨슈머의 조인 정책에 있는 열, 즉 분석가가 조인 키로 사용할 수 있는 컨슈머 테이블의 열로 구성됩니다. 지정된 경우, 조인 정책이 포함된 컨슈머 테이블을 식별할 수 있도록consumer_parent_table_field
매개 변수도 포함시켜야 합니다.
provider_parent_table_field
: 사용자가 공급자 테이블을 선택할 수 있는 UI 필드의 이름을 지정합니다.참조
매개 변수가PROVIDER_COLUMN_POLICY
또는PROVIDER_JOIN_POLICY
를 지정하는 경우 필요합니다.예를 들어,
a_provider_table
이 분석가가 공급자 테이블을 선택할 수 있는 UI 필드의 이름인 경우, 사용자가 공급자 테이블에서 열을 선택할 수 있는 UI 필드에는 이름/값 페어'provider_parent_table_field': 'a_provider_table'
이 포함될 수 있습니다.consumer_parent_table_field
: 사용자가 공급자 테이블을 선택할 수 있는 UI 필드의 이름을 지정합니다.참조
매개 변수가CONSUMER_COLUMNS
를 지정하는 경우 필요합니다.예를 들어,
a_consumer_table
이 분석가가 컨슈머 테이블을 선택할 수 있는 UI 필드의 이름인 경우, 사용자가 컨슈머 테이블에서 열을 선택할 수 있는 UI 필드에는 이름/값 페어'consumer_parent_table_field': 'a_consumer_table'
이 포함될 수 있습니다.warehouse_hints
: 컨슈머 계정에서 분석을 실행하는 데 사용할 웨어하우스 종류를 제어하는 선택적 사용자 지정입니다. 예를 들어, 대부분의 머신 러닝 사용 사례의 경우 Snowflake는 Snowpark 최적화된 웨어하우스를 지정하는 것을 권장합니다.warehouse_size
에 유효한 값은 CREATE WAREHOUSE를 참조하십시오.
시각적 사용자 지정은 다음과 같습니다.
measure_columns
: 출력에 표시되는 정량적 데이터 요소입니다. 이러한 열에는 자세한 데이터 분석을 위한 매트릭과 차원이 포함됩니다.default_output_type
: 데이터가 시각화되는 형식입니다. 지원되는 데이터 타입:TABLE
: 데이터를 테이블 형식으로 표시합니다. 이 데이터 타입이 기본 출력 형식입니다.BAR
: 여러 카테고리를 비교하는 데 적합한 막대형 차트를 사용하여 데이터를 시각화합니다.LINE
: 선형 차트를 사용하여 시간에 따른 추세나 연속 데이터를 표시합니다.PIE
: 데이터를 원형 차트로 표현하여 비율이나 백분율을 표시하는 데 적합합니다.
입력: template name (string), template_description (dict), customizations (dict), output_config (dict)
출력: 성공 메시지(문자열)
예:
call samooha_by_snowflake_local_db.provider.add_ui_form_customizations(
$cleanroom_name,
'prod_custom_template',
{
'display_name': 'Custom Analysis Template',
'description': 'Use custom template to run a customized analysis.',
'methodology': 'This custom template dynamically renders a form for you to fill out, which are then used to generate a customized analysis fitting your request.',
'warehouse_hints': {
'warehouse_size': 'xsmall',
'snowpark_optimized': FALSE
},
'render_table_dropdowns': {
'render_consumer_table_dropdown': false,
'render_provider_table_dropdown': false
}
},
{
'a_provider_table': {
'display_name': 'Provider table',
'order': 3,
'description': 'Provider table selection',
'size': 'S',
'group': 'Seed Audience Selection',
'references': ['PROVIDER_TABLES'],
'type': 'dropdown'
},
'a_provider_col': {
'display_name': 'Provider column',
'order': 4,
'description': 'Which col do you want to count on',
'size': 'S',
'group': 'Seed Audience Selection',
'references': ['PROVIDER_COLUMN_POLICY'],
'provider_parent_table_field': 'a_provider_table',
'type': 'dropdown'
}
},
{
'measure_columns': ['col1', 'col2'],
'default_output_type': 'PIE'
}
);
provider.register_cleanroom_in_ui¶
설명: 컨슈머가 웹 앱에서 사용할 수 있는 클린룸을 등록합니다. 클린룸은 공급자가 개발자 APIs를 사용하여 생성하고 구성합니다. 이 메서드를 사용하면 컨슈머가 웹 앱에 등록하여 설치한 후 테이블을 추가하고 개발자 APIs를 사용할 필요 없이 추가한 사용자 지정 분석을 실행할 수 있습니다. 웹 앱의 사용자 인터페이스를 통해 전적으로 클린룸에서 작업합니다.
이 API를 두 번 이상 호출하여 웹 앱에 여러 사용자 지정 템플릿을 포함시킬 수 있습니다.
입력: cleanroom_name(string), template name(string), consumer_account_locator(string), user_email(string)
출력: 성공 메시지(문자열)
예:
call samooha_by_snowflake_local_db.provider.register_cleanroom_in_ui($cleanroom_name, 'prod_custom_template', <CONSUMER ACCOUNT LOCATOR>, <USER_EMAIL>)
provider.view_ui_registration_request_log¶
설명: 웹 앱에 클린룸을 등록하기 위해 계정에서 발생한 요청 목록을 봅니다. 각 요청에는 view_ui_registration_log
프로시저와 함께 사용하여 요청의 상태를 볼 수 있는 관련 ID가 있습니다. 요청은 백엔드로 공유되어 처리되고 클린룸이 클린룸에 추가됩니다.
입력:
출력: 성공 메시지(문자열)
예:
call samooha_by_snowflake_local_db.provider.view_ui_registration_request_log();
클린룸 메타데이터 getter 메서드¶
다음 명령을 사용하여 클린룸의 관련 속성을 표시합니다.
provider.describe_cleanroom¶
설명: 템플릿, 데이터 세트, 정책을 비롯하여 클린룸에 추가된 항목에 대한 모든 정보가 포함된 텍스트 요약을 만듭니다.
입력: cleanroom_name(string)
출력: 클린룸의 광범위한 설명 문자열(테이블)
예제:
call samooha_by_snowflake_local_db.provider.describe_cleanroom($cleanroom_name);
provider.view_provider_datasets¶
설명: 클린룸에 추가된 모든 데이터 세트를 봅니다.
입력: cleanroom_name(string)
출력: 클린룸의 모든 공급자 데이터 세트 이름(테이블)
예제:
call samooha_by_snowflake_local_db.provider.view_provider_datasets($cleanroom_name);
provider.view_join_policy¶
설명: 클린룸에서 현재 활성화된 조인 정책을 봅니다.
입력: cleanroom_name (string)
출력: 조인 정책(테이블)
예제:
call samooha_by_snowflake_local_db.provider.view_join_policy($cleanroom_name);
provider.view_added_templates¶
설명: 클린룸에서 현재 활성화된 템플릿을 봅니다.
입력: cleanroom_name (string)
출력: 추가된 템플릿(테이블)
예제:
call samooha_by_snowflake_local_db.provider.view_added_templates($cleanroom_name);
provider.view_column_policy¶
설명: 클린룸에서 현재 활성화된 열 정책을 봅니다.
입력: cleanroom_name (string)
출력: 열 정책(테이블)
예제:
call samooha_by_snowflake_local_db.provider.view_column_policy($cleanroom_name);
provider.view_consumers¶
설명: 클린룸을 공유한 컨슈머를 봅니다.
입력: cleanroom_name (string)
출력: 클린룸에 액세스할 수 있는 컨슈머 계정(테이블)
예제:
call samooha_by_snowflake_local_db.provider.view_consumers($cleanroom_name);
provider.view_cleanrooms¶
설명: 최근에 생성된 모든 클린룸을 생성된 날짜별로 정렬하여 표시합니다.
입력:
출력: 생성 날짜별로 정렬된 모든 기존 클린룸(테이블)
예제:
call samooha_by_snowflake_local_db.provider.view_cleanrooms();
provider.view_request_logs¶
설명: 이 클린룸 컨슈머로부터 전송된 요청 로그를 확인합니다.
입력: cleanroom_name (string)
출력: 클린룸에 대해 실행된 쿼리의 기록된 로그 세트(테이블)
예제:
call samooha_by_snowflake_local_db.provider.view_request_logs($cleanroom_name);
일반 도우미 메서드¶
다음 방법을 사용하면 일반적으로 클린룸 기능과 지원되는 흐름을 활용하는 데 도움이 됩니다.
provider.grant_reference_usage¶
설명: 데이터가 포함된 업스트림 데이터베이스에 클린룸에 대한 reference_usage 권한을 부여할 수 있습니다.
참고
이 명령은 웹 앱에서만 사용됩니다.
이는 register_db
의 권한 부여보다 훨씬 더 제한적인 권한 부여입니다. 이 프로시저를 사용하면 업스트림 데이터베이스의 데이터를 참조하는 뷰 또는 UDTFs를 추가할 때 필요하지만, SAMOOHA_APP_ROLE 역할이 실제 테이블을 보거나 웹 앱의 드롭다운에 이러한 데이터베이스를 표시할 수 없습니다.
이 명령은 연결된 뷰 및 UDTFs에서 사용되는 데이터가 포함된 데이터베이스에서 호출해야 합니다.
입력: database_names (array)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.grant_reference_usage(['<DATABASE_NAME>']);
provider.revoke_reference_usage¶
설명: 공급자가 생성한 참조 데이터베이스 목록에서 데이터베이스를 provider.grant_reference_usage
에서 제거합니다.
참고
이 명령은 웹 앱에서만 사용됩니다.
입력: database_names (array)
출력: 성공 메시지(문자열)
예제:
call samooha_by_snowflake_local_db.provider.revoke_reference_usage(['<DATABASE_NAME>']);
provider.mount_request_logs_for_all_consumers¶
설명: 공급자가 클린룸의 컨슈머로부터 공급자에게 반환되는 정보에 액세스할 수 있습니다.
입력: cleanroom_name (string)
출력: 성공 메시지(문자열)
예제:
CALL samooha_by_snowflake_local_db.provider.mount_request_logs_for_all_consumers($cleanroom_name);
library.enable_local_db_auto_upgrades¶
설명: 새 버전이 릴리스될 때 Snowflake Data Clean Rooms용 Snowflake Native App을 자동으로 업그레이드하는 작업 samooha_by_snowflake_local_db.admin.expected_version_task
를 활성화합니다.
입력: None
출력: 성공 메시지(문자열)
예제:
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
를 비활성화합니다.
입력: None
출력: 성공 메시지(문자열)
예제:
CALL samooha_by_snowflake_local_db.library.disable_local_db_auto_upgrades();