Snowflake Data Clean Rooms: Provider API 참조 가이드
Snowflake Data Clean Rooms: Provider API 참조 가이드
수명 종료 안내
레거시 Provider 및 Consumer Data Clean Rooms가 중단될 예정이에요. 날짜와 마이그레이션 지침은 수명 종료 타임라인을 참고하세요.
이 페이지는 클린룸 API 사용자가 자신의 클린룸을 관리할 때 사용하는 절차를 설명해요. 코딩 설정에 대한 지침은 코딩 설정을 참고하세요.
출처: Snowflake Data Clean Rooms: Provider API reference guide
본문
클린룸 생성, 구성 및 삭제
이 절차들을 사용하면 프로바이더가 클린룸을 만들고, 구성하고, 삭제할 수 있어요.
view_cleanrooms
- 스키마: PROVIDER
- 설명: 이 프로바이더 계정이 만든 기존 클린룸을 모두 나열해요.
- 인수: 없음
- 반환값: (Table) — 이 프로바이더 계정이 만든 클린룸 목록. 클린룸을 소비자와 공유하거나 설치하거나 사용할 필요는 없어요. 삭제된 클린룸은 데이터베이스에서 제거되며 이 목록에 나타나지 않아요.
- 예시:
CALL samooha_by_snowflake_local_db.provider.view_cleanrooms();
describe_cleanroom
- 스키마: PROVIDER
- 설명: 템플릿, 조인 정책, 컬럼 정책, 소비자 등 클린룸에 대한 정보 요약을 가져와요.
- 인수: cleanroom_name (String) — 정보를 확인할 클린룸 이름.
- 반환값: (String) — 클린룸 메타데이터 요약.
- 예시:
CALL samooha_by_snowflake_local_db.provider.describe_cleanroom($cleanroom_name);
cleanroom_init
- 스키마: PROVIDER
- 설명: 지정된 이름으로 계정에 클린룸을 만들어요. 이 절차는 1분 이상 걸릴 수 있어요.
create_or_update_cleanroom_listing을 호출하기 전까지 클린룸은 클린룸 UI나 협업자에게 표시되지 않아요. - 인수:
- cleanroom_name (String) — 클린룸 이름, 최대 80자. 유효한 문자:
[A-Z,a-z,0-9,_]및 공백. distribution— (String, 선택) 값 중 하나:- 클린룸 생성 후 distribution을 변경하려면 아래와 같이
ALTER PACKAGE를 호출해요.
- cleanroom_name (String) — 클린룸 이름, 최대 80자. 유효한 문자:
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');
set_default_release_directive
- 스키마: PROVIDER
- 설명: 협업자가 클린룸 UI에서 새 브라우저 세션을 시작하거나 API에서 클린룸에 접근할 때 로드되는 클린룸의 버전과 패치를 지정해요. 클린룸을 소비자와 공유하기 전에 이 절차를 호출해야 해요.
- 클린룸 애플리케이션은 Python 코드를 업로드하거나 변경할 때마다 클린룸의 새 버전을 만들어요. 사용자에게 최신 버전을 제공하려면 새 버전 번호로 이 절차를 호출해요.
- 사용 가능한 버전과 상태, 또는 현재 릴리스 지시문을 보려면 적절한 SQL 명령을 실행해요.
-- See all versions, including failed versions.
SHOW VERSIONS IN APPLICATION PACKAGE SAMOOHA_CLEANROOM_<cleanroom_name>;
-- See current release directive.
SHOW RELEASE DIRECTIVES IN APPLICATION PACKAGE SAMOOHA_CLEANROOM_<cleanroom_name>;
<cleanroom_name>은 이 형식을 따라요.
모든 클린룸은 다음 버전과 패치 번호로 생성돼요.
- version: V1_0
- patch: 0
참고
클린룸 distribution이 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'
);
drop_cleanroom
- 스키마: PROVIDER
- 설명: 클린룸을 삭제해요. 클린룸이 설치된 협업자는 더 이상 접근하거나 사용할 수 없어요. 브라우저를 새로고침하면 클린룸이 클린룸 UI에 더 이상 표시되지 않아요.
- 인수: cleanroom_name (String) — 삭제할 클린룸 이름.
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.drop_cleanroom($cleanroom_name);
enable_consumer_run_analysis
- 스키마: PROVIDER
- 설명: 소비자가 클린룸에서 분석을 실행할 수 있게 해 줘요. 이 기능은 모든 새 클린룸에서 기본적으로 활성화되어 있으므로, 클린룸에 대해 소비자 실행 분석을 명시적으로 비활성화한 경우에만 이 절차를 실행하면 돼요.
- 인수:
- cleanroom_name (String) — 소비자 실행 분석이 허용되는 클린룸 이름.
consumer_accounts— (String 배열) 이 기능을 활성화할 모든 소비자의 계정 로케이터. 참고: 이 소비자들은 이미 클린룸에 추가되어 있어야 해요.
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.enable_consumer_run_analysis(
$cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR_1>']
);
disable_consumer_run_analysis
- 스키마: PROVIDER
- 설명: 지정된 소비자가 지정된 클린룸에서 분석을 실행하는 것을 방지해요. 기본적으로 모든 소비자는 클린룸에서 분석을 실행할 수 있어요.
- 인수:
- cleanroom_name (String) — 소비자 실행 분석을 비활성화하는 클린룸.
consumer_accounts— (String 배열) 이 클린룸에서 분석을 실행할 수 없는 소비자의 계정 로케이터. 참고: 이 소비자들은 이미 클린룸에 추가되어 있어야 해요.
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.disable_consumer_run_analysis(
$cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR_1>']
);
is_consumer_run_enabled
- 스키마: LIBRARY
- 설명: 이 클린룸에서 소비자 실행 분석이 허용되는지 확인해요.
- 인수: cleanroom_name (String) — 확인할 클린룸 이름.
- 반환값: (String) — 이 클린룸에서 소비자 실행 분석이 허용되는지 여부.
- 예시:
CALL samooha_by_snowflake_local_db.library.is_consumer_run_enabled($cleanroom_name);
create_or_update_cleanroom_listing
- 스키마: PROVIDER
- 설명: 새 클린룸을 게시하거나 기존 클린룸을 업데이트해요. 클린룸을 변경할 때마다 이 메서드를 호출해 변경 사항이 소비자에게 전파되도록 해야 해요. 처음 클린룸을 게시하면 클린룸이 클린룸 UI에 표시되는 데 최대 15분이 걸릴 수 있어요. 이 메서드를 호출하지 않고 클린룸을 업데이트하면 변경 사항이 소비자에게 전파된다는 보장이 없어요.
- 단일 계정에서 만들 수 있는 클린룸 + 협업자의 수에는 제한이 있어요. 테스트 클린룸을 너무 많이 만들었다면 새 클린룸을 만들기 위해 몇 개를 삭제해야 할 수도 있어요. 계정이 수용할 수 있는 것보다 더 많은 클린룸이 필요하면 Snowflake 지원팀에 문의하세요.
- 참고: 이 절차를 호출하기 전에 릴리스 지시문을 최소 한 번 설정해야 해요. 자세한 내용은 provider.set_default_release_directive를 참고하세요.
- 인수: cleanroom_name (String) — 게시하거나 업데이트할 클린룸 이름.
- 반환값: (String) — 성공 메시지.
- 오류 처리: "Cross-Cloud Auto-Fulfillment is not enabled for this account" 오류가 발생하면 소비자 중 하나가 다른 클라우드 호스팅 리전에 있다는 뜻이에요. Snowflake Data Clean Rooms에서 Cross-Cloud Auto-Fulfillment 관리에 설명된 대로 Cross-Cloud Auto-Fulfillment를 활성화해야 해요.
- 예시:
CALL samooha_by_snowflake_local_db.provider.create_or_update_cleanroom_listing(
$cleanroom_name
);
데이터 등록 및 등록 해제
데이터베이스, 스키마, 객체를 등록하고 등록 해제하려면 다음 명령을 사용해요. 테이블과 뷰는 클린룸에 연결되기 전에 등록되어야 해요. 데이터베이스나 스키마를 등록하면 해당 데이터베이스나 스키마의 모든 객체가 등록돼요. 데이터 등록에 대해 자세히 알아보기.
register_db
- 스키마: PROVIDER
- 설명: 데이터베이스와 그 안의 모든 객체가 이 클린룸 환경의 개별 클린룸에 연결될 수 있게 해 줘요. 이 절차는 클린룸 환경이 데이터에 접근하는 데 사용하는 SAMOOHA_APP_ROLE에 데이터베이스에 대한 USAGE 및 SELECT 권한을 부여해요. 이 절차를 호출하려면 데이터베이스에 대한 MANAGE GRANTS 접근 권한이 있어야 해요. 이 클린룸 환경의 다른 프로바이더는 자체 SELECT 권한 없이도 이 객체들을 자신의 클린룸에 연결할 수 있어요.
- 중요: 이 절차는 호출된 후 생성된 객체는 등록하지 않아요. 데이터베이스에 새 객체가 추가되었고 그 객체도 등록하려면 이 절차를 다시 호출해야 해요.
- 인수:
db_name— (String) 등록할 데이터베이스 이름. - 반환값: (String) — 성공 메시지.
- 예시:
USE ROLE <role_with_manage_grants>;
CALL samooha_by_snowflake_local_db.provider.register_db('SAMOOHA_SAMPLE_DATABASE');
register_schema
- 스키마: LIBRARY
- 설명:
register_db와 비슷하지만 스키마 수준에서 작동해요. 이 절차를 호출하려면 스키마에 대한 MANAGE GRANTS 권한이 있어야 해요. 이 절차는 클린룸 환경이 데이터에 접근하는 데 사용하는 SAMOOHA_APP_ROLE에 스키마에 대한 USAGE 및 SELECT 권한을 부여해요. 관리 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 만든 스키마)를 등록하려면library.register_managed_access_schema를 대신 사용하세요. - 중요: 이 절차는 호출된 후 생성된 객체는 등록하지 않아요.
- 인수:
schema_name— (String 배열) 등록할 정규화된 스키마 이름 하나 이상의 배열. - 반환값: (String) — 성공 메시지.
- 예시:
USE ROLE <role_with_manage_grants>;
CALL samooha_by_snowflake_local_db.library.register_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
register_managed_access_schema
- 스키마: LIBRARY
- 설명:
register_schema와 비슷하지만 WITH MANAGED ACCESS 매개 변수로 만든 스키마를 등록해요. 이 절차를 호출하려면 스키마에 대한 MANAGE GRANTS 권한이 있어야 해요. 이 절차는 클린룸 환경이 데이터에 접근하는 데 사용하는 SAMOOHA_APP_ROLE에 관리 스키마에 대한 사용 권한을 부여해요. - 중요: 이 절차는 호출된 후 생성된 객체는 등록하지 않아요.
- 인수:
schema_name— (String 배열) 등록할 정규화된 스키마 이름 하나 이상의 배열. - 반환값: (String) — 성공 메시지.
- 예시:
USE ROLE <role_with_manage_grants>;
CALL samooha_by_snowflake_local_db.library.register_managed_access_schema(
['SAMOOHA_SAMPLE_DATABASE.DEMO']
);
register_objects
- 스키마: LIBRARY
- 설명: 모든 유형의 테이블과 뷰에 대한 클린룸 접근을 부여하여,
provider.link_datasets를 호출해 클린룸에 연결할 수 있게 해 줘요.library.register_schema,library.register_managed_access_schema, 또는provider.register_db를 호출해 더 넓은 객체 그룹을 등록할 수 있어요. 이 절차는 클린룸 환경이 데이터에 접근하는 데 사용하는 SAMOOHA_APP_ROLE에 객체에 대한 사용 권한을 부여해요. 이 절차를 호출하려면 객체에 대한 MANAGE GRANTS 권한이 있어야 해요. 이 절차로 데이터베이스를 등록할 수는 없어요. 다른 데이터베이스의 객체를 기반으로 한 뷰를 등록하면 네이티브 애플리케이션에 원본 객체에 대한 접근 권한도 부여해야 해요. - 인수:
object_names— (배열) 정규화된 객체 이름 배열. 이 객체들은 클린룸에 연결할 수 있어요. - 반환값: (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' ]
);
enable_external_tables_on_account
- 스키마: LIBRARY
- 설명: 이 계정의 모든 클린룸에서 Iceberg 또는 외부 테이블을 사용할 수 있게 해 줘요. 이 계정의 특정 클린룸으로 이 기능을 제한하려면
enable_external_tables_for_cleanroom을 대신 호출해요. 성공하고 모든 보안 검사를 통과하면 클린룸의 새 패치 버전이 생성돼요. - 인수: 없음
- 반환값: (String) — 성공 메시지. 성공하면 보안 검사를 트리거하고, 보안 검사가 성공할 경우 생성될 패치 번호도 제공해요.
- 예시:
USE ROLE ACCOUNTADMIN;
CALL samooha_by_snowflake_local_db.library.enable_external_tables_on_account();
enable_external_tables_for_cleanroom
- 스키마: PROVIDER
- 설명: 프로바이더가 이 계정의 지정된 클린룸에 Iceberg 또는 외부 테이블을 연결할 수 있게 해 줘요. 이 계정의 모든 클린룸에 Iceberg 및 외부 테이블을 허용하려면
enable_external_tables_on_account를 대신 호출해요. 성공하면 클린룸의 새 패치 버전이 생성돼요. - 인수: cleanroom_name (String) — 프로바이더가 Iceberg 또는 외부 테이블을 연결할 수 있는 클린룸 이름.
- 반환값: (String) — 성공 메시지. 성공하면 보안 검사를 트리거하고, 성공할 경우 생성될 패치의 번호도 제공해요.
- 예시:
CALL samooha_by_snowflake_local_db.provider.enable_external_tables_for_cleanroom(
$cleanroom_name
);
unregister_db
- 스키마: LIBRARY
- 설명:
register_db절차를 되돌리고 SAMOOHA_APP_ROLE 역할과 Snowflake Data Clean Rooms 네이티브 애플리케이션에 부여된 데이터베이스 수준 권한을 제거해요. 또한 클린룸 UI의 선택기에서 데이터베이스를 제거해요. - 인수:
db_name— (String) 등록 해제할 데이터베이스 이름. - 반환값: (String) — 성공 메시지.
- 예시:
USE ROLE <role_with_manage_grants>;
CALL samooha_by_snowflake_local_db.library.unregister_db('SAMOOHA_SAMPLE_DATABASE');
unregister_schema
- 스키마: LIBRARY
- 설명: 스키마의 등록을 해제하여, 사용자가 그 테이블과 뷰를 클린룸에 연결하지 못하게 해요. 관리 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 만든 스키마)를 등록 해제하려면
library.unregister_managed_access_schema를 대신 사용하세요. - 인수:
schema_name— (배열) 등록 해제할 스키마. - 반환값: (String) — 성공 메시지.
- 예시:
USE ROLE <role_with_manage_grants>;
CALL samooha_by_snowflake_local_db.library.unregister_schema(
['SAMOOHA_SAMPLE_DATABASE.DEMO']
);
unregister_managed_access_schema
- 스키마: LIBRARY
- 설명:
unregister_schema와 비슷하지만 WITH MANAGED ACCESS 매개 변수로 만든 스키마를 등록 해제해요. - 인수:
schema_name— (배열) 등록 해제할 관리 스키마. - 반환값: (String) — 성공 메시지.
- 예시:
USE ROLE <role_with_manage_grants>;
CALL samooha_by_snowflake_local_db.library.unregister_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
unregister_objects
- 스키마: LIBRARY
- 설명: 모든 유형의 테이블과 뷰에 대한 클린룸 접근을 취소해요. 이 계정이 관리하는 어떤 클린룸의 어떤 사용자도 더 이상 해당 객체에 접근할 수 없어요.
- 인수:
object_names— (배열) 접근을 취소해야 할 정규화된 객체 이름 배열. - 반환값: (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' ]
);
데이터 및 테이블 연결
클린룸에 테이블과 뷰를 추가하거나 제거하려면 다음 명령을 사용해요.
link_datasets
- 스키마: PROVIDER
- 설명: Snowflake 테이블 또는 뷰를 클린룸에 연결해요. 이 절차는 테이블을 복사할 필요 없이 클린룸 내에 테이블의 보안 뷰를 만들어 테이블을 클린룸에서 접근할 수 있게 자동으로 해 줘요. 테이블은 원본에 연결되므로 원본의 업데이트가 클린룸 내의 보안 버전에 나타나요. 데이터셋이 다른 데이터베이스에 저장된 Snowflake 정책을 포함하면, 데이터를 클린룸에 연결하려면 사용자(또는 클린룸 관리자)가 클린룸에 해당 정책 데이터베이스에 대한 접근을 부여해야 해요. 여기에 연결되는 모든 항목은 데이터베이스, 스키마, 또는 객체 수준에서 먼저 등록되어야 해요.
- 참고: 클린룸에 연결된 테이블이 삭제되거나, 이름이 바뀌거나, 이동되거나, 제한적인 권한이 추가되면, 같은 위치, 이름, 권한으로 테이블을 복원할 때까지 클린룸에서 사용할 수 없어요.
- 인수:
- cleanroom_name (String) — 객체에 대한 접근 권한이 있는 클린룸 이름.
tables_list— (String 배열) 클린룸에 연결할 테이블 또는 뷰 목록. 객체는 연결되기 전에 등록되어야 해요.consumer_list— (String 배열, 선택) 있으면 여기에 나열된 소비자만 이 객체에 접근할 수 있어요. 없으면 클린룸에 접근 권한이 있는 모든 사람이 이 데이터에 접근할 수 있어요.
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.link_datasets(
$cleanroom_name,
[ 'SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS',
'MYDB.MYSCH.EXPOSURES' ]
);
참고: 뷰를 클린룸에 연결하고 그 뷰가 다른 데이터베이스의 테이블을 기반으로 한다면, 뷰와 뷰의 원본을 모두 등록해야 해요.
unlink_datasets
- 스키마: PROVIDER
- 설명: 지정된 클린룸에서 모든 사용자에 대한 지정된 테이블 접근을 제거해요. 지정된 테이블은 프로바이더가 연결했어야 해요.
- 인수:
- cleanroom_name (String) — 이 데이터셋에 연결된 클린룸 이름.
tables_list— (배열) 클린룸에서 연결을 해제할 테이블 또는 뷰 이름 배열.
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.unlink_datasets(
$cleanroom_name,
[ 'SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS',
'MYDB.MYSCH.EXPOSURES' ]
);
view_provider_datasets
- 스키마: PROVIDER
- 설명: 이 계정의 모든 프로바이더가 지정된 클린룸에 연결한 모든 테이블과 뷰를 확인해요.
- 인수: cleanroom_name (String) — 클린룸 이름.
- 반환값: 지정된 클린룸에 연결된 객체 테이블과 각 객체의 클린룸 내부 뷰 이름.
- 예시:
CALL samooha_by_snowflake_local_db.provider.view_provider_datasets($cleanroom_name);
restrict_table_options_to_consumers
- 스키마: PROVIDER
- 설명: 특정 소비자가 클린룸에서 테이블에 접근할 수 있는지 제어해요. 이 절차는 교체 전용(replace only) 이므로 이전 호출에서 설정된 모든 값을 완전히 덮어써요.
provider.link_datasets,provider.restrict_table_options_to_consumers또는 다른 메서드로 부여된 소비자 권한은 이 메서드를 호출할 때 지정되지 않으면 테이블에 대한 접근 권한을 잃게 돼요. - 참고: 이 절차로 만든 제한은 클린룸 UI에서 예상대로 동작하지 않을 수 있어요. 클린룸 UI에서 사용할 수 있는 클린룸에는 이 절차를 호출하지 말아야 해요.
- 인수:
- cleanroom_name (String) — 제한할 클린룸 이름.
access_details— (객체) 각 필드 이름이 테이블 또는 뷰의 정규화된 이름이고, 필드 값이 해당 테이블 또는 뷰에 접근할 수 있는 사용자의 계정 로케이터 배열인 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 전체 조인 정책과 같지 않아요. 클린룸의 조인 정책은 이 절차로만 설정하며, 클린룸 밖의 테이블에 설정된 조인 정책은 클린룸이 무시해요. 클린룸의 테이블 정책에 대해 자세히 알아보기.
set_join_policy
- 스키마: PROVIDER
- 설명: 소비자가 이 클린룸 내에서 템플릿을 실행할 때 조인할 수 있는 컬럼을 지정해요. 이 함수를 호출하면 기존 정책이 새 정책으로 완전히 교체돼요. 클린룸 정책에 대해 자세히 알아보기: Snowflake Data Clean Room 정책 이해하기.
- 중요: 조인 정책은 템플릿이 행을 조인할 때
join_policy또는join_and_column_policyJinjaSQL 필터를 적용하는 경우에만 시행돼요. - 참고: 데이터 클린룸의 조인 정책은 Snowflake 전체 조인 정책과 같지 않아요. 클린룸의 조인 정책은 이 절차로만 설정하며, 클린룸 밖의 테이블에 설정된 조인 정책은 클린룸이 무시해요.
- 인수:
- cleanroom_name (String) — 조인 정책이 시행되어야 하는 클린룸 이름.
table_and_col_names— (String 배열)*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:HASHED_EMAIL',
'MYDB.MYSCH.EXPOSURES:HASHED_EMAIL' ]
);
view_join_policy
- 스키마: PROVIDER
- 설명: 지정된 클린룸의 프로바이더 조인 정책을 보여 줘요. 클린룸 정책에 대해 자세히 알아보기: Snowflake Data Clean Room 정책 이해하기.
- 인수: cleanroom_name (String) — 조회할 클린룸 이름.
- 반환값: (Table) — 클린룸의 모든 테이블 또는 뷰에서 조인 가능한 행 목록.
- 예시:
CALL samooha_by_snowflake_local_db.provider.view_join_policy($cleanroom_name);
set_column_policy
- 스키마: PROVIDER
- 설명: 다른 협업자가 실행하는 템플릿에서 프로젝션할 수 있는 데이터의 컬럼을 지정해요. 이 함수를 호출하면 기존 정책이 새 정책으로 완전히 교체돼요. 신원 컬럼이나 이메일 주소 같은 민감한 데이터가 포함된 컬럼에는 컬럼 정책을 설정하지 마세요. 일반적으로 이런 종류의 데이터는 프로젝션하고 싶지 않을 거예요. 와일드카드가 있는 쿼리는 이러한 검사로 포착되지 않을 수 있으므로, 분석 템플릿을 설계할 때 신중을 기하세요. 클린룸 정책에 대해 자세히 알아보기: Snowflake Data Clean Room 정책 이해하기.
- 인수:
- cleanroom_name (String) — 클린룸 이름.
analysis_and_table_and_cols— (String 배열) 템플릿이 사용할 수 있는 컬럼 배열. 각 컬럼의 형식은 다음과 같아요:*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']);
view_column_policy
- 스키마: PROVIDER
- 설명: 지정된 클린룸의 프로바이더 컬럼 정책을 보여 줘요. 클린룸 정책에 대해 자세히 알아보기: Snowflake Data Clean Room 정책 이해하기.
- 인수: cleanroom_name (String)
- 반환값: (Table) — 어떤 컬럼을 어떤 템플릿에서 사용할 수 있는지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.view_column_policy($cleanroom_name);
프로바이더 템플릿 관리
이 클린룸에서 지원되는 템플릿/분석을 추가하려면 다음 명령을 사용해요.
view_added_templates
- 스키마: PROVIDER
- 설명: 클린룸의 프로바이더 추가 템플릿을 확인해요. 이 프로바이더의 모든 클린룸에 있는 모든 템플릿을 나열하는 메서드는 없어요.
- 인수: cleanroom_name (String) — 조회할 클린룸.
- 반환값: (Table) — 지정된 클린룸에서 사용할 수 있는 템플릿 목록과 각 템플릿의 세부 정보.
- 예시:
CALL samooha_by_snowflake_local_db.provider.view_added_templates($cleanroom_name);
view_template_definition
- 스키마: PROVIDER
- 설명: 특정 템플릿에 대한 정보를 보여 줘요. 프로바이더 템플릿을 보는 소비자는
consumer.view_template_definition을 사용해야 해요. - 인수:
- cleanroom_name (String) — 이 템플릿이 있는 클린룸 이름.
template_name— (String) 정보를 요청할 템플릿 이름.
- 반환값: (String) — 템플릿 정의.
- 예시:
CALL samooha_by_snowflake_local_db.provider.view_template_definition(
$cleanroom_name, $template_name);
add_templates
- 스키마: PROVIDER
- 설명: 클린룸에 템플릿 목록을 추가해요. 기존 템플릿 목록을 교체하지 않아요.
- 인수:
- cleanroom_name (String) — 템플릿을 추가할 클린룸 이름.
template_names— (String 배열) 추가할 템플릿 이름. Snowflake 제공 템플릿만 해당해요. 사용자 지정 템플릿을 추가하려면add_custom_sql_template을 호출해요.
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.add_templates(
$cleanroom_name, ['my_custom_template']);
clear_template
- 스키마: PROVIDER
- 설명: 클린룸에서 지정된 템플릿을 제거해요.
- 인수:
- cleanroom_name (String) — 클린룸 이름.
template_name— (String) 해당 클린룸에서 제거할 템플릿 이름.
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.clear_template(
$cleanroom_name, 'prod_custom_template');
clear_all_templates
- 스키마: PROVIDER
- 설명: 클린룸에 추가된 모든 템플릿을 제거해요.
- 인수: cleanroom_name (String) — 모든 템플릿을 제거할 클린룸 이름.
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.clear_all_templates($cleanroom_name);
add_custom_sql_template
- 스키마: PROVIDER
- 설명: 사용자 지정 JinjaSQL 템플릿을 클린룸에 추가해요. 이렇게 하면 소비자가 템플릿을 호출할 수 있게 돼요. 사용자 지정 템플릿 만들기 방법 알아보기. 이 API를 여러 번 호출해 클린룸에 여러 사용자 지정 템플릿을 추가할 수 있어요. 이 절차는 이 클린룸의 같은 이름의 이전 템플릿을 덮어써요.
- 템플릿이 소비자가 결과를 프로바이더로 활성화하는 데 사용된다면 명령은 다음 요구 사항을 충족해야 해요.
- 사용자 지정 템플릿의 이름은
activation_문자열로 시작해야 해요. 예:activation_custom_template. - 템플릿은
cleanroom.activation_data_로 시작하는 테이블을 만들어야 해요. 예:CREATE TABLE cleanroom.activation_data_analysis_results AS .... - 템플릿은 정의에서 만든 테이블 이름의 고유한 부분, 즉
cleanroom.activation_data_에 추가된 문자열을 반환해야 해요. 예를 들어activation_data_analysis_results라는 이름의 템플릿에 대해data_analysis_results를 반환해요.
- 사용자 지정 템플릿의 이름은
- 템플릿이 소비자가 결과를 프로바이더로 활성화하는 데 사용된다면 명령은 다음 요구 사항을 충족해야 해요.
- 인수:
- cleanroom_name (String) — 이 템플릿이 적용되는 클린룸 이름.
template_name— (String) 템플릿 이름. 모두 소문자, 숫자, 공백, 밑줄이어야 해요. 활성화 템플릿의 이름은 "activation"으로 시작해야 해요.template— (String) JinjaSQL 템플릿.sensitivity— (Float, 선택) 이 클린룸에 대해 차등 프라이버시가 활성화된 경우, 이 템플릿이 반환하는 데이터에 적용되는 차등 프라이버시 노이즈의 양을 제어해요. 0보다 큰 숫자여야 해요. 기본값은 1.0. 이 인수가 효과를 가지려면 이 클린룸에서 차등 프라이버시 태스크가 실행 중이어야 해요.consumer_locators— (String 배열, 선택) 하나 이상의 계정 로케이터 배열. 있으면 이 템플릿이 이 계정에 대해서만 클린룸에 추가돼요. 나중에provider.restrict_template_options_to_consumers를 호출해 이 목록을 수정할 수 있어요. 소비자 목록을 지정하지 않으면 모든 소비자가 지정된 클린룸에서 사용자 지정 템플릿을 사용할 수 있어요.is_obfuscated— (Boolean, 선택) TRUE면 소비자가 템플릿 본문을 볼 수 없게 해요. 난독화된 템플릿을 실행하려면 Snowflake Enterprise Edition 이상을 사용해야 해요. 이 템플릿이 프로바이더 실행 분석에 사용된다면is_obfuscated상태를 변경할 때마다 소비자가 분석 요청을 다시 승인해야 해요.is_obfuscated는sensitivity와 함께 사용할 수 없어요.
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.add_custom_sql_template(
$cleanroom_name,
$template_name,
$$
SELECT IDENTIFIER({{ dimensions[0] | column_policy }})
FROM IDENTIFIER({{ my_table[0] }}) c
INNER JOIN IDENTIFIER({{ source_table[0] }}) p
ON IDENTIFIER({{ c.consumer_id }}) = IDENTIFIER({{ provider_id | join_policy }})
{% if where_clause %} WHERE {{ where_clause | sqlsafe | join_and_column_policy }} {% endif %};
$$
);
add_ui_form_customizations
- 스키마: PROVIDER
- 설명: 클린룸이 클린룸 UI에서 실행될 때 클린룸의 템플릿에 대한 사용자 지정 폼을 정의해요. 이는 소비자가 테이블이나 컬럼 같은 템플릿 매개 변수를 선택하도록 할 때 유용해요. 최소한
template_information인수에서display_name, description,methodology에 대한 값을 지정해야 해요. 특히 컬럼 선택기가 테이블 선택을 기반으로 채워질 때 테이블 선택 요소를 컬럼 선택 요소보다 먼저 두는 것을 권장해요. 사용자 지정 템플릿용 사용자 입력 폼 설계 방법 알아보기. - 이 함수를 호출한 후 클린룸을 업데이트해야 해요. UI를 업데이트한 후
provider.create_or_update_cleanroom_listing을 호출하지 않으면 협업자가 업데이트를 볼 수 없어요. - 인수:
- cleanroom_name (String) — 이 템플릿을 포함하는 클린룸의 이름. 제출된 폼은 지정된 클린룸의 지정된 템플릿에만 적용돼요.
template_name— (String) 이 UI가 적용되는 템플릿의 이름. 사용자에게 보이는 제목이 아니라,template_information.display_name필드로 지정되는 제목과는 다르다는 점에 유의해요.template_information— (Dict) 클린룸 UI에 표시할 템플릿에 대한 메타 정보. 다음 속성을 정의해야 하거나 할 수 있어요.display_name(필수): 클린룸 UI에서 템플릿의 표시 이름.description(필수): 템플릿 설명.methodology(필수): 인수와 결과가 무엇인지에 대한 설명.warehouse_hints(Object): 분석 실행에 사용할 웨어하우스 유형을 권장해요. 다음 필드가 있는 객체:warehouse_size: CREATE WAREHOUSE의 warehouse_size를 참고해 유효한 값 확인.snowpark_optimized(Boolean): 쿼리를 처리할 Snowpark 최적화 웨어하우스를 사용할지 여부. 대부분의 머신러닝 사용 사례에서 Snowflake는 TRUE를 권장해요.
render_table_dropdowns(Object): 사용자가 쿼리에 사용할 프로바이더 또는 소비자 테이블을 선택할 수 있게 해 주는 기본 드롭다운 목록을 표시할지 여부. 다음 필드가 있는 객체:render_consumer_table_dropdown— (Boolean) TRUE면 기본 소비자 테이블 선택기를 표시해요. FALSE면 소비자 테이블 선택기를 숨겨요. 템플릿은my_table템플릿 변수를 사용해 선택된 값을 목록으로 접근할 수 있어요. 어떤 요소라도references=CONSUMER_TABLES를 설정하면 기본값은 FALSE이고, 그렇지 않으면 TRUE예요.render_provider_table_dropdown— (Boolean) TRUE면 기본 프로바이더 테이블 선택기를 표시해요. FALSE면 프로바이더 테이블 선택기를 숨겨요. 템플릿은source_table템플릿 변수를 사용해 선택된 값을 목록으로 접근할 수 있어요. 어떤 요소라도references=PROVIDER_TABLES를 설정하면 기본값은 FALSE이고, 그렇지 않으면 TRUE예요.
activation_template_name— (String) 이 클린룸에 있는 활성화 템플릿의 이름.cleanroom접두사 없이 템플릿 이름을 사용해요. 활성화 템플릿 알아보기.enabled_activations— (String) 활성화 가능한 종류. 가능한 값:consumer,provider. 기본값 없음.activation_template_name을 지정하면 제공되어야 해요.details— (Dict, 선택) 템플릿에 값을 전달하는 사용자 구성 가능한 입력 필드를 정의해요. 각 쌍이 하나의 폼 요소를 나타내는 키-객체 쌍의 사전이에요. 키는 연결된 JinjaSQL 템플릿에서 사용할 수 있는 변수 이름이고, 값은 폼 요소를 정의하는 객체예요. 여기에 상응하는 폼 요소가 정의되지 않은 템플릿 변수가 있으면 클린룸이 기본 폼 요소를 자동 생성해요. 각 객체는 다음 필드를 정의할 수 있어요.
<field_name>: {
['display_name': <string>,]
['order': <number>,]
['description': <string>,]
['type': <enum>,]
['default': <value>,]
['choices': <string array>,]
['infoMessage': <string>,]
['size': <enum>,]
['required': <bool>,]
['group': <string>,]
['references': <array of string>,]
['provider_parent_table_field': <string>,]
['consumer_parent_table_field': <string>]
}
- `display_name`: UI 폼에서 이 항목의 레이블 텍스트.
- `order`: 폼에서 이 요소가 표시되어야 하는 1 기반 순서. 지정하지 않으면 요소가 객체에 나타나는 순서로 렌더링돼요.
- `description`: 레이블 아래에 표시되는 요소 목적 설명. 짧은 도움말이나 예시를 여기에 제공해요. 제공하지 않으면 표시되지 않아요.
- `type`: UI 요소의 유형. 이 입력 필드에 *references*가 지정되면 이 항목을 생략해요(유형이 결정되므로). 지원되는 값:
- `any` *(기본값)*: 일반 텍스트 입력 필드.
- `boolean`: 참/거짓 선택기
- `integer`: 화살표로 숫자 변경
- `multiselect`: 드롭다운 목록에서 여러 항목 선택
- `dropdown`: 드롭다운 목록에서 하나 선택
- `date`: 날짜 선택기
- `default`: 이 요소의 기본값
- `choices`: *(String 배열)* dropdown 및 multiselect 요소의 선택 목록
- `infoMessage`: 요소 옆에 표시되는 정보성 호버텍스트. 제공하지 않으면 툴팁이 없어요.
- `size`: 요소 크기. 지원 값: `XS`, `S`, `M`, `L`, `XL`
- `required`: 사용자가 값을 요구하는지 여부. TRUE 또는 FALSE를 지정.
- `group`: UI에서 항목을 그룹화하는 데 사용되는 그룹 이름. UI에서 함께 그룹화되어야 하는 항목에 같은 그룹 이름을 사용해요.
- 기본 드롭다운 목록을 숨기면, 사용자 지정 템플릿에서 `{{ source_table }}` 및 `{{ my_table }}` 특수 인수를 사용한 다음 원하는 테이블을 포함하는 자체 드롭다운 목록을 정의할 수 있어요. 사용자 지정 템플릿을 정의할 때 이러한 특수 변수 사용에 대한 자세한 내용은 [provider.add_custom_sql_template](#add_custom_sql_template)을 참고하세요.
- `references`: 클린룸의 지정된 유형의 테이블 또는 컬럼으로 드롭다운 목록을 채워요. 사용된다면 `type`은 `multiselect` 또는 `dropdown`이어야 해요. 지원되는 문자열 값:
- `PROVIDER_TABLES`: 클린룸의 모든 프로바이더 테이블을 나열. **지정하면** `render_table_dropdowns.render_provider_table_dropdown`이 FALSE여야 해요.
- `PROVIDER_JOIN_POLICY`: `provider_parent_table_field` 요소에서 현재 선택된 테이블에 대한 프로바이더 조인 정책의 모든 컬럼을 나열.
- `PROVIDER_COLUMN_POLICY`: 현재 템플릿 및 `provider_parent_table_field` 요소에서 선택된 테이블에 대한 프로바이더 컬럼 정책의 모든 컬럼을 나열.
- `PROVIDER_ACTIVATION_POLICY`: 프로바이더 활성화 정책의 모든 컬럼을 나열.
- `CONSUMER_TABLES`: 클린룸의 모든 소비자 테이블을 나열. **지정하면** `render_table_dropdowns.render_consumer_table_dropdown`이 FALSE여야 해요.
- `CONSUMER_COLUMNS`: `consumer_parent_table_field`가 지정한 소비자 테이블의 모든 컬럼을 나열. 소비자가 이러한 컬럼에 조인 및 컬럼 정책을 적용할 수 있으므로 프로바이더 실행 템플릿에서는 소비자 컬럼 참조를 사용하지 말아야 해요. 프로바이더 실행 템플릿에는 `CONSUMER_JOIN_POLICY` 또는 `CONSUMER_COLUMN_POLICY`를 사용해요.
- `CONSUMER_JOIN_POLICY`: `consumer_parent_table_field` 요소에서 선택된 테이블의 소비자 조인 정책의 모든 컬럼을 나열.
- `CONSUMER_COLUMN_POLICY`: `consumer_parent_table_field` 필드에서 선택된 테이블에 대한 현재 템플릿의 소비자 컬럼 정책의 모든 컬럼을 나열.
- `provider_parent_table_field`: 사용자가 프로바이더 테이블을 선택하는 UI 요소의 이름. 여기에 테이블 이름 자체를 제공하지 말아요. `references`가 `PROVIDER_COLUMN_POLICY` 또는 `PROVIDER_JOIN_POLICY`로 설정된 경우에만 사용해요. 기본 프로바이더 테이블 선택기를 참조하려면 여기에 `source_table`을 지정하고 `render_table_dropdowns.render_provider_table_dropdown`을 TRUE로 설정해요.
- `consumer_parent_table_field`: 사용자가 소비자 테이블을 선택하는 UI 요소의 이름. 여기에 테이블 이름 자체를 제공하지 말아요. `references`가 `CONSUMER_COLUMNS`, `CONSUMER_JOIN_POLICY`, 또는 `CONSUMER_COLUMN_POLICY`로 설정된 경우에만 사용해요. 기본 소비자 테이블 선택기를 참조하려면 여기에 `my_table`을 지정하고 `render_table_dropdowns.render_provider_table_dropdown`을 TRUE로 설정해요.
output_config— (Dict) 클린룸 UI에서 템플릿 결과를 그래픽으로 표시하는 방법을 정의해요. 제공하지 않으면 결과가 그래프가 아닌 테이블로만 표시돼요. 그래프를 원하지 않으면 이 인수에 빈 객체{}를 제공해요. 허용 필드:measure_columns: 클린룸 UI가 생성하는 그래프에서 사용할 측정값 및 차원을 포함하는 컬럼 이름.default_output_type: 결과를 표시할 기본 형식. 데이터가 적절한 형식이면 사용자가 UI에서 표시 형식을 변경할 수 있는 경우가 많아요. 지원 유형:TABLE: (기본값) 표 형식BAR: 막대 차트. 서로 다른 범주를 비교하는 데 적합.LINE: 선 차트. 시간에 따른 추세나 연속 데이터를 보여 주는 데 적합.PIE: 원형 차트. 비율이나 백분율 표시에 적합.
다음 표는 충돌할 수 있는 값에 대해 details 객체에서 허용되는 값의 매트릭스예요.
type |
references |
provider_parent_table_field |
consumer_parent_table_field |
render_provider_table_dropdown |
render_consumer_table_dropdown |
|---|---|---|---|---|---|
multiselect 또는 dropdown |
PROVIDER_TABLES |
허용 안 됨 | 허용 안 됨 | FALSE | TRUE 또는 FALSE |
PROVIDER_JOIN_POLICY |
source_table |
허용 안 됨 | TRUE | TRUE 또는 FALSE | |
PROVIDER_JOIN_POLICY |
{parent field name} |
허용 안 됨 | TRUE 또는 FALSE | TRUE 또는 FALSE | |
PROVIDER_COLUMN_POLICY |
source_table |
허용 안 됨 | TRUE | TRUE 또는 FALSE | |
PROVIDER_COLUMN_POLICY |
{parent field name} |
허용 안 됨 | TRUE 또는 FALSE | TRUE 또는 FALSE | |
CONSUMER_TABLES |
허용 안 됨 | 허용 안 됨 | TRUE 또는 FALSE | FALSE | |
CONSUMER_COLUMNS |
허용 안 됨 | my_table 또는 {parent field name} |
TRUE 또는 FALSE | TRUE | |
CONSUMER_JOIN_POLICY |
허용 안 됨 | my_table 또는 {parent field name} |
TRUE 또는 FALSE | TRUE | |
CONSUMER_COLUMN_POLICY |
허용 안 됨 | my_table 또는 {parent field name} |
TRUE 또는 FALSE | TRUE | |
PROVIDER_ACTIVATION_POLICY |
허용 안 됨 | 허용 안 됨 | TRUE 또는 FALSE | TRUE 또는 FALSE |
- 반환값: (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'
}
);
restrict_template_options_to_consumers
- 스키마: PROVIDER
- 설명: 주어진 클린룸에서 주어진 템플릿에 접근할 수 있는 사용자를 제어해요. 이 절차는 다른 절차가 클린룸/템플릿 쌍에 대해 이전에 지정한 모든 접근 목록을 덮어써요.
- 참고: 이 절차로 만든 제한은 클린룸 UI에서 예상대로 동작하지 않을 수 있어요. 클린룸 UI에서 사용할 수 있는 클린룸에는 이 절차를 호출하지 말아야 해요.
- 인수:
- cleanroom_name (String) — 클린룸 이름.
access_details— (JSON 객체) 템플릿 이름과 해당 클린룸에서 템플릿에 접근할 수 있는 사용자. 템플릿이 지정되면 여기에 나열된 사용자만 해당 클린룸에서 그 템플릿에 접근할 수 있어요. 템플릿별 하위 객체 하나를 가진 객체이며*'{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'] }
);
소비자 정의 템플릿
다음 API를 사용하면 소비자가 클린룸에 템플릿을 추가하려는 요청을 승인하거나 거부할 수 있어요. 소비자 정의 템플릿은 프로바이더가 소비자의 추가 요청을 승인할 때만 클린룸에 추가돼요. 자세한 내용은 소비자 작성 사용자 지정 템플릿을 참고하세요.
list_pending_template_requests
- 스키마: PROVIDER
- 설명: 클린룸에 소비자 정의 템플릿을 추가하려는 소비자의 모든 미승인 요청을 나열해요. 여기에는 보류 중, 승인됨, 거부된 요청이 포함돼요. 이 절차를 사용해 보류 중인 요청을 확인하고 승인(
provider.approve_template_request)하거나 거부(provider.reject_template_request)해요. 클린룸이 공유된 모든 소비자가 클린룸을 설치할 때까지 이 절차는 실패해요. - 인수: cleanroom_name (String) — 이 클린룸에 템플릿을 추가하려는 소비자 요청 확인.
- 반환값: 다음 값을 포함한 테이블(그 외에도):
request_id— (String) 요청 ID. 요청을 수락하거나 거부하는 데 필요.consumer_locator— (String) 요청한 사람의 계정 로케이터.template_name— (String) 소비자가 제공한 템플릿의 이름.template_definition— (String) 소비자가 제안한 템플릿의 전체 정의.
- 예시:
CALL samooha_by_snowflake_local_db.provider.list_pending_template_requests($cleanroom_name);
list_template_requests
- 스키마: PROVIDER
- 설명: 클린룸에 소비자 정의 템플릿을 추가하려는 소비자의 모든 요청을 나열해요. 여기에는 보류 중, 승인됨, 거부된 요청이 포함돼요. 이를 사용해 보류 중인 요청을 확인하고 승인(
provider.approve_template_request)하거나 거부(provider.reject_template_request)해요. - 인수: cleanroom_name (String) — 이 클린룸에 템플릿을 추가하려는 소비자 요청 확인.
- 반환값: 다음 값을 포함한 테이블(그 외에도):
request_id— (String) 요청 ID. 요청을 수락하거나 거부하는 데 필요.consumer_identifier— (String) 요청한 사람의 계정 로케이터.template_name— (String) 소비자가 제공한 템플릿의 이름.template_definition— (String) 소비자가 제안한 템플릿의 전체 정의.
- 예시:
CALL samooha_by_snowflake_local_db.provider.list_template_requests($cleanroom_name);
approve_template_request
- 스키마: PROVIDER
- 설명: 클린룸에 템플릿을 추가하려는 요청을 승인해요.
- 인수:
- cleanroom_name (String) — 사용자가 템플릿을 추가하려는 클린룸 이름.
request_id— (String) 승인할 요청 ID. 요청 ID를 보려면provider.list_template_requests를 호출해요.
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.approve_template_request(
$cleanroom_name, '815324e5-54f2-4039-b5fb-bb0613846a5b'
);
approve_multiple_template_requests
- 스키마: PROVIDER
- 설명: 클린룸에 템플릿을 추가하려는 여러 소비자 요청을 승인해요. 모든 요청은 단일 클린룸에 대한 것이어야 해요.
- 인수:
- cleanroom_name (String) — 이 요청이 적용되는 클린룸 이름.
request_ids— (문자열 배열) 승인할 모든 템플릿 요청의 ID. 요청 ID를 얻으려면provider.list_template_requests를 호출해요.
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.approve_multiple_template_requests(
$cleanroom_name,
[ 'cfd538e2-3a17-48e3-9773-14275e7d2cc9',
'2982fb0a-02b7-496b-b1c1-56e6578f5eac' ]
);
reject_template_request
- 스키마: PROVIDER
- 설명: 클린룸에 템플릿을 추가하려는 요청을 거부해요.
- 인수:
- cleanroom_name (String) — 사용자가 템플릿을 추가하려는 클린룸 이름.
request_id— (String) 거부할 요청 ID. 요청 ID를 보려면provider.list_template_requests를 호출해요.reason_for_rejection— (String) 요청을 거부하는 이유.
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.reject_template_request(
$cleanroom_name, 'cfd538e2-3a17-48e3-9773-14275e7d2cc9', 'Failed security assessment');
reject_multiple_template_requests
- 스키마: PROVIDER
- 설명: 클린룸에 템플릿을 추가하려는 여러 소비자 요청을 거부해요. 모든 요청은 같은 클린룸에 대한 것이어야 해요.
- 인수:
- cleanroom_name (String) — 이 요청이 적용되는 클린룸 이름.
rejected_templates— (객체 배열) 거부당 하나씩, 다음 필드를 가진 객체 배열:request_id— (string) 거부할 요청 ID. 요청 ID를 얻으려면provider.list_template_requests를 호출해요.reason_for_rejection— (string) 요청을 거부하는 이유에 대한 자유 텍스트 설명.
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.reject_multiple_template_requests($cleanroom_name, [
OBJECT_CONSTRUCT('request_id', '815324e5-54f2-4039-b5fb-bb0613846a5b', 'reason_for_rejection', 'Failed security assessment'),
OBJECT_CONSTRUCT('request_id', '2982fb0a-02b7-496b-b1c1-56e6578f5eac', 'reason_for_rejection', 'Some other reason')
]);
템플릿 체인
템플릿 체인을 만들고 관리하려면 다음 명령을 사용해요.
add_template_chain
- 스키마: PROVIDER
- 설명: 새 템플릿 체인을 만들어요. 템플릿은 템플릿 체인에 추가되기 전에 존재해야 해요. 템플릿 체인이 생성된 후에는 수정할 수 없지만, 같은 이름으로 새 템플릿 체인을 만들어 기존 체인을 덮어쓸 수 있어요.
- 인수:
- cleanroom_name (String) — 템플릿 체인이 추가되어야 하는 클린룸 이름.
template_chain_name— (String) 템플릿 체인의 이름.templates— (객체 배열) 템플릿당 하나씩 있는 객체 배열. 객체는 다음 필드를 포함할 수 있어요.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 }
]
);
view_added_template_chains
- 스키마: PROVIDER
- 설명: 지정된 클린룸의 템플릿 체인을 나열해요.
- 인수: cleanroom_name (String) — 클린룸 이름.
- 반환값: (Table) — 이 클린룸에 추가된 모든 템플릿 체인 설명.
- 예시:
CALL samooha_by_snowflake_local_db.provider.view_added_template_chains($cleanroom_name);
view_template_chain_definition
- 스키마: PROVIDER
- 설명: 템플릿 체인의 정의를 반환해요.
- 인수:
- cleanroom_name (String) — 이 템플릿 체인과 연결된 클린룸 이름.
template_chain_name— (String) 이 클린룸과 연결된 템플릿 체인의 이름.
- 반환값: (Table) — 지정된 템플릿 체인의 설명.
- 예시:
CALL samooha_by_snowflake_local_db.provider.view_template_chain_definition(
$cleanroom_name, 'my_chain');
clear_template_chain
- 스키마: PROVIDER
- 설명: 지정된 클린룸에서 지정된 템플릿 체인을 삭제해요. 체인은 어디에도 저장되지 않으므로, 체인을 다시 만들려면 처음부터 다시 만들어야 해요.
- 인수:
- cleanroom_name (String) — 이 템플릿 체인이 할당된 클린룸.
template_chain_name— (String) 이 클린룸에서 제거할 템플릿 체인.
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.clear_template_chain($cleanroom_name, 'my_chain');
활성화(Activation)
활성화는 결과를 프로바이더, 소비자 또는 타사로 내보내는 것을 의미해요. 활성화에 대해 자세히 알아보기.
set_activation_policy
- 스키마: PROVIDER
- 설명: 활성화 템플릿 내에서 사용할 수 있는 프로바이더 컬럼을 정의해요. 활성화 정책에 나열된 컬럼만 프로바이더 데이터셋에서 활성화할 수 있어요. 활성화 정책을 설정하지 않으면 프로바이더 데이터가 활성화되지 못해요. 이 절차를 호출하면 프로바이더가 설정한 이전 활성화 정책이 모두 지워져요.
- 인수:
- cleanroom_name (String) — 활성화가 허용되어야 하는 클린룸 이름.
columns— (String 배열) 이 클린룸의 활성화 템플릿에서 사용할 수 있는 컬럼만. 컬럼 이름 형식:*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' ]);
view_activation_policy
- 스키마: PROVIDER
- 설명: 지정된 클린룸의 프로바이더 활성화 정책을 보여 줘요.
- 인수: cleanroom_name (String) — 보고할 클린룸 이름.
- 반환값: (Table) — 지정된 클린룸의 프로바이더 활성화 정책.
- 예시:
CALL samooha_by_snowflake_local_db.provider.view_activation_policy($cleanroom_name);
request_provider_activation_consent
- 스키마: PROVIDER
- 설명: 프로바이더가 지정된 템플릿을 실행하고 결과를 프로바이더의 Snowflake 계정으로 푸시하는 것을 허용하도록 소비자에게 요청을 보내요. 백그라운드에서 클린룸의 프로바이더 활성화 템플릿 목록에 템플릿을 추가해요. 템플릿이 활성화 템플릿으로 지정되면 활성화 요청에서만 사용할 수 있어요.
- 인수:
- cleanroom_name (String) — 활성화 템플릿을 포함하는 클린룸.
template_name— (String) 승인을 요청할 활성화 템플릿 이름. 이 템플릿은 이전 호출에서 클린룸에 추가되었어야 해요. 템플릿 이름은 "activation"으로 시작해야 해요.
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.request_provider_activation_consent(
$cleanroom_name, 'activation_my_activation_template');
update_activation_warehouse
- 스키마: PROVIDER
- 설명: 프로바이더 활성화에서 결과를 출력 테이블로 복호화할 때 사용할 웨어하우스 크기를 지정해요. 복호화에 사용되는 웨어하우스는 DCR_ACTIVATION_WAREHOUSE예요. 이 웨어하우스 비용은 프로바이더가 지불해요.
- 인수:
size— (String) 웨어하우스 크기. CREATE WAREHOUSE 명령의 WAREHOUSE_SIZE 값 중 하나를 선택해요. - 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.update_activation_warehouse('LARGE');
setup_provider_activation_share_mount_task
- 스키마: PROVIDER
- 설명: 프로바이더 계정에 클린룸 UI가 설치되어 있지 않을 때 프로바이더 활성화를 활성화해요.
provider.add_consumers로 소비자를 추가한 후 호출해요. 프로바이더 활성화를 구현 중이고 사용자(프로바이더)에게 클린룸 UI가 설치되어 있지 않을 때만 호출해요(소비자에게 UI가 설치되어 있는지 여부는 상관없어요). 프로바이더 활성화에 필요한 소비자 공유를 비동기적으로 마운트하는 스레드를 시작해요. 공유를 동기적으로 마운트해 코드를 차단하는 대신, 이 코드는 공유를 비동기적으로 마운트하고 주기적으로 새 협업자를 다시 확인해요. 한 번만 호출하면 되며, 이후 협업자를 추가할 때 이 절차를 다시 호출할 필요는 없어요. - 인수:
frequency_minutes— (Integer) 이 클린룸에서 새 소비자가 있는지, 그리고 그들을 위한 공유도 마운트할 수 있는지 다시 확인하는 주기. 권장 값은 15예요. - 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.setup_provider_activation_share_mount_task(15);
dcr_health.provider_run_provider_activation_history
- 설명: 지정된 클린룸의 프로바이더 활성화 요청 기록을 반환해요. 프로바이더와 소비자가 모두 시작한 프로바이더 활성화 요청이 표시돼요. 이 절차는 프로바이더 활성화 문제를 디버그하는 데 도움이 되는 추가 정보를 제공해요.
- 인수: cleanroom_name (String) — 활성화가 요청된 클린룸 이름. 이 클린룸의 프로바이더 또는 소비자여야 해요.
- 반환값: (Table) — 템플릿 및 세그먼트 이름, 상태, 소비자의 계정 로케이터, 요청이 반환한 오류 메시지를 포함한 각 활성화 요청 목록.
- 예시:
CALL samooha_by_snowflake_local_db.dcr_health.provider_run_provider_activation_history(
$cleanroom_name);
view_external_activation_history
- 스키마: LIBRARY
- 설명: 현재 계정의 활성화 요청 기록을 확인해요.
- 인수: 없음
- 반환값: 활성화 요청의 세부 정보와 상태가 있는 테이블.
- 예시:
CALL samooha_by_snowflake_local_db.library.view_external_activation_history();
프로바이더로서 분석 실행
enable_provider_run_analysis
- 스키마: PROVIDER
- 설명: 프로바이더(클린룸 생성자)가 지정된 클린룸에서 분석을 실행할 수 있게 해 줘요. 기본적으로 비활성화되어 있어요. 소비자는 클린룸의 특정 템플릿에 대해 프로바이더 실행 분석을 활성화하려면
consumer.enable_templates_for_provider_run을 호출해야 해요. 그 후 프로바이더는provider.submit_analysis_request를 호출해 분석을 실행할 수 있어요. 프로바이더 실행 분석에 대해 자세히 알아보기. - 중요: 이 절차는
provider.add_consumers후에, 그리고 소비자가 클린룸을 설치하기 전에 호출해야 해요. 소비자가 클린룸을 이미 설치한 후 이 값을 변경하면 소비자가 새 구성을 반영하려면 클린룸을 다시 설치해야 해요. - 인수:
- cleanroom_name (String) — 프로바이더 실행 분석을 활성화해야 하는 클린룸 이름.
consumer_accounts— (String 배열) 이 클린룸에 데이터를 추가한 모든 소비자 계정의 계정 로케이터.
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.enable_provider_run_analysis(
$cleanroom_name, ['<CONSUMER_ACCOUNT_LOCATOR>']
);
disable_provider_run_analysis
- 스키마: PROVIDER
- 설명: 프로바이더(클린룸 생성자)가 클린룸에서 분석을 실행하는 것을 방지해요(기본적으로 비활성화되어 있음).
- 중요: 이 절차는
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>']);
is_provider_run_enabled
- 스키마: LIBRARY
- 설명: 이 클린룸에서 프로바이더 실행 분석이 허용되는지 확인해요.
- 인수: cleanroom_name (String) — 확인할 클린룸 이름.
- 반환값: (String) — 이 클린룸에서 프로바이더 실행 분석이 허용되는지 여부.
- 예시:
CALL samooha_by_snowflake_local_db.library.is_provider_run_enabled($cleanroom_name);
is_request_back_share_mounted
- 스키마: PROVIDER
- 설명: 지정된 클린룸에서 지정된 소비자로부터 메시지를 프로바이더로 전파할 수 있는지 확인해요. 이 클린룸의 이 소비자에 대해 백 공유가 마운트되지 않았다면, 프로바이더 실행 요청 승인 같은 메시지가 소비자에서 프로바이더로 전파되지 않아요(소비자 쪽에 대기열로 남아 있긴 하지만). 이 소비자와 백 공유를 설정하려면
provider.mount_request_logs_for_all_consumers를 호출해요. 이전에provider.mount_request_logs_for_all_consumers를 호출했는데is_request_back_share_mounted가 실패한다면, 마지막으로provider.mount_request_logs_for_all_consumers를 호출한 후 이 소비자를 이 클린룸에 추가했기 때문일 가능성이 높아요. - 인수:
- cleanroom_name (String) — 확인할 클린룸 이름.
consumer_account— (String) 소비자의 계정 로케이터.
- 반환값: 지정된 클린룸의 지정된 소비자에 대해 백 공유가 활성화되어 있으면 SUCCESS, 그렇지 않으면 오류를 던져요.
- 예시:
CALL samooha_by_snowflake_local_db.library.is_request_back_share_mounted(
$cleanroom_name, $consumer_locator);
view_warehouse_sizes_for_template
- 스키마: PROVIDER
- 설명: 주어진 템플릿으로 프로바이더 실행 분석에서 사용할 수 있는 웨어하우스 크기와 유형 목록을 확인해요. 소비자가 먼저
consumer.enable_templates_for_provider_run호출에서 목록을 채워야 해요. - 인수:
- cleanroom_name (String) — 클린룸 이름.
template_name— (String) 프로바이더가 실행하려는 템플릿 이름.consumer_account— (String) 프로바이더 실행 요청을 승인할 소비자의 계정 로케이터.
- 반환값: 허용된 웨어하우스 크기와 유형 테이블. 지원되는 웨어하우스 유형 및 크기 문자열은 CREATE WAREHOUSE 명령의 WAREHOUSE_TYPE 및 WAREHOUSE_SIZE 속성에서 사용하는 것과 동일해요.
- 예시:
CALL samooha_by_snowflake_local_db.PROVIDER.VIEW_WAREHOUSE_SIZES_FOR_TEMPLATE(
$cleanroom_name, $template_name, $consumer_account_loc);
submit_analysis_request
- 스키마: PROVIDER
- 설명: 클린룸에서 실행할 분석을 제출해요. 이 절차를 호출하기 전에 다음 조건이 모두 충족되어야 해요.
- 프로바이더가 이 클린룸에서 프로바이더 실행 분석을 활성화했어야 해요.
- 소비자가 지정된 템플릿에 대한 프로바이더 실행 분석을 승인했어야 해요.
- 소비자 데이터와 템플릿에 대한 모든 조인 및 컬럼 정책이 존중되어야 해요.
- 템플릿은 클린룸 내에서 실행되고 결과는 클린룸 내부에 안전하게 저장돼요. 결과는 프로바이더만 볼 수 있도록 암호화돼요.
- 인수:
- cleanroom_name (String) — 템플릿이 실행되어야 하는 클린룸 이름.
consumer_account_locator— (String) 이 클린룸에서consumer.enable_templates_for_provider_run을 호출해 프로바이더 실행 분석을 허용한 소비자의 계정 로케이터.template_name— (String) 실행할 템플릿 이름.provider_tables— (String 배열) 템플릿에 노출할 프로바이더 테이블 목록. 이 목록은source_table배열 변수를 채워요.consumer_tables— (String 배열) 템플릿에 노출할 소비자 테이블 목록. 이 목록은my_table배열 변수를 채워요.analysis_arguments— (JSON 객체) 템플릿에 필요한 인수를 키-값 쌍으로 전달해요. 다음 필드는 소비자가 허용된 웨어하우스 유형과 크기 집합을 지정하는 경우에만 필요해요.provider.view_warehouse_sizes_for_template를 호출해 소비자가 웨어하우스 크기와 유형을 지정했는지 확인해요.warehouse_type(String, 소비자가 허용 유형 범위를 지정한 경우에만 필요) — 소비자가 지정된 템플릿과의 프로바이더 실행 분석에 허용하는 웨어하우스 유형. 지원 유형 목록 보기. 소비자가 기본 설정을 지정하지 않았다면 기본값은 STANDARD.warehouse_size(String, 소비자가 허용 크기 범위를 지정한 경우에만 필요) — 소비자가 지정된 템플릿과의 프로바이더 실행 분석에 허용하는 웨어하우스 크기. 지원 유형 목록 보기. 소비자가 기본 설정을 지정하지 않았다면 기본값은 X-SMALL.
- 반환값: (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'],
'warehouse_type', 'STANDARD', -- If this type and size pair were not listed by view_warehouse_sizes_for_template,
'warehouse_size', 'LARGE' -- the request will automatically fail.
)
);
check_analysis_status
- 스키마: PROVIDER
- 설명: 프로바이더가 프로바이더 분석 요청의 상태를 확인하기 위해 호출해요. 요청 상태를 보기 시작하기 전에 상당한 지연이 있을 수 있어요. 분석이 완료로 표시되면
provider.get_analysis_result를 호출해 결과를 확인해요. check_analysis_status를 호출하려면 클린룸의 모든 소비자에 대해 요청 로그가 마운트되어 있어야 해요. 이 작업은provider.mount_request_logs_for_all_consumers를 호출해 클린룸의 소비자당 한 번 수행돼요.- 다음 SQL 명령을 실행해 분석 요청 목록을 볼 수 있어요.
*cleanroom_name*은 공백을 밑줄로 바꾼 클린룸 이름이에요. -
SELECT * FROM SAMOOHA_CLEANROOM_<cleanroom_name>.ADMIN.PROVIDER_ANALYSIS_REQUESTS;
- 다음 SQL 명령을 실행해 분석 요청 목록을 볼 수 있어요.
- 인수:
- cleanroom_name (String) — 요청이 이루어진 클린룸 이름.
request_id— (String)provider.submit_analysis_request가 반환한 요청 ID.consumer_account_locator— (String) 요청이 전송된 소비자의 계정 로케이터.
- 반환값: (String) 요청 상태.
COMPLETED는 분석이 성공적으로 완료되었다는 뜻이에요. 가능한 상태:- IN-PROGRESS: 분석이 진행 중이에요.
- PENDING: 다음 중 하나를 나타내요.
- 요청이 아직 전파 중이어서 몇 분이 걸릴 수 있어요. 몇 분 후 다시 시도해요.
- 사용자가
consumer.enable_templates_for_provider_run을 호출해 요청을 승인하지 않았어요. 몇 분 후 다시 시도해요. - 이 소비자에 대한 요청 로그를 마운트하지 않았어요.
provider.is_request_back_share_mounted를 호출하고, 그 절차가 SUCCESS를 반환하지 않으면provider.mount_request_logs_for_all_consumers를 호출해요.
- COMPLETED: 분석이 완료되었어요.
provider.get_analysis_result를 호출할 수 있어요.
- 오류: "ResultSet is empty or not prepared" 오류가 보이면 이 클린룸의 소비자 중 하나 이상에 대해 요청 로그가 마운트되지 않았다는 뜻일 수 있어요. 모든 소비자에 대해 요청 로그를 마운트하려면
provider.mount_request_logs_for_all_consumers를 호출해요. - 예시:
-- 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>');
get_analysis_result
- 스키마: PROVIDER
- 설명: 프로바이더 실행 분석의 결과를 가져와요.
provider.check_analysis_status가 COMPLETED를 반환할 때까지get_analysis_result를 호출하지 마세요. 분석 결과는 클린룸에 무기한 유지돼요. - 인수:
- cleanroom_name (String) — 요청이 전송된 클린룸 이름.
request_id— (String)submit_analysis_request가 반환한 요청 ID.consumer_account_locator— (String)submit_analysis_request에 전달된 소비자의 계정 로케이터.
- 반환값: (Table) — 쿼리 결과.
- 예시:
CALL samooha_by_snowflake_local_db.provider.get_analysis_result(
$cleanroom_name, $request_id, $locator);
클린룸 공유 관리
소비자와 클린룸을 공유하는 것을 관리하려면 다음 명령을 사용해요.
view_consumers
- 스키마: PROVIDER
- 설명: 클린룸에 접근 권한이 부여된 소비자를 나열해요. 소비자가 클린룸을 설치했는지는 표시하지 않아요.
- 인수: cleanroom_name (String) — 관심 있는 클린룸.
- 반환값: (Table) — 클린룸에 접근할 수 있는 소비자 계정 목록.
- 예시:
CALL samooha_by_snowflake_local_db.provider.view_consumers($cleanroom_name);
add_consumers
- 스키마: PROVIDER
- 설명: 지정된 사용자에게 지정된 클린룸에 대한 접근 권한을 부여해요. 클린룸은 클린룸 UI와 API를 통해 접근할 수 있어요. 이 절차는 이전 호출의 소비자 목록을 덮어쓰지 않아요. 클린룸 접근은 계정 전체가 아니라 특정 사용자에게 부여돼요. 소비자 계정은 클린룸에 접근하려면 프로바이더와 같은 Snowflake 리전에 있어야 해요. 리전은
select current_region();을 호출해 확인할 수 있어요. 현재 소비자 목록은provider.view_consumers를 호출해 확인할 수 있어요. - 인수:
- cleanroom_name (String) — 지정된 사용자와 공유할 클린룸 이름. 사용자는 클린룸 API 또는 UI를 사용해 클린룸을 설치할 수 있어요.
consumer_account_locators— (String) CURRENT_ACCOUNT이 반환한 소비자 계정 로케이터의 쉼표로 구분된 목록. 이 목록은consumer_account_names에 포함된 것과 같은 수의 항목을 같은 순서로 포함해야 해요.consumer_account_names— (String)*org_name*.*account_name*형식의 소비자 데이터 공유 계정 ID의 쉼표로 구분된 목록. Org name은 CURRENT_ORGANIZATION_NAME을 호출해 가져올 수 있어요. Account name은 CURRENT_ACCOUNT_NAME을 호출해 가져올 수 있어요. 이 목록은consumer_account_locators에 나열된 것과 같은 수의 항목을 같은 순서로 포함해야 해요.enable_differential_privacy_tasks— (Boolean, 선택) TRUE면 이 클린룸에서 나열된 사용자의 모든 쿼리에 차등 프라이버시를 시행해요. 기본값으로 나열된 사용자에 차등 프라이버시를 활성화하는 간단한 방법이에요. 고급 설정을 지정하려면 대신privacy_settings인수를 제공해요. 차등 프라이버시를 활성화하려면 이 클린룸에서 차등 프라이버시 태스크가 실행 중이어야 해요. 기본값은 FALSE.privacy_settings— (String, 선택) 있으면consumer_account_names의 사용자가 사용자 지정 템플릿을 사용할 때 프라이버시 설정을 적용해요. 단일 NULL 키가 있고 값이 다양한 프라이버시 설정을 지정하는 객체의 문자열 버전이에요.enable_differential_privacy_tasks와privacy_settings를 둘 다 지정하지 마세요. 차등 프라이버시를 활성화하려면 이 클린룸에서 차등 프라이버시 태스크가 실행 중이어야 해요. 이 객체의 사용 가능한 필드 보기.
- 반환값: 성공 메시지. 이 절차는 사용자 로케이터나 계정 이름을 검증하지 않으므로, 성공은 제출된 로케이터가 이 클린룸의 데이터베이스에 추가되었다는 뜻일 뿐이에요.
- 예시:
-- Add consumer without differential privacy.
CALL samooha_by_snowflake_local_db.provider.add_consumers($cleanroom_name,
'LOCATOR1,LOCATOR2', 'ORG1.NAME1,ORG2.NAME2');
-- Add consumer and turn on differential privacy for all their queries.
CALL samooha_by_snowflake_local_db.provider.add_consumers($cleanroom_name,
'LOCATOR1', 'ORGNAME.ACCOUNTNAME',
'{ "null": { "threshold_value": 5000, "differential": 1, "privacy_budget": 10, "epsilon": 0.1, "noise_mechanism": "Laplace" } }');
remove_consumers
- 스키마: PROVIDER
- 설명: 주어진 클린룸에 대한 계정 접근을 제거해요. 이 메서드는 제공된 계정의 모든 사용자의 접근을 차단해요. 현재 소비자 목록은
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');
set_cleanroom_ui_accessibility
- 스키마: PROVIDER
- 설명: 이 프로바이더 계정에 로그인한 모든 사용자에게 클린룸 UI에서 클린룸을 표시하거나 숨겨요.
- 인수:
- cleanroom_name (String) — 클린룸 이름.
visibility_status— (String) 다음 대소문자 구분 값 중 하나:- HIDDEN — 현재 프로바이더 계정의 모든 사용자에게 클린룸 UI에서 클린룸을 숨겨요. 클린룸은 여전히 API 호출에서 접근할 수 있어요.
- EDITABLE — 클린룸 UI에서 클린룸을 표시해요.
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.set_cleanroom_ui_accessibility(
$cleanroom_name, 'HIDDEN');
크로스 클라우드 협업
클린룸이 다른 클라우드 리전의 소비자와 공유될 수 있게 해 줘요. 자세히 알아보기.
enable_laf_on_account
- 스키마: LIBRARY
- 설명: 현재 계정에서 Cross-Cloud Auto-Fulfillment를 활성화해요. 이 절차를 실행하려면 ACCOUNTADMIN 역할이 필요해요.
- 중요: 먼저 SYSTEM$ENABLE_GLOBAL_DATA_SHARING_FOR_ACCOUNT를 호출해 계정에 Cross-Cloud Auto-Fulfillment를 활성화해야 해요. 자동 이행에 대해 자세히 알아보기 및 자동 이행 권한 관리.
- 인수: 없음
- 반환값: (String) — 성공 메시지.
- 예시:
USE ROLE ACCOUNTADMIN;
CALL samooha_by_snowflake_local_db.library.enable_laf_on_account();
disable_laf_on_account
- 스키마: LIBRARY
- 설명: 현재 계정에서 Cross-Cloud Auto-Fulfillment를 비활성화해요. 이 절차를 실행하려면 ACCOUNTADMIN 역할이 필요해요.
- 중요: 계정에서 Cross-Cloud Auto-Fulfillment를 비활성화하려면 먼저 SYSTEM$ENABLE_GLOBAL_DATA_SHARING_FOR_ACCOUNT를 호출해야 해요. 자동 이행에 대해 자세히 알아보기 및 자동 이행 권한 관리.
- 인수: 없음
- 반환값: (String) — 성공 메시지.
- 예시:
USE ROLE ACCOUNTADMIN;
CALL samooha_by_snowflake_local_db.library.disable_laf_on_account();
is_laf_enabled_on_account
- 스키마: LIBRARY
- 설명: 이 계정에 Cross-Cloud Auto-Fulfillment가 활성화되어 있는지 여부를 반환해요.
- 인수: 없음
- 반환값: 계정에 Cross-Cloud Auto-Fulfillment가 활성화되어 있으면 TRUE, 그렇지 않으면 FALSE.
- 예시:
CALL samooha_by_snowflake_local_db.library.is_laf_enabled_on_account();
set_laf_dcr_refresh_schedule
- 스키마: PROVIDER
- 설명: 프로바이더와 소비자가 서로 다른 클라우드 리전에 있을 때 그들 사이의 클린룸 데이터에 대한 새로고침 간격을 설정해요. 이 데이터에는 프로바이더 데이터셋, 프로바이더 실행 요청, 클린룸 정책, 클린룸 메타데이터가 포함돼요. 즉시 새로고침이 필요하면 SYSTEM$TRIGGER_LISTING_REFRESH를 호출할 수 있어요.
- 인수:
schedule— (Int) 새로고침 사이의 간격(분). 허용되는 최소값은 10이에요. - 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.set_laf_dcr_refresh_schedule(10);
클린룸에서 Python 사용
load_python_into_cleanroom
- 스키마: PROVIDER
- 설명: 사용자 지정 Python 코드를 클린룸에 로드해요. 이 절차로 클린룸에 로드된 코드는 소비자에게 보이지 않아요. 업로드된 코드는 Jinja 템플릿이 호출할 수 있어요. 코드는 여러 함수 정의를 포함할 수 있지만 템플릿이 호출할 수 있도록 노출되는 함수는 하나뿐이에요. 단일 패치로 여러 호출 가능한 Python 패키지를 클린룸에 로드하려면
prepare_python_for_cleanroom을 대신 호출해요. 클린룸에서 Python 코드 업로드 및 사용 방법 알아보기.- 이 절차는 클린룸의 패치 번호를 증가시키고 보안 검사를 트리거해요. 협업자에게 최신 버전을 공유하려면 검사 상태가 APPROVED가 될 때까지 기다려야 해요. 이 단계는 코드의 구문 오류를 보고하지 않으며, 이는 런타임에 발생해요.
- 이 절차는 오버로드되며 다섯 번째 인수의 데이터 유형이 다른 두 개의 시그니처가 있어요. 이는 코드를 인라인으로 업로드하는지 스테이지의 파일에서 로드하는지 결정해요.
- 인라인 업로드: 코드 문자열을
code인수에 전달해요.load_python_into_cleanroom의 인라인 코드 업로드 시그니처는 다음과 같아요:(cleanroom_name String, function_name String, arguments Array, packages Array, rettype String, handler String, code String) - 스테이지에서 링크: 파일에서 코드를 로드해요.
- 인라인 업로드: 코드 문자열을
- 인수:
- cleanroom_name (String) — 스크립트가 로드되어야 하는 클린룸 이름.
function_name— (String) 템플릿이handler가 지정하는 함수를 호출하는 데 사용하는 이름. 템플릿은 함수 이름을cleanroom네임스페이스로 한정해야 해요. 예:cleanroom.my_func(val1, val2).arguments— (공백으로 구분된 문자열 쌍 배열) 함수function_name에 필요한 인수 배열. 각 요소는 인수 이름과 Snowflake SQL 데이터 유형을 지정하는'*이름* *데이터_유형*'쌍이에요. 예:['size INT', 'start_date DATE'].packages— (String 배열) 코드에서 사용하는 Python 패키지 이름 목록. 클린룸은 이 목록의 모든 패키지와 Snowpark API를 기본으로 지원해요. 거기에 없는 패키지가 필요하다면 클린룸에서 Snowpark Container Services를 사용해야 해요.ret_type— (String) 함수handler가 반환하는 값의 SQL 데이터 유형. (일부 동등한 Python/SQL 유형 참고) Snowflake SQL 유형 동의어도 허용돼요(예: VARCHAR 대신 STRING). UDF의 경우 반환 유형은 단일 SQL 유형이에요. UDTF의 경우 반환 유형은*column_name* {SQL column type}쌍이 있는 TABLE 함수예요. 예:TABLE (item_name STRING, total FLOAT)handler— (String) 템플릿이function_name을 호출할 때 코드에서 호출되는 함수. UDF의 경우 함수 이름 자체, UDTF의 경우 UDTF를 구현하는 클래스 이름이에요.code— (String) 문자열로 된 Python 코드. Python UDF여야 해요.
두 번째 시그니처(스테이지에서 로드)는 코드를 Snowflake 스테이지에 업로드한 뒤 그 위치를 클린룸 API에 제공해요. provider.get_stage_for_python_files를 호출해 특정 클린룸에 사용하도록 설정된 스테이지를 사용해야 해요.
load_python_into_cleanroom은 스테이지에서 코드를 클린룸에 업로드할 때 다음 시그니처를 가져요.
(cleanroom_name String, function_name String, arguments Array, packages Array, imports Array, rettype String, handler String)
추가 인수:
-
imports— (String 배열) 스테이지에서 가져올 파일 목록. 각 파일 주소는 코드를 업로드한 스테이지 기준 상대 경로예요. 예:['/my_func.py']. 클린룸 스테이지는provider.get_stage_for_python_files를 호출해 찾아요. -
예시:
-- Inline upload
CALL samooha_by_snowflake_local_db.provider.load_python_into_cleanroom(
$cleanroom_name,
'assign_group', -- Name of the UDF.
['data STRING', '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 STRING', 'index INTEGER'], -- Arguments of the UDF.
['numpy', 'pandas'], -- Packages UDF will use.
['/assign_group.py'], -- Python file to import from a stage.
'INTEGER', -- Return type of UDF.
'assign_group.main' -- Handler, scoped to file name.
);
요청 로그
소비자 요청 로그를 관리하려면 다음 명령을 사용해요. 요청 로그는 소비자가 프로바이더에게 메시지를 보낼 수 있게 하며, 소비자 사용자 지정 템플릿 요청, 프로바이더 실행 요청에 대한 소비자 승인, Cross-Cloud Auto-Fulfillment 같은 기능을 활성화하려면 마운트되어야 해요.
mount_request_logs_for_all_consumers
- 스키마: PROVIDER
- 설명: 프로바이더에게 소비자의 요청에 대한 접근을 부여해요. 소비자 사용자 지정 템플릿 요청, 프로바이더 실행 요청에 대한 소비자 승인, Cross-Cloud Auto-Fulfillment를 포함한 다양한 기능을 지원하려면 요청 로그를 마운트해야 해요. 프로바이더가 이 절차를 호출한 후에 소비자가 클린룸을 설치하면, 지정된 클린룸을 이미 설치한 소비자에 대해서만 요청 로그를 마운트하므로 프로바이더가 이 절차를 다시 호출해야 해요.
- 인수: cleanroom_name (String) — 요청 로그를 마운트할 클린룸 이름.
- 반환값: (Table) — 각 소비자의 요청 로그 마운트 상태가 있는 소비자 테이블. 소비자가 클린룸에 접근 권한은 부여받았지만 아직 설치하지 않았다면 상태가 보류(pending)로 설명되며, 소비자가 클린룸을 설치한 후
mount_request_logs_for_all_consumers를 다시 호출해야 해요. - 예시:
CALL samooha_by_snowflake_local_db.provider.mount_request_logs_for_all_consumers($cleanroom_name);
view_request_mount_status_for_all_consumers
- 스키마: PROVIDER
- 설명: 지정된 클린룸의 모든 소비자에 대한 요청 로그 마운트 상태를 보여 줘요.
provider.mount_request_logs_for_all_consumers호출에 포함된 소비자만 표시돼요. 요청 로그는 소비자에서 프로바이더로 메시지가 전달되게 해 줘요. - 인수: cleanroom_name (String) — 클린룸 이름.
- 반환값: (Table) — 각 소비자와 소비자의 요청 로그 마운트 상태가 있는 테이블.
- 예시:
CALL samooha_by_snowflake_local_db.provider.view_request_mount_status_for_all_consumers($cleanroom_name);
view_request_logs
- 스키마: PROVIDER
- 설명: 이 클린룸에서 소비자가 보낸 요청 로그를 보여 줘요. 이전
mount_request_logs_for_all_consumers호출에 성공적으로 포함된 소비자의 요청만 표시돼요. - 인수: cleanroom_name (String) — 요청 로그를 검토할 클린룸 이름.
- 반환값: (Table) — 지정된 클린룸에서 소비자가 프로바이더에게 보낸 요청.
- 예시:
CALL samooha_by_snowflake_local_db.provider.view_request_logs($cleanroom_name);
차등 프라이버시(Differential privacy)
이 명령들은 사용자 수준 또는 프로바이더 계정 수준에서 차등 프라이버시를 제어해요. 차등 프라이버시에 대해 자세히 알아보기.
set_privacy_settings
- 스키마: PROVIDER
- 설명: 지정된 소비자가 사용자 지정 템플릿을 실행할 때 시행되는 프라이버시 설정을 설정(또는 재설정)해요. 이 절차는 이 소비자에 대한 모든 기존 설정을 덮어써요.
- 인수:
- cleanroom_name (String) — 클린룸 이름.
consumer_account_locator— (String) 쉼표로 구분된 목록의 하나 이상의 소비자 계정 로케이터.privacy_settings— (객체) 하나 이상의 템플릿에 대한 차등 프라이버시 설정을 지정하는 JSON 객체. 설정은 지정된 소비자가 실행하는 모든 템플릿에 적용돼요. 이 객체의 사용 가능한 필드 보기.
- 반환값: 성공 메시지.
- 예시:
-- Enforce differential privacy on queries by this consumer
-- with the settings provided.
CALL samooha_by_snowflake_local_db.provider.set_privacy_settings(
$cleanroom_name,
$consumer_locator,
{ 'differential': 1, 'epsilon': 0.1, 'privacy_budget': 3 }
);
is_dp_enabled_on_account
- 스키마: PROVIDER
- 설명: 이 계정에 대해 차등 프라이버시가 활성화되어 있는지 여부를 설명해요.
- 인수: 없음
- 반환값: 이 계정에 대해 차등 프라이버시가 활성화되어 있으면 TRUE, 그렇지 않으면 FALSE.
- 예시:
CALL samooha_by_snowflake_local_db.provider.is_dp_enabled_on_account();
suspend_account_dp_task
- 스키마: PROVIDER
- 설명: 차등 프라이버시 예산을 모니터링하고 시행하는 태스크를 비활성화해요. 이는 계정의 차등 프라이버시와 관련된 비용을 제어하는 데 사용돼요. 차등 프라이버시 태스크가 비활성화되면 차등 프라이버시가 지정된 사용자, 템플릿 또는 클린룸의 쿼리에 여전히 노이즈가 추가되지만, 예산 제한은 시행되지 않고 차등 프라이버시로 인한 비용도 발생하지 않아요. 차등 프라이버시 관리에 대해 자세히 알아보기.
- 인수: 없음
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.suspend_account_dp_task();
resume_account_dp_task
- 스키마: PROVIDER
- 설명: 현재 계정에서 차등 프라이버시 태스크 리스너를 재개하고 차등 프라이버시 예산을 시행해요. 이전에 설정된 차등 프라이버시 값(감도 또는 연결된 사용자 같은)은 유지돼요.
- 인수: 없음
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.provider.resume_account_dp_task();
Snowpark Container Services 명령
이 절차들을 사용하면 클린룸 내에서 Snowpark Container Services를 사용할 수 있어요.
load_service_into_cleanroom
- 스키마: PROVIDER
- 설명: 클린룸에서 컨테이너 서비스를 만들거나 업데이트해요. 이 절차를 호출하면 클린룸 패치 번호가 업데이트되므로, 이 절차 후에
provider.set_default_release_directive를 호출해야 해요. 이 절차는 서비스를 만들거나 업데이트할 때마다 호출해야 해요. 클라이언트는 업데이트를 보려면consumer.start_or_update_service를 호출해야 해요. 클린룸에서 Snowpark Container Services 사용 알아보기. - 인수:
- cleanroom_name (String) — 클린룸 이름.
service_spec— (String)spec요소를 루트로 하는 서비스의 YAML 사양.service_config— (String) 서비스의 YAML 형식 구성. 다음 속성이 지원돼요.default_service_options— 서비스 수준 기본값의 선택적 배열. 소비자가 서비스를 만들 때 이 값을 재정의할 수 있어요. 다음 하위 속성이 지원돼요.min_instances(Integer, 선택)max_instances(Integer, 선택)allow_monitoring(Boolean, 선택) — TRUE면 소비자가 서비스 로그를 볼 수 있어요. 기본값은 FALSE.
functions— 서비스가 노출하는 함수 배열. 각 함수 정의는 SPCS 서비스 함수 정의에 매핑돼요. 각 요소의 세부 사항은 해당 문서를 참고하세요. 다음 하위 속성이 지원돼요.nameargsreturnsendpointpathmax_batch_rows(선택)context_headers(선택)
- 반환값: (String) 성공 메시지(성공한 경우). 성공하지 않으면 오류를 던져요.
- 예시:
CALL samooha_by_snowflake_local_db.provider.load_service_into_cleanroom(
$cleanroom_name,
$$
spec:
containers:
- name: lal
image: /dcr_spcs/repos/lal_example/lal_service_image:latest
env:
SERVER_PORT: 8000
readinessProbe:
port: 8000
path: /healthcheck
endpoints:
- name: lalendpoint
port: 8000
public: false
$$,
$$
default_service_options:
min_instances: 1
max_instances: 1
allow_monitoring: true
functions:
- name: train
args: PROVIDER_TABLE VARCHAR, PROVIDER_JOIN_COL VARCHAR, CONSUMER_TABLE VARCHAR, CONSUMER_JOIN_COL VARCHAR, DIMENSIONS ARRAY, FILTER VARCHAR
returns: VARCHAR
endpoint: lalendpoint
path: /train
- name: score
args: PROVIDER_TABLE VARCHAR, PROVIDER_JOIN_COL VARCHAR, CONSUMER_TABLE VARCHAR, CONSUMER_JOIN_COL VARCHAR, DIMENSIONS ARRAY
returns: VARCHAR
endpoint: lalendpoint
path: /score
- name: score_batch
args: PROVIDER_TABLE VARCHAR, PROVIDER_JOIN_COL VARCHAR, CONSUMER_TABLE VARCHAR, CONSUMER_JOIN_COL VARCHAR, DIMENSIONS ARRAY
returns: VARCHAR
endpoint: lalendpoint
path: /score_batch
$$
);
환경 관리
클린룸 기능과 지원되는 흐름을 활용하는 데 일반적으로 도움이 되는 명령을 사용해요.
manage_datastats_task_on_account
- 스키마: PROVIDER
- 설명: 클린룸 통계를 계산하는 백그라운드 태스크를 활성화하거나 비활성화해요. 태스크는 기본적으로 실행되지만, 비용을 줄이려면 비활성화할 수 있어요. 태스크를 관리하려면 모든 협업자가 같은 값으로 적절한
provider또는consumer버전의 이 절차를 호출해야 해요. - 인수:
enable— (Boolean) 태스크를 활성화하려면 TRUE, 비활성화하려면 FALSE. - 반환값: 성공 메시지.
- 예시:
-- Disable the task in this account.
CALL samooha_by_snowflake_local_db.provider.manage_datastats_task_on_account(FALSE);
enable_local_db_auto_upgrades
- 스키마: LIBRARY
- 설명: 새 절차나 기능이 릴리스될 때 Snowflake Data Clean Rooms 환경을 자동으로 업그레이드하는 태스크(
samooha_by_snowflake_local_db.admin.expected_version_task)를 활성화해요. 각 릴리스마다library.apply_patch를 호출하는 대신 이 절차를 호출해 업그레이드를 자동화해요. 이 태스크를 비활성화하면 비용을 줄일 수 있지만, 시스템에 최신 버전의 클린룸 환경이 있도록 태스크를 계속 실행하는 것을 권장해요. - 인수: 없음
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.library.enable_local_db_auto_upgrades();
disable_local_db_auto_upgrades
- 스키마: LIBRARY
- 설명: 새 버전이 릴리스될 때 Snowflake Data Clean Rooms 환경을 자동으로 업그레이드하는 태스크를 비활성화해요. 자동 업그레이드를 비활성화하면 각 새 릴리스에 대해
library.apply_patch를 호출해야 해요. - 인수: 없음
- 반환값: (String) — 성공 메시지.
- 예시:
CALL samooha_by_snowflake_local_db.library.disable_local_db_auto_upgrades();