Snowflake Data Clean Rooms: 공급자 API 참조 가이드¶
개요¶
이 참조 가이드에는 공급자가 클린룸을 생성, 구성 및 공유할 수 있는 클린룸 API의 저장 프로시저가 나열되어 있습니다.
프로시저는 다음 스키마 안에 존재합니다.
samooha_by_snowflake_local_db.provider
- 공급자별 프로시저. 이러한 프로시저는 현재 계정에서 생성한 클린룸에서만 호출할 수 있습니다.samooha_by_snowflake_local_db.consumer
- 컨슈머 전용 프로시저. 이러한 프로시저는 현재 계정이 컨슈머로 초대된 클린룸에서만 호출할 수 있습니다.samooha_by_snowflake_local_db.library
- 클린룸 생성자(공급자) 또는 클린룸 공동 작업자(컨슈머)가 호출하는 일반 프로시저입니다.
이러한 프로시저는 노트북, 통합 문서 및 [CLI](/개발자 가이드/snowflake-cli/index) 등 Snowflake 프로시저를 지원하는 모든 명령줄 환경에서 액세스할 수 있습니다.
요구 사항¶
API 에는 samooha_app_role
역할과 app_wh
웨어하우스가 필수입니다. 여기에 설명된 프로시저를 사용하기 전에 다음 명령을 실행하십시오.
USE ROLE samooha_app_role;
USE WAREHOUSE app_wh;
SAMOOHA_APP_ROLE 역할이 없는 경우 계정 관리자에게 문의하십시오.
클린룸 생성, 구성 및 삭제¶
provider.view_cleanrooms¶
설명: 이 공급자 계정으로 생성한 모든 기존 클린룸 목록을 표시합니다.
인자: 없음
반환: (table) 이 공급자 계정에서 생성한 클린룸 목록입니다. 클린룸은 컨슈머에게 공유하거나 설치하거나 사용할 필요가 없습니다. 삭제된 클린룸은 데이터베이스에서 삭제되며 이 목록에 표시되지 않습니다.
예:
call samooha_by_snowflake_local_db.provider.view_cleanrooms();
provider.describe_cleanroom¶
설명: 템플릿, 조인 정책, 열 정책, 컨슈머 등 클린룸에 대한 정보 요약을 확인하십시오.
인자:
cleanroom_name (string) - 정보를 얻을 클린룸의 이름입니다.
반환값:(string) 클린룸 메타데이터 요약입니다.
예:
call samooha_by_snowflake_local_db.provider.describe_cleanroom($cleanroom_name);
provider.cleanroom_init¶
설명: 계정에 지정된 이름의 클린룸을 만듭니다. 이 프로시저는 실행하는 데 1분 이상 걸릴 수 있습니다. 클린룸은 웹 앱이나 공동 작업자에게 create_or_update_cleanroom_listing
을 호출하기 전까지는 표시되지 않습니다.
인자:
cleanroom_name (string) - 클린룸 이름, 최대 80자. 이름에는 [A‑Z,a‑z,0‑9, ,_]가 포함됩니다.
배포(문자열, 선택 사항) - 다음 값 중 하나입니다.
INTERNAL (기본값) - 클린룸은 같은 조직에 속한 사용자에게만 표시되며 [기본 버전 변경](#공급자 설정-기본 릴리스 지시어) 전에는 보안 검사를 트리거하지 않습니다.
EXTERNAL - 클린룸은 생산 준비가 완료된 상태이며 조직 외부에서 공유할 수 있습니다. 클린룸은 [기본 버전 변경](#공급자 설정-기본 릴리스 지시어) 전에 보안 검사를 트리거합니다. 클린룸을 생성한 후 배포를 변경하려면 여기에 표시된 대로
alter package
를 호출하십시오.alter application package samooha_cleanroom_<CLEANROOM_ID> SET DISTRIBUTION = EXTERNAL;
반환: (string) 성공 또는 실패 메시지.
예:
-- Create an internal clean room
call samooha_by_snowflake_local_db.provider.cleanroom_init($cleanroom_name, 'INTERNAL');
provider.set_default_release_directive¶
설명: 공동 작업자가 웹 앱에서 새 브라우저 세션을 시작하거나 API 에서 클린룸에 액세스할 때 로딩되는 클린룸의 버전 및 패치를 지정합니다. 클린룸을 컨슈머와 공유하기 전에 반드시 호출해야 합니다.
클린룸 애플리케이션은 Python 코드를 업로드하거나 변경할 때마다 클린룸의 새 버전을 생성합니다. 사용자에게 최신 버전을 제공하려면 새 버전 번호와 함께 이 프로시저를 호출하십시오. 사용 가능한 버전을 확인하고 현재 기본 버전을 알아보려면 실행하십시오.
show versions in application package samooha_cleanroom_<CLEANROOM_ID>;
모든 클린룸은 다음 버전과 패치 번호로 생성됩니다.
버전: V1_0
패치: 0
참고
클린룸 배포가 EXTERNAL 로 설정된 경우 이 프로시저는 클린룸 보안 스캔이 APPROVED 상태로 이동한 후에만 호출할 수 있습니다. 보안 상태를 확인하려면 view_cleanroom_scan_status
를 호출합니다.
인자:
cleanroom_name (string) - 클린룸 이름입니다.
version (string) - 버전. 항상 “V1_0”이어야 합니다.
patch (string) - 컨슈머가 로딩한 패치 번호입니다. 이 값은 0에서 시작하며, 새로운 클린룸 버전이 가용성을 확보할 때마다 증가시켜야 합니다. 위에서 설명한 대로 사용 가능한 버전을 확인할 수 있습니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.set_default_release_directive($cleanroom_name, 'V1_0', '0');
provider.drop_cleanroom¶
설명: 클린룸을 삭제합니다. 클린룸이 설치된 공동 작업자는 더 이상 클린룸에 액세스하거나 사용할 수 없습니다. 클린룸은 다음에 브라우저를 새로 고칠 때 웹 앱에 더 이상 표시되지 않습니다.
인자:
cleanroom_name (string) - 삭제할 클린룸의 이름입니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.drop_cleanroom($cleanroom_name);
provider.enable_consumer_run_analysis¶
설명: 컨슈머가 클린룸에서 분석을 실행할 수 있습니다. 이 기능은 모든 새 클린룸에서 기본적으로 활성화되어 있으므로 클린룸에 대한 컨슈머 실행 분석을 명시적으로 비활성화한 경우에만 이 프로시저를 실행하면 됩니다.
중요
이 프로시저는 컨슈머가 클린룸을 설치하기 전에 호출해야 합니다. 클린룸을 설치한 후 이 기능을 변경하는 경우 새 구성을 반영하도록 클린룸을 다시 설치해야 합니다.
인자:
cleanroom_name (string) - 컨슈머가 운영하는 분석이 허용되는 클린룸의 이름입니다.
consumer_accounts (array of strings) - 이 기능을 활성화할 모든 컨슈머의 계정 찾기. 참고: 이 컨슈머는 이미 클린룸에 추가되어 있어야 합니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.enable_consumer_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR_1>']);
provider.disable_consumer_run_analysis¶
설명: 지정된 컨슈머가 지정된 클린룸에서 분석을 실행하지 못하도록 합니다. 기본적으로 모든 컨슈머는 클린룸에서 분석을 실행할 수 있습니다.
중요
이 프로시저는 컨슈머가 클린룸을 설치하기 전에 호출해야 합니다. 컨슈머가 이미 클린룸을 설치한 후에 이를 변경하는 경우, 새로운 구성을 반영하기 위해 클린룸을 다시 설치해야 합니다.
인자:
cleanroom_name (string) - 컨슈머가 실행하는 분석이 비활성화된 클린룸입니다.
consumer_accounts (array of strings) - 이 클린룸에서 분석을 실행할 수 없는 컨슈머의 계정 찾기. 참고: 이 컨슈머는 이미 클린룸에 추가되어 있어야 합니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.disable_consumer_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR_1>']);
library.is_consumer_run_enabled¶
설명: 이 클린룸에서 컨슈머 분석이 가능한지 확인합니다.
인자:
cleanroom_name (string) - 확인할 클린룸의 이름입니다.
반환값:(string) 이 클린룸이 컨슈머 분석을 허용하는지 여부.
예:
call samooha_by_snowflake_local_db.library.is_consumer_run_enabled($cleanroom_name)
provider.create_or_update_cleanroom_listing¶
설명: 새 클린룸을 게시하거나 기존 클린룸을 업데이트합니다. 클린룸을 변경할 때마다 이 메서드를 호출하여 변경 사항이 컨슈머에게 전파되도록 해야 합니다.
클린룸을 처음 게시하는 경우 클린룸이 웹 앱에 표시되는 데 시간이 걸릴 수 있습니다(최대 15분).
나중에 이 메서드를 호출하지 않고 클린룸을 업데이트하면 변경 사항이 컨슈머에게 전파된다는 보장이 없습니다.
참고
이 프로시저를 호출하기 전에 릴리스 지시어를 한 번 이상 설정해야 합니다. 자세한 내용은 provider.set_default_release_directive를 참조하십시오.
인자:
cleanroom_name (string) - 게시하거나 업데이트할 클린룸의 이름입니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.create_or_update_cleanroom_listing($cleanroom_name);
provider.add_ui_form_customizations¶
설명: 웹 앱에서 액세스할 때 클린룸의 템플릿에 대한 UI 를 정의합니다. 이는 컨슈머가 테이블이나 열과 같은 템플릿 매개 변수를 선택할 수 있도록 허용할 때 유용합니다. 최소한 template_information 인자에 display_name, description, methodology 에 대한 값을 지정해야 합니다.
인자:
cleanroom_name (string): 이 템플릿이 포함된 클린룸의 이름입니다. 제출된 양식은 지정된 클린룸의 지정된 템플릿에만 적용됩니다.
template_name (string): UI 가 적용되는 템플릿의 이름입니다. 이는 template_information.display_name 필드를 사용하여 지정하는 사용자가 볼 수 있는 제목이 아닙니다.
template_information(딕셔너리): UI 에서 사용자에게 표시되는 정보. 다음 필드를 포함합니다.
display_name
(필수): 웹 앱에서 템플릿의 표시 이름입니다.설명
(필수): 템플릿에 대한 설명입니다.방법론
(필수): 컨슈머가 분석을 실행하기 위해 양식을 어떻게 사용해야 하는지에 대한 설명입니다.warehouse_hints
(object): 분석을 실행하는 데 사용할 웨어하우스 유형을 추천합니다. 다음 필드가 있는 오브젝트입니다.warehouse_size
: 유효한 값은 CREATE WAREHOUSE의 warehouse_size 섹션을 참조하십시오.snowpark_optimized
(boolean): 쿼리 처리를 위해 Snowpark-optimized warehouse를 사용할지 여부입니다. 대부분의 머신 러닝 사용 사례에 대해 Snowflake는 TRUE 를 권장합니다.
render_table_dropdowns
(object): 사용자가 쿼리에 사용할 공급자 및/또는 컨슈머 테이블을 선택할 수 있는 기본 드롭다운 목록을 표시할지 여부입니다. 다음 필드가 있는 오브젝트입니다.render_consumer_table_dropdown
: (부울, 기본값 = TRUE) TRUE 인 경우, 기본 컨슈머 테이블 선택기를 표시합니다. FALSE 인 경우 컨슈머 테이블 선택기를 숨깁니다. 템플릿은my_table
템플릿 변수를 사용하여 선택한 값에 목록으로 액세스할 수 있습니다.render_provider_table_dropdown
: (부울, 기본값 = TRUE) TRUE 인 경우, 기본 공급자 테이블 선택기를 표시합니다. FALSE 인 경우 공급자 테이블 선택기를 숨깁니다. 템플릿은source_table
템플릿 변수를 사용하여 선택한 값에 목록으로 액세스할 수 있습니다.
세부 정보(딕셔너리) : 템플릿에 값을 전달하는 사용자 구성 가능한 입력 필드를 정의합니다. 이는 키/오브젝트 쌍의 사전으로, 각 쌍은 사용자가 구성할 수 있는 UI 요소를 하나씩 나타냅니다. 키는 JinjaSQL 템플릿에 변수로 노출되는 임의의 문자열 이름입니다. 값은 UI 요소를 정의하는 오브젝트입니다. 각 오브젝트에는 다음과 같은 필드가 있습니다.
<field_name>: { 'display_name': <string>, 'description': <string>, 'methodology': <string>, ['type': <enum>,] ['default': <value>,] ['choices': <string array>,] ['infoMessage': <string>,] ['size': <enum>] ['required': <bool>,] ['group': <string>,] ['references': <enum>] ['provider_parent_table_field': <string>,] ['consumer_parent_table_field': <string>] }
display_name
(필수): UI 요소의 표시 이름설명
(필수): 이름 아래에 나타나는 설명방법론
(필수): 컨슈머가 분석을 실행하기 위해 양식을 사용해야 하는 방법에 대한 설명유형
: UI 요소의 유형입니다. 참조 가 입력 필드에 지정된 경우 이 항목을 생략합니다(유형은 자동으로 결정됨). 지원되는 값:모두
(기본값): 일반 텍스트 입력 필드입니다.boolean
: True/False 선택기정수
: 화살표를 사용하여 숫자를 변경multiselect
: 드롭다운 목록에서 여러 항목을 선택합니다.dropdown
: 드롭다운 목록에서 하나의 항목을 선택합니다날짜
: 날짜 선택기
기본값
: 이 요소의 기본값입니다choices
: (array of strings) dropdown 및 multiselect 요소에 대한 선택 목록정보 메시지
: 요소 옆에 표시되는 정보성 후버 텍스트크기
: 요소 크기입니다. 지원되는 값:XS
,S
,M
,L
,XL
필수
: 사용자가 값을 요구하는지 여부. TRUE 또는 FALSE 를 지정합니다.그룹
: UI 에 있는 항목을 그룹화하는 데 사용되는 그룹 이름입니다. UI 에서 함께 그룹화해야 하는 항목에는 동일한 그룹 이름을 사용합니다. 기본 드롭다운 목록을 숨기려면 사용자 정의 템플릿에서{{ source_table }}
및{{ my_table}}
특수 인자를 사용한 후 원하는 테이블이 포함된 자체 드롭다운 목록을 정의할 수 있습니다. 사용자 지정 템플릿을 정의할 때 이러한 특수 변수를 사용하는 방법에 대한 자세한 내용은 provider.add_custom_sql_template 섹션을 참조하십시오.references
: 클린룸에서 사용 가능한 테이블이나 열을 미리 알고 있거나 개별적으로 나열할 필요 없이 드롭다운 목록을 생성합니다. 사용하는 경우 유형 은 “multiselect” 또는 “dropdown”이어야 합니다. 지원되는 문자열 값은 다음과 같습니다.PROVIDER_TABLES
: 사용자가 액세스할 수 있는 클린 룸의 모든 공급자에 대한 테이블 드롭다운 목록입니다.PROVIDER_JOIN_POLICY
:provider_parent_table_field
에 지정된 공급자 테이블에서 조인할 수 있는 모든 열의 드롭다운 목록입니다.PROVIDER_COLUMN_POLICY
:provider_parent_table_field
에 지정된 공급자 테이블에 열 정책이 있는 모든 열의 드롭다운 목록입니다.CONSUMER_TABLES
: 사용자가 액세스 할 수 있는 클린 룸의 모든 컨슈머 테이블의 드롭다운 목록입니다.CONSUMER_COLUMNS
: 사용자가 액세스할 수 있는 consumer_parent_table_field 에 지정된 컨슈머 테이블의 모든 열의 드롭다운 목록입니다. 공급자가 실행하는 템플릿에서는 컨슈머가 조인 및 열 정책을 적용하여 열에 대한 정책이 준수되지 않을 때 쿼리가 실패할 수 있으므로 컨슈머 열 참조를 사용해서는 안 됩니다.CONSUMER_JOIN_POLICY
:consumer_parent_table_field
에 지정된 컨슈머 테이블에서 조인할 수 있는 모든 열의 드롭다운 목록입니다.CONSUMER_COLUMN_POLICY
:consumer_parent_table_field
에 지정된 컨슈머 테이블에 열 정책이 있는 모든 열의 드롭다운 목록입니다.
provider_parent_table_field
: 사용자가 공급자 테이블을 선택하는 UI 요소의 이름을 지정합니다(여기에는 테이블 이름 자체를 제공하지 마십시오). 참조 가PROVIDER_COLUMN_POLICY
또는PROVIDER_JOIN_POLICY
로 설정된 경우에만 사용하십시오.consumer_parent_table_field
: 사용자가 컨슈머 테이블을 선택하는 UI 요소의 이름을 지정합니다(여기에는 테이블 이름 자체를 제공하지 마십시오). 참조 가CONSUMER_COLUMNS
,CONSUMER_JOIN_POLICY
또는CONSUMER_COLUMN_POLICY
로 설정된 경우에만 사용하십시오.
output_config(Dict) 웹 애플리케이션에서 템플릿 결과를 그래픽으로 표시하는 방법을 정의합니다. 공급자가 제공하지 않으면 결과가 그래프로 표시되지 않고 테이블로만 표시됩니다. 그래프를 원하지 않는 경우 이 인자에 빈 오브젝트 {}를 제공하십시오. 허용된 필드:
measure_columns
: 웹 애플리케이션에서 생성된 그래프에서 사용할 측정값 및 차원이 포함된 열의 이름입니다.default_output_type
: 결과를 표시할 기본 형식입니다. 사용자는 일반적으로 데이터가 적절한 형식인 경우 UI 에서 표시 형식을 변경할 수 있습니다. 지원되는 데이터 타입:TABLE
: (기본값) 테이블 형식BAR
: 다양한 카테고리를 비교하기에 좋은 막대 차트LINE
: 시간 경과에 따른 추세 또는 연속 데이터를 표시하는 데 좋은 꺾은선형 차트PIE
: 비율 또는 백분율을 표시하는 데 적합한 원형 차트
반환: (string) 성공 또는 실패 메시지.
예:
-- Specify the display name, description, and warehouse, and hide the default table dropdown lists.
-- Define the following two fields in the UI:
-- A provider table selector that shows all provider tables. Chosen tables can be accessed by the template with the variable 'a_provider_table'
-- (This dropdown list is equivalent to setting `render_table_dropdowns.render_provider_table_dropdown: True`)
-- A column selector for the tables chosen in 'a_provider_table'. Chosen columns can be accessed by the template with the variable 'a_provider_col'
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
},
'activation_template_name': 'activation_my_template',
'enabled_activations': ['consumer', 'provider']
},
{
'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_db¶
설명: 이 클린룸 환경에서 데이터베이스와 그 안의 모든 오브젝트를 개별 클린룸에 링크할 수 있습니다. 이 프로시저는 클린룸 환경에서 데이터에 액세스하는 데 사용되는 SAMOOHA_APP_ROLE 에 데이터베이스에 대한 USAGE 및 SELECT 권한을 부여합니다.
이 프로시저를 호출하려면 데이터베이스에 MANAGE GRANTS 액세스 권한이 있어야 합니다. 그러면 이 클린룸 환경의 다른 공급자는 SELECT 권한이 없이도 이러한 오브젝트를 자신의 클린룸에 링크할 수 있습니다.
중요
이 프로시저는 호출된 후에 생성된 오브젝트를 등록하지 않습니다. 데이터베이스에 새 오브젝트가 추가되어 해당 오브젝트도 등록하려면 이 프로시저를 다시 호출해야 합니다.
인자:
db_name (string) - 등록할 데이터베이스의 이름입니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.register_db('SAMOOHA_SAMPLE_DATABASE');
library.register_schema¶
설명: register_db
와 유사하지만, 스키마 수준에서 작동합니다. 이 프로시저를 호출하려면 스키마에 대한 MANAGE GRANTS 권한이 있어야 합니다.
이 프로시저는 클린룸 환경에서 데이터에 액세스하는 데 사용되는 SAMOOHA_APP_ROLE 에 스키마에 대한 USAGE 및 SELECT 권한을 부여합니다.
관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)를 등록하려면 library.register_managed_access_schema
를 대신 사용합니다.
중요
이 프로시저는 호출된 후에 생성된 오브젝트를 등록하지 않습니다. 데이터베이스에 새 오브젝트가 추가되어 해당 오브젝트도 등록하려면 이 프로시저를 다시 호출해야 합니다.
인자:
schema_name (array of strings) - 등록할 하나 이상의 정규화된 스키마 이름의 배열입니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.library.register_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
library.register_managed_access_schema¶
설명: register_schema
와 유사하지만, WITH MANAGED ACCESS 매개 변수를 사용하여 생성한 스키마를 등록합니다. 이 프로시저를 호출하려면 스키마에 대한 MANAGE GRANTS 권한이 있어야 합니다.
이 프로시저는 클린룸 환경에서 데이터에 액세스하는 데 사용되는 SAMOOHA_APP_ROLE 에 관리 스키마에 대한 사용 권한을 부여합니다.
중요
이 프로시저는 호출된 후에 생성된 오브젝트를 등록하지 않습니다. 데이터베이스에 새 오브젝트가 추가되어 해당 오브젝트도 등록하려면 이 프로시저를 다시 호출해야 합니다.
인자:
schema_name (array of strings) - 하나 이상의 정규화된 스키마 이름의 배열입니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.library.register_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
library.register_objects¶
설명: 클린룸에 모든 유형의 테이블 및 뷰에 대한 액세스 권한을 부여하여 provider.link_datasets
를 호출하여 클린룸에 연결할 수 있도록 합니다. library.register_schema
, library.register_managed_access_schema
또는 provider.register_db
를 호출하여 더 광범위한 오브젝트 그룹을 등록할 수 있습니다.
이 프로시저는 클린룸 환경에서 데이터에 액세스하는 데 사용되는 SAMOOHA_APP_ROLE 에 오브젝트에 대한 사용 권한을 부여합니다.
이 프로시저를 호출하려면 오브젝트에 대한 MANAGE GRANTS 권한이 있어야 합니다. 이 프로시저는 데이터베이스를 등록하는 데 사용할 수 없습니다.
인자:
object_names (array) - 정규화된 오브젝트 이름의 배열입니다. 그런 다음 이러한 오브젝트를 클린룸에 연결할 수 있습니다.
반환: (string) 성공 또는 실패 메시지.
예
테이블과 뷰를 등록하려면 다음을 수행합니다.
call samooha_by_snowflake_local_db.library.register_objects(
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS','SAMOOHA_SAMPLE_DATABASE.INFORMATION_SCHEMA.FIELDS']);
library.unregister_db¶
설명: register_db
프로시저를 되돌리고 SAMOOHA_APP_ROLE 역할 및 Snowflake Data Clean Room 기본 애플리케이션에 부여된 데이터베이스 수준 부여를 제거합니다. 이렇게 하면 웹 앱의 선택기에서 데이터베이스도 제거됩니다.
인자:
db_name (string) - 등록을 취소할 데이터베이스의 이름입니다.
반환: (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) - 등록을 취소할 스키마입니다.
반환: (string) 성공 또는 실패 메시지.
예:
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) 성공 또는 실패 메시지.
예
테이블 및 뷰 등록을 취소하려면 다음을 수행합니다.
call samooha_by_snowflake_local_db.library.unregister_objects(
['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS','SAMOOHA_SAMPLE_DATABASE.INFORMATION_SCHEMA.FIELDS']);
링크 데이터 및 테이블¶
다음 명령을 사용하여 클린룸에서 테이블과 뷰를 추가하거나 제거할 수 있습니다.
provider.view_provider_datasets¶
설명: 클린룸에 추가된 모든 데이터 세트을 봅니다.
인자:
cleanroom_name (string) - 클린룸 이름입니다.
반환: (table) 이 클린룸에 있는 공급자 데이터 세트의 목록입니다.
예:
call samooha_by_snowflake_local_db.provider.view_provider_datasets($cleanroom_name);
provider.link_datasets¶
설명: Snowflake 테이블 또는 뷰를 클린룸에 링크합니다. 이 프로시저는 클린룸 내에서 테이블의 보안 뷰를 생성하여 클린룸에서 테이블에 자동으로 액세스할 수 있도록 하므로 테이블의 복사본을 만들 필요가 없습니다. 테이블은 여전히 소스에 링크되어 있으므로 소스의 업데이트는 클린룸 내의 보안 버전에 반영됩니다.
여기에 링크된 모든 항목은 데이터베이스, 스키마 또는 오브젝트 수준에서 먼저 등록해야 합니다.
인자:
cleanroom_name (string) - 오브젝트에 액세스할 수 있는 클린룸의 이름입니다.
tables_list (array of strings) - 클린룸에 링크할 테이블 또는 뷰의 목록입니다. 오브젝트를 링크하려면 먼저 등록해야 합니다.
consumer_list(문자열 배열, 선택 사항) - 존재하면 여기에 나열된 컨슈머만 이 오브젝트에 액세스할 수 있도록 허용합니다. 없는 경우 클린룸에 액세스할 수 있는 모든 사용자가 이 데이터에 액세스할 수 있도록 허용합니다.
반환: (string) 성공 또는 실패 메시지.
예:
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.unlink_datasets¶
설명: 모든 사용자의 지정된 클린룸의 지정된 테이블에 대한 액세스 권한을 제거합니다. 지정된 테이블은 공급자가 링크한 것이어야 합니다.
인자:
cleanroom_name (string) - 이 데이터 세트에 링크된 클린룸의 이름입니다.
tables_list (array) - 클린룸에서 연결을 해제할 테이블 또는 뷰 이름의 배열입니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.unlink_datasets($cleanroom_name, ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS', 'SAMOOHA_SAMPLE_DATABASE.DEMO.EXPOSURES']);
provider.view_provider_datasets¶
설명: 이 계정의 모든 공급자가 지정된 클린룸에 링크한 모든 테이블 및 뷰를 볼 수 있습니다.
인자:
cleanroom_name (string) - 클린룸의 이름입니다.
반환: 지정된 클린룸에 연결된 오브젝트 테이블과 각 오브젝트에 대한 클린룸의 내부 뷰 이름입니다.
예:
call samooha_by_snowflake_local_db.provider.view_provider_datasets($cleanroom_name);
provider.restrict_table_options_to_consumers¶
설명: 특정 컨슈머가 클린룸의 테이블에 액세스할 수 있는지 여부를 제어합니다. 이 프로시저는 바꾸기만 하므로 여기에 지정된 사용자만 여기에 나열된 테이블에 액세스할 수 있습니다. provider.link_datasets를 통해 액세스 권한을 부여받은 컨슈머, 이 프로시저에 대한 이전 호출 또는 기타 프로시저는 목록에 없는 경우 여기에 나열된 테이블에 대한 액세스 권한을 잃게 됩니다.
인자:
*cleanroom_name (string)
*access_details(Object) - JSON 오브젝트, 여기서 이름은 테이블 또는 뷰의 정규화된 이름이고 값은 계정 로케이터의 배열입니다.
반환: (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']
}
);
조인 정책 관리하기¶
데이터 클린룸의 조인 정책은 [Snowflake 전체 조인 정책](/사용자 가이드/조인 정책)과 동일하지 않습니다. 클린룸에 대한 조인 정책은 이 프로시저를 통해서만 설정되며, 클린룸 외부의 테이블에 설정된 조인 정책은 클린룸에서 무시됩니다.
provider.view_join_policy¶
설명: 현재 클린룸에 적용된 조인 정책을 표시합니다.
인자:
cleanroom_name (string) - 쿼리할 클린룸의 이름입니다.
반환: (table) 클린룸의 모든 테이블 또는 뷰에서 조인 가능한 행 목록입니다.
예:
call samooha_by_snowflake_local_db.provider.view_join_policy($cleanroom_name);
provider.set_join_policy¶
설명: 이 클린룸 내에서 템플릿을 실행할 때 컨슈머가 조인할 수 있는 열을 지정합니다. 정책은 바꾸기 전용 이므로 프로시저를 다시 호출하면 이전에 설정된 조인 정책이 새 정책으로 완전히 바뀝니다.
중요
조인 정책은 템플릿이 행을 조인하기 위해 join_policy
또는 join_and_column_policy
JinjaSQL 필터를 적용하는 경우에만 적용됩니다.
참고
데이터 클린룸의 조인 정책은 Snowflake 전체 조인 정책과 동일하지 않습니다. 클린룸에 대한 조인 정책은 이 프로시저를 통해서만 설정되며, 클린룸 외부의 테이블에 설정된 조인 정책은 클린룸에서 무시됩니다.
인자:
cleanroom_name (string) - 조인 정책을 적용해야 하는 클린룸의 이름입니다.
table_and_col_names (array of strings) -
database_name.schema_name.table_or_view_name:column_name
형식의 정규화된 열 이름. .과 : 마크의 올바른 사용에 유의하십시오.
반환: (string) 성공 또는 실패 메시지.
예:
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.view_added_templates¶
설명: 클린룸에서 공급자가 추가한 템플릿을 봅니다. 이 공급자의 모든 클린룸에 있는 모든 템플릿을 나열하는 방법은 없습니다.
인자:
cleanroom_name (string) - 쿼리할 클린룸입니다.
반환: (table) - 지정된 클린룸에서 사용 가능한 템플릿 목록과 각 템플릿에 대한 세부 정보입니다.
예:
call samooha_by_snowflake_local_db.provider.view_added_templates($cleanroom_name);
provider.view_template_definition¶
설명: 특정 템플릿에 대한 정보를 표시합니다. 공급자 템플릿을 보는 컨슈머는 consumer.view_template_definition
을 사용해야 합니다.
인자:
cleanroom_name (string) - 이 템플릿이 있는 클린룸의 이름입니다.
template_name (string) - 정보를 요청할 템플릿의 이름입니다.
반환: 템플릿 정의 (string)
예:
call samooha_by_snowflake_local_db.provider.view_template_definition($cleanroom_name, 'prod_overlap_analysis');
provider.add_templates¶
설명: 클린룸에 템플릿 목록을 추가합니다. 기존 템플릿 목록은 대체되지 않습니다.
인자:
cleanroom_name (string) - 템플릿을 추가할 클린룸의 이름입니다.
template_names (array of strings) - 추가할 템플릿의 이름입니다. 이 템플릿은 Snowflake에서 제공하는 템플릿만 해당됩니다. 사용자 지정 템플릿을 추가하려면
add_custom_sql_template
을 호출하십시오. Snowflake에서 제공하는 템플릿 이름에는 “prod_overlap_analysis” 및 “prod_provider_data_analysis”가 있습니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.add_templates($cleanroom_name, ['prod_overlap_analysis']);
provider.clear_template¶
설명: 클린룸에서 지정된 템플릿을 제거합니다.
인자:
cleanroom_name (string) - 클린룸의 이름입니다.
template_name (string) - 해당 클린룸에서 제거할 템플릿의 이름입니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.clear_template($cleanroom_name, 'prod_custom_template');
provider.clear_all_templates¶
설명: 클린룸에 추가된 모든 템플릿을 제거합니다.
인자:
cleanroom_name (string) - 모든 템플릿을 제거할 클린룸의 이름입니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.clear_all_templates($cleanroom_name);
provider.set_column_policy¶
설명: 클린룸에서 지정된 템플릿이 비조인 행으로 사용할 수 있는 데이터의 열을 설정합니다. 클린룸에서 열을 사용하려면 여기 또는 set_join_policy
에서 열을 선언해야 합니다. 여기에 나열된 열은 조인 열을 제외하고 템플릿의 어느 곳에서나 사용할 수 있습니다. 열 정책과 조인 정책 모두에 열을 목록에 올릴 수 없습니다.
기본적으로 테이블의 열 정책은 비어 있으므로 결과에서 열을 볼 수 없습니다.
이 프로시저는 완전 대체 동작이므로 호출될 때마다 이전 열 목록을 완전히 덮어씁니다.
열 정책 검사는 SQL 쿼리를 구문 분석하여 데이터에 대해 실행되는 모든 허용되지 않은 열에 대해 수행됩니다. 와일드카드가 포함된 쿼리는 이러한 검사를 통해 포착되지 않을 수 있으므로 분석 템플릿을 설계할 때 신중을 기해야 합니다. 일부 열은 절대로 쿼리해서는 안 되는 경우, 이러한 민감한 열을 제거한 소스 테이블의 뷰를 만들고 대신 해당 뷰에 링크하는 것을 고려하십시오.
인자:
cleanroom_name (string) - 클린룸의 이름입니다.
analysis_and_table_and_cols (array of strings) - 템플릿에서 사용할 수 있는 열의 배열입니다. 형식은
template_name:full_table_name:column_name
입니다.
반환: (string) 성공 또는 실패 메시지.
예:
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']);
-- Same example, but using a variable name for the template.
call samooha_by_snowflake_local_db.provider.set_column_policy($cleanroom_name,
[$template_name || ':SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:STATUS',
$template_name || ':SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:AGE_BAND',
$template_name || ':SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:DAYS_ACTIVE']);
provider.view_column_policy¶
설명: 현재 클린룸에서 활동 중인 열 정책을 목록으로 표시합니다. 열 정책은 어떤 템플릿에 어떤 테이블 열을 표시할 수 있는지 알려줍니다.
**인자:**cleanroom_name (string)
반환: (table) 어떤 템플릿에서 어떤 열을 사용할 수 있는지입니다.
예:
call samooha_by_snowflake_local_db.provider.view_column_policy($cleanroom_name);
provider.add_custom_sql_template¶
설명: 클린룸에 사용자 지정 JinjaSQL 템플릿을 추가합니다. 이렇게 하면 컨슈머가 템플릿을 호출할 수 있습니다.
이 API를 두 번 이상 호출하여 여러 사용자 지정 템플릿을 클린룸에 추가할 수 있습니다. 이 프로시저는 이 클린룸에서 같은 이름의 이전 템플릿을 덮어씁니다.
컨슈머가 템플릿을 사용하여 공급자에게 결과를 다시 활성화하는 경우, 명령은 다음 요구 사항을 충족해야 합니다.
사용자 정의 템플릿의 이름은
activation
이라는 문자열로 시작해야 합니다. 예를 들어,activation_custom_template
일 수 있습니다.템플릿은
cleanroom.activation_data_
로 시작하는 테이블을 생성해야 합니다. 예를 들어,CREATE TABLE cleanroom.activation_data_analysis_results AS ...
일 수 있습니다.템플릿은 정의에서 생성된 테이블 이름의 고유 부분, 즉
cleanroom.activation_data_
에 추가된 문자열을 반환해야 합니다. 예를 들어,return 'data_analysis_results'
일 수 있습니다.
JinjaSQL 템플릿은 두 개의 전역 변수에 액세스할 수 있습니다.
source_table: 공급자 테이블의 배열입니다. 웹 앱을 사용하여 템플릿을 실행하는 경우, 컨슈머는 웹 양식을 사용하여 템플릿을 선택합니다. 코드에서 템플릿을 실행할 때 provider_tables 인자를 사용하여
consumer.run_analysis
에 전달합니다.my_table: 컨슈머 테이블의 배열입니다. 웹 앱을 사용하여 템플릿을 실행하는 경우, 컨슈머는 웹 양식을 사용하여 템플릿을 선택합니다. 코드에서 템플릿을 실행할 때 consumer_tables 인자를 사용하여
consumer.run_analysis
에 전달합니다.
모든 공급자/컨슈머 테이블은 이러한 인자를 사용하여 참조되어야 합니다. 왜냐하면 클린룸에 실제로 연결된 보안 뷰의 이름이 테이블 이름과 다르기 때문입니다. 중요한 사항으로, 공급자 테이블 별칭은 반드시 p(또는 p1), p2, p3, p4 등이어야 하며, 컨슈머 테이블 별칭은 반드시 c(또는 c1), c2, c3 등이어야 합니다. 이는 클린룸의 보안 정책을 시행하기 위해 필요합니다.
사용자 지정 JinjaSQL 템플릿의 모든 사용자 지정 열은 다음 필터를 사용하여 조인 및 열 정책을 준수하는지 확인해야 합니다.
join_policy: 문자열 값 또는 필터 절이 조인 정책을 준수하는지 확인합니다
column_policy: 문자열 값 또는 필터 절이 칼럼 정책을 준수하는지 확인합니다
join_and_column_policy: 필터 절에서 조인에 사용된 칼럼이 조인 정책을 준수하는지, 필터로 사용된 칼럼이 칼럼 정책을 준수하는지 확인한다
예를 들어, {{ where_clause | sqlsafe | join_and_column_policy }}
절에 where_clause = 'p.HEM = c.HEM and p.STATUS = 1'
을 입력하면 구문 분석되어 p.HEM
이 조인 정책에 있는지, p.STATUS
가 열 정책에 있는지 확인합니다.
참고: sqlsafe 필터는 공동 작업자가 순수한 SQL 을 템플릿에 넣을 수 있으므로 매우 주의해서 사용하십시오.
인자:
cleanroom_name (string) - 이 템플릿이 적용되는 클린룸의 이름입니다.
template_name (string) - 템플릿 이름입니다. 모두 소문자, 숫자, 공백 또는 밑줄이어야 합니다. 활성화 템플릿의 이름은 “활성화”로 시작해야 합니다.
템플릿 (string) - JinjaSQL 템플릿입니다.
민감도(부동 소수점, 선택 사항) - 이 클린룸에 차등 개인정보 보호가 활성화된 경우 이 템플릿이 소비하는 데이터에 적용되는 차등 개인정보 보호 노이즈의 양을 지정합니다. 기본값은 1.0이며 상한은 없습니다. 이 값을 결과에서 단일 행을 제외하여 쿼리가 변경할 수 있는 최대값으로 설정합니다. 이 인자가 효과를 발휘하려면 이 클린룸에서 차등 개인정보 보호를 사용하도록 설정해야 합니다.
consumer_locators(Array of string, 선택 사항) - 하나 이상의 계정 로케이터 배열입니다. 있는 경우 이 템플릿은 해당 계정에 대해서만 클린룸에 추가됩니다. 나중에
provider.restrict_template_options_to_consumers
를 호출하여 이 목록을 수정할 수 있습니다. 컨슈머 목록을 지정하지 않으면 모든 컨슈머가 지정된 클린룸에서 사용자 지정 템플릿을 사용할 수 있습니다.
반환: (string) 성공 또는 실패 메시지.
예:
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¶
설명: 지정된 클린룸에서 지정된 템플릿에 액세스할 수 있는 사용자를 제어합니다. 이 프로시저는 이전에 클린룸/템플릿 쌍에 대해 다른 프로시저에서 지정한 액세스 목록을 재정의합니다.
인자:
cleanroom_name (string) - 클린룸의 이름.
access_details (object) - 템플릿의 이름과 해당 클린룸에서 해당 템플릿에 액세스할 수 있는 사용자입니다. 템플릿을 지정하면 여기에 나열된 사용자만 해당 클린룸에서 해당 템플릿에 액세스할 수 있습니다. 템플릿당 1개의 하위 오브젝트가 있는 오브젝트로,
{'template_name': ['user1_locator','user2_locator','userN_locator']}
형식을 갖습니다.
반환: (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¶
설명: 클린룸에 컨슈머 정의 템플릿을 추가하려는 컨슈머의 모든 요청을 목록으로 표시합니다. 여기에는 보류 중 요청, 승인된 요청, 거부된 요청이 포함됩니다. 이를 사용하여 보류 중인 요청을 확인하고 승인(provider.approve_template_request
)하거나 거부(provider.reject_template_request
)할 수 있습니다.
중요
이 프로시저를 호출하기 전에 클린룸에서 provider.mount_request_logs_for_all_consumers
를 한 번 호출해야 합니다. 두 번 이상 호출할 필요는 없습니다.
인자:
cleanroom_name (string) - 이 클린룸에 템플릿을 추가하려는 컨슈머의 요청을 봅니다.
반환: 다음 값을 포함한 테이블을 반환합니다.
request_id (string) - 요청을 수락하거나 거부하는 데 필요한 요청의 ID - consumer_identifier (string) - 요청을 한 사용자의 계정 찾기. template_name (string) - 컨슈머가 제공한 템플릿의 이름. template_definition (string) - 컨슈머가 제공한 템플릿의 전체 정의. status (string) - 요청의 상태로, PENDING, APPROVED, REJECTED.
예:
call samooha_by_snowflake_local_db.provider.list_template_requests($template_name);
provider.approve_template_request¶
설명: 클린룸에 템플릿을 추가하라는 요청을 승인합니다.
인자:
cleanroom_name (string) - 사용자가 템플릿을 추가하려는 클린룸의 이름입니다.
request_id (string) - 승인할 요청의 ID 입니다.
provider.list_template_requests
를 호출하여 요청 IDs 를 확인합니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.approve_template_request('dcr_cleanroom',
'01b4d41d-0001-b572');
provider.reject_template_request¶
설명: 클린룸에 템플릿을 추가하라는 요청을 거부합니다.
인자:
cleanroom_name (string) - 사용자가 템플릿을 추가하려는 클린룸의 이름입니다.
request_id (string) - 거부할 요청의 ID 입니다.
provider.list_template_requests
를 호출하여 요청 IDs 를 확인합니다.reason_for_rejection (string) - 요청을 거부한 이유입니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.reject_template_request('dcr_cleanroom',
'01b4d41d-0001-b572',
'Failed security assessment');
템플릿 체인¶
템플릿 체인을 생성하고 관리하려면 다음 명령을 사용합니다.
provider.add_template_chain¶
설명: 새 템플릿 체인을 생성합니다. 이전에 존재하는 템플릿만 템플릿 체인에 추가할 수 있습니다. 템플릿 체인이 생성된 후에는 수정할 수 없지만 같은 이름의 새 템플릿 체인을 만들어 이전 템플릿 체인을 덮어쓸 수는 있습니다.
인자:
cleanroom_name (string) - 템플릿 체인을 추가해야 하는 클린룸의 이름입니다.
template_chain_name (string) - 템플릿 체인의 이름입니다.
템플릿(오브젝트 배열) - 템플릿당 하나씩의 오브젝트 배열입니다. 오브젝트에는 다음 필드가 포함될 수 있습니다.
template_name
(string) - 템플릿 체인에 추가할 템플릿을 지정합니다.provider.add_template_chain
을 호출하여 템플릿을 클린룸에 이미 추가해야 합니다.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 인 경우 캐시의 결과가 삭제될 때까지 걸리는 시간을 지정합니다. 캐시가 만료되면 다음에 템플릿 체인이 실행될 때 템플릿의 결과로 캐시가 새로 고쳐집니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.add_template_chain(
$cleanroom_name,
'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) - 클린룸의 이름입니다.
반환: (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) - 이 클린룸과 연결된 템플릿 체인의 이름입니다.
반환: (table) 지정된 템플릿 체인에 대한 설명.
예:
call samooha_by_snowflake_local_db.provider.view_template_chain_definition($cleanroom_name, 'my_chain');
provider.clear_template_chain¶
설명: 지정된 클린룸에서 지정된 템플릿 체인을 삭제합니다. 체인은 어디에도 저장되지 않으므로 체인을 다시 생성하려면 처음부터 다시 생성해야 합니다.
인자:
cleanroom_name (string) - 이 템플릿 체인이 할당된 클린룸입니다.
template_chain_name (string) - 이 클린룸에서 제거할 템플릿 체인입니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.clear_template_chain($cleanroom_name, 'my_chain');
provider.clear_all_template_chains¶
설명: 지정된 클린룸에서 모든 템플릿 체인을 삭제합니다.
인자:
cleanroom_name (string) - 모든 템플릿 체인을 삭제할 클린룸의 이름입니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.clear_all_template_chains($cleanroom_name);
다중 공급자 분석¶
이러한 프로시저를 통해 다중 공급자 분석을 사용할 수 있습니다.
provider.enable_multiprovider_computation¶
설명: 이 프로시저를 사용하면 컨슈머가 제공한 단일 템플릿으로 여러 Snowflake 클린룸의 테이블, 그리고 다른 공급자의 테이블을 사용할 수 있습니다. 다른 사용자가 어떤 다른 클린룸과 함께 쿼리할 수 있는 클린룸을 지정하십시오.
인자:
cleanroom_name (string) - 소유하고 있는 클린룸의 이름입니다. 이 클린룸의 모든 데이터는 아래 목록에 있는 사용자의 요청에 따라 아래 나열된 다른 클린룸과 공유할 수 있습니다.
consumer_account (string) - 요청을 할 수 있는 컨슈머의 계정 위치이며, 승인되면
approved_other_cleanrooms
에 나열된 모든 클린룸의 데이터와 결합하여 이 클린룸의 모든 테이블에 대해 쿼리를 실행합니다.approved_other_cleanrooms (array of strings) - 이 클린룸의 데이터를 결합할 수 있는 정규화된 클린룸 이름의 배열입니다. 각 항목의 형식은
provider_org_name.provider_account_name.cleanroom_name
입니다.
반환: (string) 성공 또는 실패 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.enable_multiprovider_computation(
$cleanroom_name,
$consumer_account_locator,
'org1.account123',
$cleanroom_name_2);
provider.process_multiprovider_request¶
설명: 컨슈머가 보낸 멀티클린룸 쿼리 요청을 평가합니다. 요청은 요청의 나이, 요청자와 클린룸이 provider.enable_multiprovider_computation
에 대한 이전 호출에 목록에 있는지 여부 등의 요소에 따라 평가됩니다. 평가를 통과한 요청은 승인됩니다.
기본적으로 모든 멀티프로바이더 요청은 이 프로시저를 사용하여 처리해야 합니다. 요청이 자동으로 처리되도록 하려면 provider.resume_multiprovider_tasks
를 호출합니다.
요청이 평가된 후에는 요청 및 평가 상태가
- samp:
samooha_cleanroom_${CLEANROOM_NAME}.admin.request_log_multiprovider
테이블에 작성됩니다(평가를 통과하면 요청이 승인됨). 해당 테이블을 쿼리하여 요청 목록과 평가 상태를 확인할 수 있습니다.
SELECT * FROM samooha_cleanroom_Samooha_Cleanroom_Multiprovider_Clean_Room_1.admin.request_log_multiprovider;
승인된 요청은 동일한 컨슈머가 동일한 데이터에 대해 동일한 쿼리를 원하는 횟수만큼 실행할 수 있도록 허용합니다. 나중에 권한을 취소하려면 로깅 테이블에서 승인 상태를 FALSE 로 설정해야 합니다.
UPDATE samooha_cleanroom_Samooha_Cleanroom_Multiprovider_Clean_Room_1.admin.request_log_multiprovider SET APPROVED=False WHERE <CONDITIONS>;
인자:
cleanroom_name (string) - 컨슈머가 다중 공급자 분석에 포함하도록 요청하는 클린룸의 이름입니다.
consumer_account (string) - 다중 공급자 분석을 요청하는 사용자의 컨슈머 계정 위치입니다. 이 로케이터는 이 클린룸과 요청에 나열된 다른 클린룸에 대해
provider.enable_multiprovider_computation
으로의 호출에서 승인을 받았어야 합니다.request_id (string) -
provider.view_multiprovider_requests
에서 ID 로 승인 요청. 또는 “-1”을 입력하여 보류 중인 모든 요청을 승인합니다. 이전에 처리된 요청과 함께 호출하면 실패합니다.
반환: (string) 성공 또는 실패 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.process_multiprovider_request($cleanroom_name_1, $consumer_account_locator, $request_id);
provider.view_multiprovider_requests¶
설명: 지정된 계정 및 클린룸에서 다중 공급자 분석에 대한 모든 요청을 표시합니다.
인자:
cleanroom_name (string) - 이 클린룸과 관련된 요청을 표시합니다.
consumer_account (string) - 이 컨슈머 계정의 요청을 표시합니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.process_multiprovider_request('my_cleanroom', [
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:REGION_CODE' ]);
provider.suspend_multiprovider_tasks¶
설명:
인자:
cleanroom_name (string) -
consumer_account (string) -
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.process_multiprovider_request('my_cleanroom', [
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:REGION_CODE' ]);
provider.resume_multiprovider_tasks¶
설명:
인자:
cleanroom_name (string) -
consumer_account (string) -
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.process_multiprovider_request('my_cleanroom', [
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:REGION_CODE' ]);
공급자 활성화¶
활성화 란 공급자, 컨슈머 또는 서드 파티에 결과를 내보내는 것을 의미합니다. 활성화에 대해 자세히 알아보기.
provider.set_activation_policy¶
설명: 활성화 템플릿 내에서 사용할 수 있는 열을 정의합니다. 공급자가 승인한 열만 활성화 템플릿과 함께 사용할 수 있도록 합니다.
인자:
cleanroom_name (string) - 활동을 허용해야 하는 클린룸의 이름입니다.
columns (array of strings) - 이 클린룸의 활성화 템플릿에서는 여기에 나열된 열만 사용할 수 있습니다. 열 이름 형식은
template_name:fully_qualified_table_name:column_name
입니다. 점 .및 콜론 : 마커의 올바른 사용법에 유의하십시오.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.set_activation_policy('my_cleanroom', [
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL',
'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:REGION_CODE' ]);
provider.request_provider_activation_consent¶
설명: 공급자가 지정된 템플릿을 실행하고 그 결과를 공급자의 Snowflake 계정으로 푸시하도록 허용하는 요청을 컨슈머에게 보냅니다. 인자:
cleanroom_name (string) - 활성화 템플릿이 포함된 클린룸입니다.
template_name (string) - 승인을 요청할 활성화 템플릿의 이름입니다. 이 템플릿은 이전 호출에서 클린룸에 추가한 적이 있어야 합니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.request_provider_activation_consent(
$cleanroom_name, 'activation_my_activation_template');
공급자로 분석 실행하기¶
provider.enable_provider_run_analysis¶
설명: 공급자(클린룸 생성자)가 지정된 클린룸에서 분석을 실행할 수 있도록 합니다. 이 기능은 기본적으로 비활성화되어 있습니다. 공급자는 여전히 provider.submit_analysis_request
를 호출하여 각 분석에 대해 자동화된 보안 검사를 통과해야 합니다.
중요
이 프로시저는 provider.add_consumers
이후에 컨슈머가 클린룸을 설치하기 전에 호출해야 합니다. 컨슈머가 이미 클린룸을 설치한 후에 변경하는 경우 컨슈머는 새 구성을 반영하기 위해 클린룸을 다시 설치해야 합니다.
인자:
cleanroom_name (string) - 공급자 실행 분석을 활성화해야 하는 클린룸의 이름입니다.
consumer_accounts (array of strings) - 이 클린룸에 데이터를 추가한 모든 컨슈머 계정의 계정 위치입니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.enable_provider_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']);
provider.disable_provider_run_analysis¶
설명: 공급자(클린룸 생성자)가 클린룸에서 분석을 실행하지 못하도록 합니다(기본적으로 비활성화됨).
중요
이 프로시저는 provider.add_consumers
이후에 컨슈머가 클린룸을 설치하기 전에 호출해야 합니다. 컨슈머가 이미 클린룸을 설치한 후에 이를 변경하는 경우, 새로운 구성을 반영하기 위해 클린룸을 다시 설치해야 합니다.
인자:
cleanroom_name (string) - 공급자 실행 분석을 비활성화해야 하는 클린룸의 이름입니다.
consumer_account_locator (string) -
provider.enable_provider_run_analysis
에 전달된 것과 동일한 컨슈머 계정 이름 목록.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.disable_provider_run_analysis($cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']);
library.is_provider_run_enabled¶
설명: 이 클린룸에서 공급자 실행 분석을 허용하는지 확인합니다.
인자:
cleanroom_name (string) - 확인할 클린룸의 이름입니다.
반환: (string) 이 클린룸에서 공급자 실행 분석을 허용하는지 여부.
예:
call samooha_by_snowflake_local_db.library.is_provider_run_enabled($cleanroom_name)
provider.submit_analysis_request¶
설명: 지정된 클린룸에서 지정된 템플릿을 실행할 수 있는 권한을 컨슈머에게 요청합니다. 이 프로시저를 호출하려면 다음 조건을 모두 충족해야 합니다.
공급자는 이 클린룸에서 공급자 실행 분석 활성화가 있어야 합니다.
컨슈머는 지정된 템플릿에 대해 승인된 공급자 실행 분석을 가지고 있어야 합니다.
템플릿은 클린룸 내에서 실행되며 결과는 클린룸 내부에 안전하게 저장됩니다. 결과는 암호화되어 공급자만 결과를 볼 수 있습니다.
인자:
cleanroom_name (string) - 템플릿이 실행될 클린룸의 이름입니다.
consumer_account_locator (string) -
consumer.enable_templates_for_provider_run
을 호출하여 공급자 실행 분석을 허용한 이 클린룸에서 컨슈머의 계정 위치입니다.template_name (string) - 실행할 템플릿의 이름입니다.
provider_tables (array) - 템플릿에 노출할 공급자 테이블 목록입니다. 이 목록은
source_table
배열 변수를 채웁니다.consumer_tables (array) - 템플릿에 노출할 컨슈머 테이블 목록입니다. 이 목록은
my_table
배열 변수를 채웁니다.analysis_arguments (object) - 각 키가 사용자가 만든 템플릿에서 사용되는 인수 이름인 JSON 오브젝트입니다.
반환: (string) 요청의 상태를 확인하고 결과에 액세스하는 데 사용되는 요청 ID 입니다. 분석 결과를 확인하는 데 필요하므로 이 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']
));
provider.check_analysis_status¶
설명: 공급자는 공급자 분석 요청의 상태를 확인하기 위해 이 프로시저를 호출합니다. 요청 상태를 확인하기까지 상당한 지연이 발생할 수 있습니다. 분석이 완료로 표시되면 provider.get_analysis_result
를 호출하여 결과를 확인합니다.
인자:
cleanroom_name (string) - 요청이 이루어진 클린룸의 이름입니다.
request_id (string) - ID 요청의
provider.submit_analysis_request
에서 반환합니다.consumer_account_locator (string) - 요청이 전송된 컨슈머의 계정 위치입니다.
반환: (string) 요청의 상태, 여기서 COMPLETED
는 분석이 성공적으로 완료되었음을 의미합니다.
예:
-- 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¶
설명: 공급자 실행 분석에 대한 결과를 가져옵니다. 분석 상태가 COMPLETED 로 목록에 표시될 때까지 기다려야 결과를 확인할 수 있습니다. 결과는 클린룸에 영구적으로 유지됩니다.
인자:
cleanroom_name (string) - 요청이 전송된 클린룸의 이름입니다.
request_id (string) - ID 요청의
submit_analysis_request
에서 반환됩니다.consumer_account_locator (string) -
submit_analysis_request
에 전달된 컨슈머의 계정 위치입니다.
반환: (Table) 쿼리 결과.
예:
call samooha_by_snowflake_local_db.provider.get_analysis_result(
$cleanroom_name,
$request_id,
$locator
);
클린룸 공유 관리¶
다음 명령을 사용하여 컨슈머와의 클린룸 공유를 관리하십시오.
provider.view_consumers¶
설명: 클린룸에 대한 액세스 권한이 부여된 컨슈머를 목록으로 표시합니다. 컨슈머가 클린룸을 설치했는지 여부는 표시되지 않습니다.
인자:
cleanroom_name (string) - 관심 있는 클린룸입니다.
반환: (table) - 클린룸에 액세스할 수 있는 컨슈머 계정 목록입니다.
예:
call samooha_by_snowflake_local_db.provider.view_consumers($cleanroom_name);
provider.add_consumers¶
설명: 지정된 사용자에게 지정된 클린룸에 대한 액세스 권한을 부여합니다. 클린룸은 웹 앱과 API 를 통해 액세스할 수 있습니다. 이렇게 해도 이전 호출의 컨슈머 목록을 덮어쓰지 않습니다. 클린룸 액세스 권한은 전체 계정이 아닌 특정 사용자에게만 부여됩니다. 클린룸에 액세스하려면 컨슈머 계정이 공급자와 동일한 Snowflake Region에 있어야 합니다. select current_region();
을 호출하여 리전을 확인할 수 있습니다.
provider.view_consumers
를 호출하여 현재 컨슈머 목록을 확인할 수 있습니다.
인자:
cleanroom_name (string) - 지정된 사용자와 공유할 클린룸의 이름입니다. 사용자는 API 또는 웹 앱을 사용하여 클린룸을 설치할 수 있습니다.
consumer_account_locators (string) - CURRENT_ACCOUNT에서 반환한 쉼표로 구분된 컨슈머 계정 위치 찾기 목록입니다. 이 목록에
consumer_account_names
에 포함된 것과 동일한 수의 항목이 동일한 순서로 포함되어야 합니다.consumer_account_names (string) -
org_name.account_name
조직 이름 형식의 쉼표로 구분된 컨슈머 계정 이름의 목록은 CURRENT_ORGANIZATION_NAME을 호출하여 검색할 수 있습니다. 계정 이름은 CURRENT_ACCOUNT_NAME을 호출하여 검색할 수 있습니다. 이 목록에는consumer_account_locators
에 나열된 것과 동일한 수의 항목이 동일한 순서로 포함되어야 합니다.enable_differential_privacy_tasks(boolean, 선택 사항, 기본값: FALSE) - 이 클린룸에 나열된 사용자에 대해 차등 개인정보 보호를 활성화할지 여부입니다. TRUE 를 지정하려면 이 클린룸에 대해 차등 개인정보 보호를 사용하도록 설정해야 합니다.
반환: (string) 성공 또는 실패 메시지. 이 프로시저는 사용자 위치 또는 계정 이름의 유효성을 검사하지 않으므로 성공은 제출된 위치가 이 클린룸의 데이터베이스에 추가되었다는 의미일 뿐이라는 점에 유의하십시오.
예 1:
call samooha_by_snowflake_local_db.provider.add_consumers($cleanroom_name, 'LOCATOR1,LOCATOR2', 'ORG1.NAME1,ORG2.NAME2');
provider.remove_consumers¶
설명: 지정된 클린룸에 대한 계정 액세스 권한을 제거합니다. 이 방법은 제공된 계정의 모든 사용자의 액세스를 차단합니다.
provider.view_consumers
를 호출하여 현재 컨슈머 목록을 확인할 수 있습니다.
인자:
cleanroom_name (string) - 클린룸의 ID (사용자 친화적인 이름이 아님).
cleanroom_account_locators (string) - 쉼표로 구분된 사용자 계정 로케이터 목록입니다. 계정의 모든 사용자는 클린룸에 대한 액세스 권한을 잃게 됩니다.
반환: (string) - 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.remove_consumers($cleanroom_name, 'locator1,locator2,locator3');
provider.set_cleanroom_ui_accessibility¶
설명: 이 공급자 계정에 로그인한 모든 사용자에게 웹 앱에서 클린룸을 표시하거나 숨깁니다.
인자:
cleanroom_name (string) - 클린룸의 이름.
visibility_status (string) - 대소문자를 구분하는 다음 값 중 하나입니다.
HIDDEN - 현재 공급자 계정의 모든 사용자로부터 웹 앱의 클린룸을 숨깁니다. 클린룸은 API 호출을 통해 계속 액세스할 수 있습니다.
EDITABLE - 웹 앱에서 클린룸을 표시합니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.set_cleanroom_ui_accessibility($cleanroom_name, 'HIDDEN');
provider.enable_laf_for_cleanroom¶
설명: 공급자의 계정과 다른 리전에 있는 Snowflake 계정을 가진 공동 작업자와 클린룸을 공유할 수 있는 클라우드 간 자동 복제을 활성화합니다. 클라우드 간 자동 복제를 목록 자동 복제(LAF)라고도 합니다.
기본적으로 크로스 클라우드 자동 복제는 환경에 대해 사용 설정되어 있더라도 새 클린룸의 경우 해제되어 있습니다.
중요
ACCOUNTADMIN 역할이 있는 Snowflake 계정 관리자가 에서 클라우드 간 자동 복제를 사용 설정해야 이후에 이 명령을 실행할 수 있습니다. Snowflake 계정에서 클라우드 간 자동 복제를 활성화하는 방법에 대한 지침은 다른 리전의 계정으로 공동 작업을 참조하십시오.
다른 리전의 컨슈머와 협력하는 데는 추가 비용이 발생합니다. 이러한 비용에 대한 자세한 내용은 클라우드 간 자동 복제 비용을 참조하십시오.
인자:
cleanroom_name (string) - 리전 간에 공유해야 하는 클린룸의 이름입니다. 개별 클린룸을 공유하려면 먼저 관리자가 계정에 대해 클라우드 간 자동 복제를 사용하도록 설정해야 합니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.enable_laf_for_cleanroom($cleanroom_name);
library.is_laf_enabled_on_account¶
설명: 이 계정에 대해 클라우드 간 자동 복제가 사용 설정되어 있는지 여부를 반환합니다.
반환: 이 계정에 크로스 클라우드 자동 복제가 활성화된 경우 TRUE 이고, 그렇지 않은 경우 FALSE 입니다.
예:
call samooha_by_snowflake_local_db.library.is_laf_enabled_on_account();
클린룸에서 Python 사용¶
provider.load_python_into_cleanroom¶
설명: 클린룸에 사용자 정의 Python 함수를 로드합니다. 이 프로시저를 사용하여 클린룸에 로딩된 코드는 컨슈머에게 보이지 않습니다. 업로드한 코드는 진자 템플릿으로 호출할 수 있습니다.
클린룸에서 Python 코드를 업로드하고 사용하는 방법을 알아보십시오.
이 프로시저는 클린룸의 패치 번호를 증가시키고 보안 검사를 트리거합니다. 스캔 상태가 APPROVED 가 될 때까지 기다려야 공동 작업자와 최신 버전을 공유할 수 있습니다.
이 프로시저는 오버로드되어 있으며, 코드를 인라인으로 업로드할지 아니면 스테이지의 파일에서 로딩할지를 결정하는 다섯 번째 인자의 데이터 타입이 다른 두 개의 서명이 있습니다.
서명¶
인라인 UDF 업로드:
(cleanroom_name String, function_name String, arguments Array, packages Array, rettype String, handler String, code String)
스테이지에서 UDF 업로드:
(cleanroom_name String, function_name String, arguments Array, packages Array, imports Array, rettype String, handler String)
인자:
cleanroom_name (string) - 스크립트를 로딩할 클린룸의 이름입니다.
function_name (string) - 이 패키지의 이름입니다. 사용자 정의 템플릿에서 이 이름을 사용하여 처리기 에 지정된 함수를 인자 에 설명된 인자와 함께 호출합니다.
arguments(문자열 쌍의 배열) - 함수에 필수 인자의 배열 function_name. 각 인자는 인자 이름과 SQL 데이터 타입이 공백으로 구분된 문자열 쌍입니다. 이는 사용자 설명서에 사용되며 유효성이 검사되지 않습니다. 예: ‘크기 정수’, ‘월 문자열’, ‘데이터 베리언트’.
packages (array of strings) - 코드에서 사용하는 Python 패키지 이름 목록입니다. UDFs 는 업로드된 다른 UDFs 를 호출할 수 없는 표준 Python 패키지여야 합니다.
가져오기(Array of string with single element) - 스테이지에서 UDF 를 업로드할 때만 표시됩니다. 코드를 업로드한 스테이지를 기준으로 스테이지 주소라는 단일 요소가 포함된 문자열 배열입니다. 루트 스테이지 경로는
provider.get_stage_for_python_files
를 호출하여 사용할 수 있습니다.ret_type (string) - SQL 함수 처리기 가 반환한 값의 데이터 타입. 예: ‘정수’, ‘베리언트’.
handler (string) - 템플릿이 function_name 을 호출할 때 호출해야 하는 코드의 진입점 함수입니다.
인라인 UDF 의 경우 함수 이름입니다(예:
main
).스테이지에서 업로드된 코드의 경우 소스 파일 이름으로 한정된 함수 이름입니다(예:
myscript.main
).
코드 (string) - UDF 를 인라인 코드로 업로드할 때만 표시됩니다. 이는 Python UDF.이어야 합니다
반환: (string) 성공 또는 실패 메시지.
예제:
-- Inline UDF
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)
$$
);
-- Upload from stage
call samooha_by_snowflake_local_db.provider.load_python_into_cleanroom(
$cleanroom_name,
'myfunc', # Name of the UDF
['data variant', 'index integer'], # Arguments of the UDF
['numpy', 'pandas'], # Packages UDF will use
['/test_folder/assign_group.py'], # Python file to import from a stage
'integer', # Return type of UDF
'assign_group.main' # Handler scoped to file name
);
provider.get_stage_for_python_files¶
설명: 클린룸에서 사용자 정의 Python 코드를 정의하기 위해 인라인 코드 정의 대신 스테이지에 업로드된 코드 파일을 사용할 계획인 경우 Python 파일을 업로드해야 하는 스테이지 경로를 반환합니다. 이 스테이지는 provider.load_python_into_cleanroom
을 호출하여 파일이 업로드될 때까지 존재하지 않으며 검사할 수 없습니다.
클린룸에서 Python 코드를 업로드하고 사용하는 방법을 알아보십시오.
인자:
cleanroom_name (string) - 파일을 업로드할 클린룸의 이름입니다.
반환: (string) 코드 파일을 업로드할 경로입니다. provider.load_python_into_cleanroom
에서 imports 인자에 사용합니다.
예:
call samooha_by_snowflake_local_db.provider.get_stage_for_python_files($cleanroom_name);
provider.view_cleanrooom_scan_status¶
설명: DISTRIBUTION 으로 설정된 클린룸의 위협 검사 상태를 EXTERNAL 로 보고합니다. 기본 릴리스 지시어를 설정하거나 변경하려면 스캔을 “APPROVED”로 표시해야 합니다. 스캔 상태는 EXTERNAL 클린룸으로만 확인해야 합니다.
인자:
cleanroom_name (string) - 상태를 확인할 클린룸의 이름입니다.
반환: (string) 스캔 상태입니다.
예:
call samooha_by_snowflake_local_db.provider.view_cleanroom_scan_status($cleanroom_name);
클린룸 메타데이터 가져오기 명령¶
다음 명령을 사용하여 클린룸의 관련 속성을 표시합니다.
provider.mount_request_logs_for_all_consumers¶
설명: 공급자가 클린룸의 컨슈머로부터 공급자에게 돌아오는 정보에 액세스할 수 있도록 합니다.
.. # TODO: 이에 대한 세부 사항 필요-어떤 로그가 먼저 호출되어야 합니까?)
인자:
cleanroom_name (string) - 요청 로그를 마운트할 클린룸의 이름입니다.
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.mount_request_logs_for_all_consumers($cleanroom_name);
provider.view_request_logs¶
설명: 이 클린룸의 컨슈머로부터 전송되는 요청 로그를 봅니다. 이 기능을 처음 호출하기 전에 mount_request_logs_for_all_consumer
를 호출해야 합니다.
.. # TODO: 어떤 요청이 로그되나요?)
인자:
cleanroom_name (string) - 요청 로그를 검토할 클린룸의 이름입니다.
반환: 클린룸 (table)에 대해 실행 중인 쿼리에 대해 기록된 로그 세트입니다
예:
call samooha_by_snowflake_local_db.provider.view_request_logs($cleanroom_name);
차등 개인정보 보호¶
이 명령은 클린룸의 차등 개인정보 보호를 제어합니다. provider.add_custom_sql_template
또는 provider.add_consumers
를 호출할 때 템플릿 또는 컨슈머 수준에서 차등 개인정보 보호를 지정할 수도 있습니다.
provider.is_dp_enabled_on_account¶
설명: 이 계정에 대해 차등 개인정보 보호가 사용 설정되어 있는지 여부를 설명합니다.
인자: 없음
반환: 이 계정에 대해 차등 개인정보 보호가 활성화된 경우 TRUE, 그렇지 않은 경우 FALSE.
예:
call samooha_by_snowflake_local_db.provider.is_dp_enabled_on_account();
provider.suspend_account_dp_task¶
설명: 차등 개인정보 보호 신호를 수신하는 작업을 비활성화합니다. 이는 계정의 차등 개인정보 보호와 관련된 비용을 제어하는 데 사용됩니다. 차등 개인정보 보호 작업을 비활성화하면 차등 개인정보 보호가 지정된 기존 템플릿에서 차등 개인정보 보호가 계속 작동할 수도 있고 그렇지 않을 수도 있지만, 차등 개인정보 보호로 인한 비용은 발생하지 않습니다. 차등 개인정보 보호 관리에 대해 자세히 알아보기
인자: 없음
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.suspend_account_dp_task();
provider.resume_account_dp_task¶
설명: 현재 계정에서 차등 개인정보 보호 작업 리스너를 다시 시작합니다. 차등 개인정보 보호 함수가 있는 템플릿이 다시 함수를 시작합니다. 이전에 설정한 모든 차등 개인정보 보호 값(예: 민감도 또는 연결된 사용자)은 유지됩니다.
인자: 없음
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.resume_account_dp_task();
일반 도우미 명령¶
다음 명령을 사용하여 일반적으로 클린룸 기능 및 지원되는 플로우를 활용하는 데 도움을 받을 수 있습니다.
library.enable_local_db_auto_upgrades¶
설명: 새 버전이 릴리스될 때 Snowflake Data Clean Rooms 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 Native App을 자동으로 업그레이드하는 작업(samooha_by_snowflake_local_db.admin.expected_version_task
)을 비활성화합니다.
**인자:**없음
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.library.disable_local_db_auto_upgrades();
사용되지 않는 프로시저¶
다음 프로시저는 더 이상 사용되지 않으며 완전성을 위해 여기에만 나열되어 있습니다. 교체 프로시저가 표시되면 최신 프로시저를 사용합니다.
provider.view_ui_registration_request_log – DEPRECATED¶
주의
이 명령은 이제 더 이상 사용되지 않습니다. 더 이상 웹 앱에서 사용하기 위해 클린룸 템플릿을 수동으로 등록할 필요가 없습니다.
설명: 웹 앱에 클린룸을 등록하기 위해 계정에서 발생한 요청 목록을 봅니다. 각 요청에는 view_ui_registration_log
프로시저와 함께 사용하여 요청의 상태를 볼 수 있는 ID 링크가 있습니다. 요청은 백엔드로 공유되어 처리되고 클린룸에 추가됩니다.
인자:
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.view_ui_registration_request_log();
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)*
반환: (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 역할에 이 테이블에 대한 SELECT 권한을 부여하여 사용자가 이 테이블을 클린룸에 링크할 수 있도록 합니다.
관리되는 액세스 스키마(즉, 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_table_or_view – 사용 중단됨¶
주의
이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.unregister_objects를 사용하십시오.
설명: 모든 유형의 테이블 및 뷰 등록을 취소합니다.
인자:* object_names (array), is_view (boolean), is_iceberg (boolean), is_external (boolean), is_under_managed_access_schema (boolean)*
반환: (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']);
provider.create_cleanroom_listing – 사용 중단됨¶
주의
이 명령은 이제 더 이상 사용되지 않습니다. 대신 [공급자_생성 또는 업데이트_클린룸_목록](#공급자_생성 또는 업데이트_클린룸_목록)을 사용하십시오.
설명: 클린룸을 구성한 후 Snowflake Marketplace에서 클린룸이 포함된 비공개 목록을 만들고 지정된 공동 작업자와 공유합니다.
공동 작업자는 계정 URL의 orgname.account_name
형식을 사용하여 식별합니다. 컨슈머는 계정의 조직 및 계정 이름 찾기의 지침에 따라 이 문자열을 찾을 수 있습니다.
참고
이 프로시저를 사용하려면 릴리스 지시어를 설정해야 합니다. 자세한 내용은 provider.set_default_release_directive를 참조하십시오.
인자: cleanroom_name (string), consumer_account_name (string)
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.create_cleanroom_listing($cleanroom_name, <consumerorg.consumeracct>);
provider.register_cleanroom_in_ui – DEPRECATED¶
주의
이 명령은 이제 더 이상 사용되지 않습니다. 더 이상 웹 앱에서 사용하기 위해 클린룸 템플릿을 수동으로 등록할 필요가 없습니다.
설명: 컨슈머가 웹 앱에서 사용할 클린룸을 등록합니다. 클린룸은 공급자가 개발자 APIs를 사용하여 생성하고 구성합니다. 이 명령을 사용하면 컨슈머가 웹 앱에 등록하여 설치한 후 테이블을 추가하고 개발자 APIs 를 사용할 필요 없이 추가한 사용자 지정 분석을 실행할 수 있습니다. 웹 앱의 사용자 인터페이스를 통해 전적으로 클린룸에서 작업합니다.
이 API를 두 번 이상 호출하여 웹 앱에 여러 사용자 지정 템플릿을 포함시킬 수 있습니다.
인자:* cleanroom_name (string), 템플릿 이름 (string), consumer_account_locator (string), user_email (string)*
반환: (string) 성공 또는 실패 메시지.
예:
call samooha_by_snowflake_local_db.provider.register_cleanroom_in_ui($cleanroom_name, 'prod_custom_template', <CONSUMER ACCOUNT LOCATOR>, <USER_EMAIL>)