Snowflake Data Clean Rooms: 공급자 API 참조 가이드¶
이 페이지에서는 클린룸 API 컨슈머가 클린룸을 관리하는 데 사용하는 프로시저에 대해 설명합니다. 코딩 설정 지침은 코딩 설정 섹션을 참조하세요.
클린룸 생성, 구성 및 삭제¶
이러한 프로시저를 통해 공급자가 클린룸을 생성, 구성, 삭제할 수 있습니다.
view_cleanrooms¶
- 스키마:
PROVIDER
설명: 이 공급자 계정으로 생성한 모든 기존 클린룸 목록을 표시합니다.
인자: 없음
반환: (table) 이 공급자 계정에서 생성한 클린룸 목록입니다. 클린룸은 컨슈머에게 공유하거나 설치하거나 사용할 필요가 없습니다. 삭제된 클린룸은 데이터베이스에서 삭제되며 이 목록에 표시되지 않습니다.
예:
CALL samooha_by_snowflake_local_db.provider.view_cleanrooms();
describe_cleanroom¶
- 스키마:
PROVIDER
설명: 템플릿, 조인 정책, 열 정책, 컨슈머 등 클린룸에 대한 정보 요약을 확인하십시오.
인자:
*cleanroom_name (문자열) - 정보를 가져올 클린룸의 이름입니다.
**반환값:**(string) 클린룸 메타데이터 요약입니다.
예:
CALL samooha_by_snowflake_local_db.provider.describe_cleanroom($cleanroom_name);
cleanroom_init¶
- 스키마:
PROVIDER
설명: 계정에 지정된 이름으로 클린룸을 만듭니다. 이 프로시저는 실행하는 데 1분 이상 걸릴 수 있습니다. 클린룸은 ``create_or_update_cleanroom_listing``을 호출할 때까지 클린룸 UI에서 또는 공동 작업자에게 표시되지 않습니다.
인자:
cleanroom_name (문자열) - 클린룸 이름으로, 최대 80자입니다. 유효한 문자는
[A-Z,a-z,0-9,_]및 공백입니다.distribution- (문자열, 선택 사항) - 다음 값 중 하나입니다.INTERNAL (기본값) - 클린룸이 같은 조직에 속한 사용자에게만 표시되며 기본 버전 변경 전에는 보안 검사를 트리거하지 않습니다.
EXTERNAL - 클린룸이 생산 준비가 완료된 상태이며 조직 외부에서 공유할 수 있습니다. 클린룸이 기본 버전 변경 전에 보안 검사를 트리거합니다. 클린룸이 생성된 후 배포를 변경하려면 여기에 표시된 대로 ``ALTER PACKAGE``를 호출하세요.
ALTER APPLICATION PACKAGE samooha_cleanroom_<CLEANROOM_ID> SET DISTRIBUTION = EXTERNAL;
반환: (문자열) 성공 메시지.
예:
-- 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>``은 이 형식을 따릅니다.
모든 클린룸은 다음 버전과 패치 번호로 생성됩니다.
버전: V1_0
패치: 0
참고
클린룸 배포가 EXTERNAL로 설정된 경우 이 프로시저는 클린룸 보안 검사가 APPROVED 상태로 이동한 후에만 호출할 수 있습니다. 보안 상태를 확인하려면 ``view_cleanroom_scan_status``를 호출하세요.
인자:
*cleanroom_name (문자열) - 클린룸 이름입니다.
version- (문자열) 버전입니다. 항상 “V1_0”이어야 합니다.patch- (문자열) 컨슈머가 로딩한 패치 번호입니다. 이 값은 0에서 시작하며, 새로운 클린룸 버전이 가용성을 확보할 때마다 증가시켜야 합니다. 위에서 설명한 대로 사용 가능한 버전을 확인할 수 있습니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.set_default_release_directive(
$cleanroom_name,
'V1_0', '0'
);
drop_cleanroom¶
- 스키마:
PROVIDER
설명: 클린룸을 삭제합니다. 클린룸이 설치된 공동 작업자는 더 이상 클린룸에 액세스하거나 사용할 수 없습니다. 다음에 브라우저를 새로 고칠 때 클린룸이 더 이상 클린룸 UI에 표시되지 않습니다.
인자:
*cleanroom_name (문자열) - 삭제할 클린룸의 이름입니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.drop_cleanroom($cleanroom_name);
enable_consumer_run_analysis¶
- 스키마:
PROVIDER
설명: 컨슈머가 클린룸에서 분석을 실행할 수 있습니다. 이 기능은 모든 새 클린룸에서 기본적으로 활성화되어 있으므로 클린룸에 대한 컨슈머 실행 분석을 명시적으로 비활성화한 경우에만 이 프로시저를 실행하면 됩니다.
인자:
cleanroom_name (문자열) - 컨슈머 실행 분석이 허용되는 클린룸의 이름입니다.
consumer_accounts- (문자열 배열) 이 기능을 활성화할 모든 컨슈머의 계정 로케이터입니다. NOTE: 이 컨슈머는 이미 클린룸에 추가되어 있어야 합니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.enable_consumer_run_analysis(
$cleanroom_name,
['<CONSUMER_ACCOUNT_LOCATOR_1>']
);
disable_consumer_run_analysis¶
- 스키마:
PROVIDER
설명: 지정된 컨슈머가 지정된 클린룸에서 분석을 실행하지 못하도록 합니다. 기본적으로 모든 컨슈머는 클린룸에서 분석을 실행할 수 있습니다.
인자:
*cleanroom_name (문자열) - 컨슈머 실행 분석이 비활성화된 클린룸입니다.
consumer_accounts- (문자열 배열) 이 클린룸에서 분석을 실행할 수 없는 컨슈머의 계정 로케이터입니다. NOTE: 이러한 컨슈머는 이미 클린룸에 추가되어 있어야 합니다.
반환: (문자열) 성공 메시지.
예:
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) 이 클린룸이 컨슈머 분석을 허용하는지 여부.
예:
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 (문자열) - 게시하거나 업데이트할 클린룸의 이름입니다.
반환: (문자열) 성공 메시지.
오류 처리:
“이 계정에 대해 클라우드 간 자동 복제가 활성화되지 않았습니다.”라는 오류가 표시되면 컨슈머 중 한 명이 다른 클라우드 호스팅 리전에 있다는 의미입니다. :doc:`/user-guide/cleanrooms/enabling-laf`에 설명된 대로 클라우드 간 자동 복제를 활성화해야 합니다.
예:
CALL samooha_by_snowflake_local_db.provider.create_or_update_cleanroom_listing(
$cleanroom_name
);
데이터 등록 및 등록 취소¶
다음 명령을 사용하여 데이터베이스, 스키마, 오브젝트를 등록 및 등록 해제합니다. 테이블과 뷰는 클린룸에 연결하기 전에 등록되어야 합니다. 데이터베이스나 스키마를 등록하면 해당 데이터베이스나 스키마에 있는 모든 오브젝트가 등록됩니다. 데이터 등록에 대해 자세히 알아보세요.
register_db¶
- 스키마:
PROVIDER
설명: 이 클린룸 환경에서 데이터베이스와 데이터베이스 내의 모든 오브젝트를 개별 클린룸에 연결할 수 있습니다. 이 프로시저는 클린룸 환경에서 데이터에 액세스하는 데 사용되는 데이터베이스에 대한 USAGE 및 SELECT 권한을 SAMOOHA_APP_ROLE에 부여합니다.
이 프로시저를 호출하려면 데이터베이스에 MANAGE GRANTS 액세스 권한이 있어야 합니다. 그러면 이 클린룸 환경의 다른 공급자는 SELECT 권한이 없이도 이러한 오브젝트를 자신의 클린룸에 링크할 수 있습니다.
중요
이 프로시저는 호출된 후에 생성된 오브젝트를 등록하지 않습니다. 데이터베이스에 새 오브젝트가 추가되어 해당 오브젝트도 등록하려면 이 프로시저를 다시 호출해야 합니다.
인자:
db_name- (문자열) 등록할 데이터베이스의 이름입니다.
반환: (문자열) 성공 메시지.
예:
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 권한이 있어야 합니다.
이 프로시저는 클린룸 환경에서 데이터에 액세스하는 데 사용되는 USAGE 에 스키마에 대한 SELECT 및 SAMOOHA_APP_ROLE 권한을 부여합니다.
관리형 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수를 사용하여 생성된 스키마)를 등록하려면 대신 ``library.register_managed_access_schema``를 사용합니다.
중요
이 프로시저는 호출된 후에 생성된 오브젝트를 등록하지 않습니다. 데이터베이스에 새 오브젝트가 추가되어 해당 오브젝트도 등록하려면 이 프로시저를 다시 호출해야 합니다.
인자:
schema_name- (문자열 배열) 등록할 하나 이상의 정규화된 스키마 이름의 배열입니다.
반환: (문자열) 성공 메시지.
예:
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- (문자열 배열) 하나 이상의 정규화된 스키마 이름의 배열입니다.
반환: (문자열) 성공 메시지.
예:
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- (배열) 정규화된 오브젝트 이름의 배열입니다. 이러한 오브젝트를 클린룸에 연결할 수 있습니다.
반환: (문자열) 성공 메시지.
예
테이블과 뷰를 등록하려면 다음을 수행합니다.
USE ROLE <role_with_manage_grants>;
CALL samooha_by_snowflake_local_db.library.register_objects(
[
'SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS',
'SAMOOHA_SAMPLE_DATABASE.INFORMATION_SCHEMA.FIELDS'
]
);
enable_external_tables_on_account¶
- 스키마:
LIBRARY
설명: 이 계정의 모든 Clean Rooms에서 Iceberg 또는 외부 테이블을 사용하도록 설정합니다. Iceberg 또는 외부 테이블을 어느 한 계정으로 연결할 수 있도록 하려면 공급자 및 컨슈머 계정 :emph:`모두`에서 ACCOUNTADMIN으로 호출해야 합니다. 이 기능을 이 계정의 특정 클린룸으로 제한하려면 ``enable_external_tables_for_cleanroom``을 대신 호출합니다.
성공하고 모든 보안 검사를 통과하면 클린룸의 :doc:`새 패치 버전</user-guide/cleanrooms/dcr-versions>`이 생성됩니다.
인자: 없음
반환: (문자열) 성공 메시지입니다. 성공하면 보안 검사를 트리거하고 보안 검사에 성공하면 생성될 패치 번호도 제공합니다.
예:
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``를 대신 호출합니다.
성공하면 클린룸의 :doc:`새 패치 버전</user-guide/cleanrooms/dcr-versions>`이 생성됩니다.
인자:
*cleanroom_name (문자열) - 공급자가 Iceberg 또는 외부 테이블을 연결할 수 있는 클린룸의 이름입니다.
반환: (문자열) 성공 메시지입니다. 성공하면 보안 검사를 트리거하고 보안 검사에 성공하면 생성될 패치 번호도 제공합니다.
예:
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 Room 네이티브 애플리케이션에 부여된 데이터베이스 수준 권한 부여를 제거합니다. 이를 통해 클린룸 UI의 선택기에서 모든 데이터베이스도 제거됩니다.
인자:
db_name- (문자열) 등록 해제할 데이터베이스의 이름입니다.
반환: (문자열) 성공 메시지.
예:
USE ROLE <role_with_manage_grants>;
CALL samooha_by_snowflake_local_db.library.unregister_db('SAMOOHA_SAMPLE_DATABASE');
unregister_schema¶
- 스키마:
LIBRARY
설명: 스키마를 등록 취소하여 사용자가 해당 테이블과 뷰를 클린룸에 링크할 수 없도록 합니다.
관리형 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수를 사용하여 생성된 스키마)를 등록 해제하려면 대신 ``library.unregister_managed_access_schema``를 사용합니다.
인자:
schema_name- (배열) 등록 해제할 스키마입니다.
반환: (문자열) 성공 메시지.
예:
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- (배열) 등록 해제할 관리형 스키마입니다.
반환: (문자열) 성공 메시지.
예:
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- (배열) 액세스를 취소해야 하는 정규화된 오브젝트 이름의 배열입니다.
반환: (문자열) 성공 메시지.
예
테이블 및 뷰 등록을 취소하려면 다음을 수행합니다.
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 정책이 포함된 경우 사용자(또는 클린룸 관리자)는 데이터를 클린룸에 연결하기 위해 :ref:`클린룸에 해당 정책 데이터베이스에 대한 액세스 권한을 부여<label-dcr_link_views_with_external_policies>`해야 합니다.
여기에 링크된 모든 항목은 데이터베이스, 스키마 또는 오브젝트 수준에서 먼저 등록해야 합니다.
참고
클린룸에 연결된 테이블이 삭제, 이름 변경, 이동 또는 제한적 권한이 추가된 경우, 동일한 위치, 이름 및 권한을 사용하여 테이블을 복원할 때까지 클린룸에서 해당 테이블을 사용할 수 없습니다.
인자:
cleanroom_name (문자열) - 오브젝트에 액세스할 수 있는 클린룸의 이름입니다.
tables_list- (문자열 배열) 클린룸에 연결할 테이블 또는 뷰의 목록입니다. 오브젝트를 연결하려면 먼저 등록해야 합니다.consumer_list- (문자열 배열, 선택 사항) 존재하는 경우 여기에 나열된 컨슈머만 이 오브젝트에 액세스할 수 있도록 허용합니다. 존재하지 않는 경우 클린룸에 액세스할 수 있는 모든 사용자가 이 데이터에 액세스할 수 있도록 허용합니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.link_datasets(
$cleanroom_name,
[
'SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS',
'MYDB.MYSCH.EXPOSURES'
]
);
참고
뷰를 Clean Room에 연결하고 뷰가 다른 데이터베이스의 테이블을 기반으로 하는 경우 뷰와 뷰의 원본을 모두 등록해야 합니다
unlink_datasets¶
- 스키마:
PROVIDER
설명: 모든 사용자의 지정된 클린룸의 지정된 테이블에 대한 액세스 권한을 제거합니다. 지정된 테이블은 공급자가 링크한 것이어야 합니다.
인자:
cleanroom_name (문자열) - 이 데이터 세트에 연결된 클린룸의 이름입니다.
tables_list- (배열) 클린룸에서 연결 해제할 테이블 또는 뷰 이름의 배열입니다.
반환: (문자열) 성공 메시지.
예:
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 (문자열) - 클린룸의 이름입니다.
반환: 지정된 클린룸에 연결된 오브젝트 테이블과 각 오브젝트에 대한 클린룸의 내부 뷰 이름입니다.
예:
CALL samooha_by_snowflake_local_db.provider.view_provider_datasets($cleanroom_name);
restrict_table_options_to_consumers¶
- 스키마:
PROVIDER
설명: 특정 컨슈머가 클린룸의 테이블에 액세스할 수 있는지 여부를 제어합니다. 이 프로시저는 바꾸기 전용 으로, 이전 호출에서 설정된 모든 값을 완전히 덮어씁니다.
provider.link_datasets, provider.restrict_table_options_to_consumers 또는 다른 메서드를 통해 액세스 권한을 부여받은 컨슈머는 이 메서드를 호출할 때 지정하지 않으면 테이블에 대한 액세스 권한을 잃게 됩니다.
참고
이 프로시저를 호출하여 생성한 제한은 클린룸 UI에서 예상대로 동작하지 않을 수 있습니다. 클린룸 UI에서 사용할 수 있는 클린룸에서는 이 프로시저를 호출해서는 안 됩니다.
인자:
*cleanroom_name (문자열) - 제한할 클린룸의 이름입니다.
access_details- (오브젝트) JSON 오브젝트로, 여기서 각 필드 이름은 테이블 또는 뷰의 정규화된 이름이고, 필드 값은 해당 테이블 또는 뷰에 액세스할 수 있는 사용자의 계정 로케이터 배열입니다.
반환: (문자열) 성공 메시지.
예:
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']
}
);
정책 관리하기¶
데이터 클린룸의 조인 정책은 :doc:`Snowflake 전체 조인 정책</user-guide/join-policies>`과 동일하지 않습니다. 클린룸에 대한 조인 정책은 이 프로시저를 통해서만 설정되며, 클린룸 외부의 테이블에 설정된 조인 정책은 클린룸에서 무시됩니다.
Learn more about table policies in clean rooms.
set_join_policy¶
- 스키마:
PROVIDER
설명: 이 클린룸 내에서 템플릿을 실행할 때 컨슈머가 조인할 수 있는 열을 지정합니다.
이 함수를 호출하면 이전 정책이 새 정책으로 완전히 바뀝니다.
클린룸 정책에 대한 자세한 내용은 Clean Room 테이블 정책 이해 섹션을 참조하세요.
중요
조인 정책은 템플릿이 행을 조인하기 위해 join_policy 또는 join_and_column_policy JinjaSQL 필터를 적용하는 경우에만 적용됩니다.
참고
데이터 클린룸의 조인 정책은 Snowflake 전체 조인 정책과 동일하지 않습니다. 클린룸에 대한 조인 정책은 이 프로시저를 통해서만 설정되며, 클린룸 외부의 테이블에 설정된 조인 정책은 클린룸에서 무시됩니다.
인자:
*cleanroom_name (문자열) - 조인 정책을 적용해야 하는 클린룸의 이름입니다.
table_and_col_names- (문자열 배열)database_name.schema_name.table_or_view_name:column_name형식의 정규화된 열 이름입니다. . 및 : 마크의 올바른 사용에 유의하세요.
반환: (문자열) 성공 메시지.
예:
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
설명: 지정된 클린룸에서 공급자의 활성화 정책을 표시합니다.
클린룸 정책에 대한 자세한 내용은 Clean Room 테이블 정책 이해 섹션을 참조하세요.
인자:
*cleanroom_name (문자열) - 쿼리할 클린룸의 이름입니다.
반환: (table) 클린룸의 모든 테이블 또는 뷰에서 조인 가능한 행 목록입니다.
예:
CALL samooha_by_snowflake_local_db.provider.view_join_policy($cleanroom_name);
set_column_policy¶
- 스키마:
PROVIDER
설명: 다른 공동 작업자가 실행하는 템플릿에 프로젝션할 수 있는 데이터 열을 지정합니다.
이 함수를 호출하면 이전 정책이 새 정책으로 완전히 바뀝니다.
ID 열 또는 이메일 주소와 같은 민감한 데이터가 포함된 열에는 열 정책을 설정하지 마세요. 일반적으로 이러한 종류의 데이터는 프로젝션되는 것을 원하지 않습니다.
와일드카드가 포함된 쿼리는 이러한 검사를 사용하여 포착되지 않을 수 있으므로 분석 템플릿을 설계할 때는 신중을 기해야 합니다.
클린룸 정책에 대한 자세한 내용은 Clean Room 테이블 정책 이해 섹션을 참조하세요.
인자:
*cleanroom_name (문자열) - 클린룸의 이름입니다.
analysis_and_table_and_cols- (문자열 배열) 템플릿에서 사용할 수 있는 열의 배열입니다. 각 열의 형식은 :samp:`{template_name}:{full_table_name}:{column_name}`입니다.
반환: (문자열) 성공 메시지.
예:
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
설명: 지정된 클린룸에서 공급자의 열 정책을 보여줍니다.
클린룸 정책에 대한 자세한 내용은 Clean Room 테이블 정책 이해 섹션을 참조하세요.
인자:
cleanroom_name (문자열)
반환: (table) 어떤 템플릿에서 어떤 열을 사용할 수 있는지입니다.
예:
CALL samooha_by_snowflake_local_db.provider.view_column_policy($cleanroom_name);
공급자 템플릿 관리하기¶
다음 명령을 사용하여 이 클린룸에서 지원되는 템플릿/분석을 추가합니다.
view_added_templates¶
- 스키마:
PROVIDER
설명: 클린룸에서 공급자가 추가한 템플릿을 봅니다. 이 공급자의 모든 클린룸에 있는 모든 템플릿을 나열하는 방법은 없습니다.
인자:
*cleanroom_name (문자열) - 쿼리할 클린룸입니다.
반환: (table) - 지정된 클린룸에서 사용 가능한 템플릿 목록과 각 템플릿에 대한 세부 정보입니다.
예:
CALL samooha_by_snowflake_local_db.provider.view_added_templates($cleanroom_name);
view_template_definition¶
- 스키마:
PROVIDER
설명: 특정 템플릿에 대한 정보를 표시합니다. 공급자 템플릿을 보는 컨슈머는 ``consumer.view_template_definition``을 사용해야 합니다.
인자:
*cleanroom_name (문자열) - 이 템플릿이 있는 클린룸의 이름입니다.
template_name- (문자열) 정보를 요청할 템플릿의 이름입니다.
반환: (문자열) 템플릿 정의입니다.
예:
CALL samooha_by_snowflake_local_db.provider.view_template_definition(
$cleanroom_name,
$template_name);
add_templates¶
- 스키마:
PROVIDER
설명: 클린룸에 템플릿 목록을 추가합니다. 기존 템플릿 목록은 대체되지 않습니다.
인자:
*cleanroom_name (문자열) - 템플릿을 추가할 클린룸의 이름입니다.
template_names- (문자열 배열) 추가할 템플릿의 이름입니다. Snowflake에서 제공하는 템플릿 전용입니다. 사용자 지정 템플릿을 추가하려면 ``add_custom_sql_template``을 호출하세요.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.add_templates(
$cleanroom_name,
['my_custom_template']);
clear_template¶
- 스키마:
PROVIDER
설명: 클린룸에서 지정된 템플릿을 제거합니다.
인자:
*cleanroom_name (문자열) - 클린룸의 이름입니다.
template_name- (문자열) 해당 클린룸에서 제거할 템플릿의 이름입니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.clear_template(
$cleanroom_name,
'prod_custom_template');
clear_all_templates¶
- 스키마:
PROVIDER
설명: 클린룸에 추가된 모든 템플릿을 제거합니다.
인자:
cleanroom_name (문자열) - 모든 템플릿을 제거할 클린룸의 이름입니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.clear_all_templates($cleanroom_name);
add_custom_sql_template¶
- 스키마:
PROVIDER
설명: 클린룸에 사용자 지정 JinjaSQL 템플릿을 추가합니다. 이렇게 하면 컨슈머가 템플릿을 호출할 수 있습니다. 사용자 지정 템플릿을 만드는 방법을 알아보세요.
이 API를 두 번 이상 호출하여 여러 사용자 지정 템플릿을 클린룸에 추가할 수 있습니다. 이 프로시저는 이 클린룸에서 같은 이름의 이전 템플릿을 덮어씁니다.
컨슈머가 템플릿을 사용하여 :doc:`결과를 공급자에게 다시 활성화</user-guide/cleanrooms/activation>`하는 경우 명령은 다음 요구 사항을 충족해야 합니다.
사용자 지정 템플릿의 이름은
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 (문자열) - 이 템플릿이 적용되는 클린룸의 이름입니다.
template_name- (문자열) 템플릿 이름입니다. 모두 소문자, 숫자, 공백 또는 밑줄이어야 합니다. 활성화 템플릿의 이름은 “activation”으로 시작해야 합니다.template- (문자열) JinjaSQL 템플릿입니다.sensitivity- (부동 소수점, 선택 사항) 이 클린룸에 차등 개인정보 보호가 활성화된 경우 이 템플릿이 반환하는 데이터에 적용되는 차등 개인정보 보호 노이즈의 양을 제어합니다. 0보다 큰 숫자여야 합니다. 기본값은 1.0입니다. 이 인자를 적용하려면 이 클린룸에서 차등 개인정보 보호 작업이 실행 중이어야 합니다.consumer_locators- (문자열 배열, 선택 사항) 하나 이상의 계정 로케이터로 구성된 배열입니다. 있는 경우 이 템플릿은 이러한 계정에 대해서만 클린룸에 추가됩니다. 나중에 ``provider.restrict_template_options_to_consumers``를 호출하여 이 목록을 수정할 수 있습니다. 컨슈머 목록을 지정하지 않으면 모든 컨슈머가 지정된 클린룸에서 사용자 지정 템플릿 사용할 수 있습니다.is_obfuscated- (부울, 선택 사항) TRUE로 설정하면 컨슈머가 템플릿 본문을 볼 수 없습니다. 난독화된 템플릿을 실행하려면 Snowflake Enterprise Edition 이상을 사용해야 합니다. 이 템플릿이 공급자 실행 분석에 사용되는 경우 컨슈머는is_obfuscated상태를 변경할 때마다 분석 요청을 다시 승인해야 합니다. ``is_obfuscated``는 ``sensitivity``와 함께 사용할 수 없습니다.
반환: (문자열) 성공 메시지.
예:
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 (문자열): 이 템플릿이 포함된 클린룸의 이름입니다. 제출된 양식은 지정된 클린룸의 지정된 템플릿에만 적용됩니다.
template_name- (문자열) 이 UI가 적용되는 템플릿의 이름입니다. 이는 사용자에게 표시되는 제목이 아니며,template_information.display_name필드를 사용하여 지정됩니다.template_information- (사전) 클린룸 UI에 표시할 템플릿에 대한 메타 정보입니다. 다음 속성을 정의해야 하거나 정의할 수 있습니다.display_name(필수): 클린룸 UI에서 템플릿의 표시 이름입니다.description(필수): 템플릿에 대한 설명입니다.methodology(필수): 인자에 대한 설명과 결과입니다.warehouse_hints(오브젝트): 분석을 실행하는 데 사용할 웨어하우스 유형을 추천합니다. 다음 필드가 있는 오브젝트입니다.render_table_dropdowns(오브젝트): 사용자가 쿼리에 사용할 공급자 또는 컨슈머 테이블을 선택할 수 있는 기본 드롭다운 목록을 표시할지 여부입니다. 이는 다음 필드가 있는 오브젝트입니다.render_consumer_table_dropdown- (부울) TRUE인 경우 기본 컨슈머 테이블 선택기를 표시합니다. FALSE인 경우 컨슈머 테이블 선택기를 숨깁니다. 템플릿은my_table템플릿 변수를 사용하여 선택한 값에 목록으로 액세스할 수 있습니다. 요소가 ``references=CONSUMER_TABLES``로 설정된 경우 기본값은 FALSE이며 그렇지 않은 경우 기본값은 TRUE입니다.render_provider_table_dropdown- (부울) TRUE인 경우 기본 공급자 테이블 선택기를 표시합니다. FALSE인 경우 공급자 테이블 선택기를 숨깁니다. 템플릿은source_table템플릿 변수를 사용하여 선택한 값에 목록으로 액세스할 수 있습니다. 요소가 ``references=PROVIDER_TABLES``로 설정된 경우 기본값은 FALSE이며 그렇지 않은 경우 기본값은 TRUE입니다.
activation_template_name- (문자열) 이 클린룸에 있는 활성화 템플릿의 이름입니다.cleanroom접두사 없이 템플릿 이름을 사용합니다. 활성화 템플릿에 대해 알아보세요.enabled_activations- (문자열) 사용 설정된 활성화의 종류입니다. 가능한 값은consumer, ``provider``입니다. ``activation_template_name``이 지정된 경우 기본값 없음;이 제공됩니다.
*
details- (사전, 선택 사항) 템플릿에 값을 전달하는, 사용자가 구성 가능한 입력 필드를 정의합니다. 이는 키 - 오브젝트 쌍의 사전으로, 각 쌍은 하나의 양식 요소를 나타냅니다. 키는 연결된 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 요소의 유형입니다. 입력 필드에 *참조*가 지정된 경우 이 항목을 생략합니다(유형은 자동으로 결정됨). 지원되는 값은 다음과 같습니다.any(기본값): 일반 텍스트 입력 필드boolean: True/False 선택기integer: 화살표를 사용하 숫자 변경multiselect: 드롭다운 목록에서 여러 항목 선택dropdown: 드롭다운 목록에서 하나의 항목 선택date: 날짜 선택기
default: 이 요소의 기본값입니다.choices: (문자열 배열) dropdown 및 multiselect 요소에 대한 선택 목록입니다.infoMessage: 요소 옆에 표시되는 정보성 호버 텍스트입니다. 제공하지 않으면 도구 설명이 제공되지 않습니다.size: 요소 크기입니다. 지원되는 값은XS,S,M,L, ``XL``입니다.required: 사용자가 값을 요구하는지 여부입니다. TRUE 또는 FALSE를 지정합니다.group: UI에서 항목을 그룹화하는 데 사용되는 그룹 이름입니다. UI에서 함께 그룹화해야 하는 항목에 대해 동일한 그룹 이름을 사용합니다. 기본 드롭다운 목록을 숨기면 사용자 지정 템플릿에서{{ source_table }}및{{ my_table}}특수 인자를 사용한 후 원하는 테이블이 포함된 자체 드롭다운 목록을 정의합니다. 사용자 지정 템플릿을 정의할 때 이러한 특수 변수를 사용하는 방법에 대한 자세한 내용은 provider.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- (사전) 클린룸 UI에서 템플릿 결과를 그래픽으로 표시하는 방법을 정의합니다. 제공하지 않으면 결과가 그래프로 표시되지 않고 테이블에만 표시됩니다. 그래프를 원하지 않으면 이 인자에 빈 오브젝트 ``{}``를 제공합니다. 허용되는 필드는 다음과 같습니다.measure_columns: 클린룸 UI에서 생성된 그래프에서 사용할 측정값 및 차원이 포함된 열의 이름입니다.default_output_type: 결과를 표시할 기본 형식입니다. 사용자는 일반적으로 데이터가 적절한 형식인 경우 UI에서 표시 형식을 변경할 수 있습니다. 지원되는 데이터 타입은 다음과 같습니다.TABLE: (기본값) 테이블 형식BAR: 다양한 카테고리를 비교하기에 좋은 막대 차트LINE: 시간 경과에 따른 추세 또는 연속 데이터를 표시하는 데 유용한 꺾은선형 차트PIE: 비율 또는 백분율을 표시하는 데 적합한 원형 차트
다음 테이블은 충돌할 수 있는 값에 대한 details 오브젝트에서 허용되는 값의 행렬을 보여줍니다.
|
|
|
|
|
|
|---|---|---|---|---|---|
|
|
허용되지 않음 |
허용되지 않음 |
FALSE |
TRUE 또는 FALSE |
|
|
허용되지 않음 |
TRUE |
TRUE 또는 FALSE |
|
|
|
허용되지 않음 |
TRUE 또는 FALSE |
TRUE 또는 FALSE |
|
|
|
허용되지 않음 |
TRUE |
TRUE 또는 FALSE |
|
|
|
허용되지 않음 |
TRUE 또는 FALSE |
TRUE 또는 FALSE |
|
|
허용되지 않음 |
허용되지 않음 |
TRUE 또는 FALSE |
FALSE |
|
|
허용되지 않음 |
|
TRUE 또는 FALSE |
TRUE |
|
|
허용되지 않음 |
|
TRUE 또는 FALSE |
TRUE |
|
|
허용되지 않음 |
|
TRUE 또는 FALSE |
TRUE |
|
|
허용되지 않음 |
허용되지 않음 |
TRUE 또는 FALSE |
TRUE 또는 FALSE |
반환: (문자열) 성공 메시지.
예:
-- 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 (문자열) - 클린룸의 이름입니다.
access_details- (JSON 오브젝트) 템플릿의 이름과 해당 클린룸에서 해당 템플릿에 액세스할 수 있는 사용자입니다. 템플릿이 지정된 경우 여기에 나열된 사용자만 해당 클린룸에서 해당 템플릿에 액세스할 수 있습니다. 템플릿당 하나의 하위 오브젝트가 있는 오브젝트로,'{template_name': ['user1_locator','user2_locator','userN_locator']}형식을 갖습니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.restrict_template_options_to_consumers(
$cleanroom_name,
{
'prod_template_1': ['CONSUMER_1_LOCATOR', 'CONSUMER_2_LOCATOR']
}
);
컨슈머 정의 템플릿¶
다음 APIs를 사용하면 클린룸에 템플릿을 추가하라는 컨슈머의 요청을 승인하거나 거부할 수 있습니다. 컨슈머 정의 템플릿은 공급자가 컨슈머의 추가 요청을 승인한 경우에만 클린룸에 추가됩니다. 자세한 내용은 컨슈머가 작성한 사용자 지정 템플릿 섹션을 참조하세요.
list_pending_template_requests¶
- 스키마:
PROVIDER
설명: 클린룸에 컨슈머 정의 템플릿을 추가하려는 컨슈머의 승인되지 않은 모든 요청을 나열합니다. 여기에는 보류 중인 요청, 승인된 요청, 거부된 요청이 포함됩니다. 이 프로시저를 사용하여 보류 중인 요청을 확인하고 승인(provider.approve_template_request) 또는 거부(provider.reject_template_request)합니다.
클린룸을 공유하는 모든 컨슈머가 클린룸을 설치할 때까지 이 작업은 실패합니다.
인자:
cleanroom_name (문자열) - 이 클린룸에 템플릿을 추가하려는 컨슈머의 요청을 봅니다.
반환: 다음 값을 포함한 테이블을 반환합니다.
ID - (문자열) 요청의 ``request_id``로, 요청을 수락하거나 거부하는 데 필요합니다.
consumer_locator- (문자열) - 요청하는 사람의 계정 로케이터입니다.template_name- (문자열) 컨슈머 제공 템플릿의 이름입니다.template_definition- (문자열) 컨슈머 제안 템플릿의 전체 정의입니다.
예:
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 (문자열) - 이 클린룸에 템플릿을 추가하려는 컨슈머의 요청을 봅니다.
반환: 다음 값을 포함한 테이블을 반환합니다.
ID - (문자열) 요청의 ``request_id``로, 요청을 수락하거나 거부하는 데 필요합니다.
consumer_identifier- (문자열) - 요청하는 사람의 계정 로케이터입니다.template_name- (문자열) 컨슈머 제공 템플릿의 이름입니다.template_definition- (문자열) 컨슈머 제안 템플릿의 전체 정의입니다.REJECTED - (문자열) 요청 상태(
status, PENDING, APPROVED)입니다.
예:
CALL samooha_by_snowflake_local_db.provider.list_template_requests($cleanroom_name);
approve_template_request¶
- 스키마:
PROVIDER
설명: 클린룸에 템플릿을 추가하라는 요청을 승인합니다.
인자:
*cleanroom_name (문자열) - 사용자가 템플릿을 추가하려는 클린룸의 이름입니다.
request_id- (문자열) 승인 요청의 ID입니다. ``provider.list_template_requests``를 호출하여 요청 IDs를 봅니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.approve_template_request(
$cleanroom_name,
'815324e5-54f2-4039-b5fb-bb0613846a5b'
);
approve_multiple_template_requests¶
- 스키마:
PROVIDER
설명: Clean Room에 템플릿을 추가하기 위한 여러 컨슈머의 요청을 승인합니다. 모든 요청은 단일 Clean Room에 대한 요청이어야 합니다.
인자:
cleanroom_name (문자열) - 이 요청이 적용되는 클린룸의 이름입니다.
request_ids- (문자열 배열) 승인할 모든 템플릿 요청의 IDs입니다. 요청을 ID를 확보하려면 ``provider.list_template_requests``를 호출합니다.
반환: (문자열) 성공 메시지.
예:
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 (문자열) - 사용자가 템플릿을 추가하려는 클린룸의 이름입니다.
request_id- (문자열) 거부 요청의 ID입니다. ``provider.list_template_requests``를 호출하여 요청 IDs를 봅니다.reason_for_rejection- (문자열) 요청을 거부하는 이유입니다.
반환: (문자열) 성공 메시지.
예:
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
설명: Clean Room에 템플릿을 추가하기 위한 여러 컨슈머의 요청을 거절합니다. 모든 요청은 동일한 Clean Room에 대한 요청이어야 합니다.
인자:
*cleanroom_name (문자열) - 이 요청이 적용되는 클린룸의 이름입니다.
rejected_templates- (오브젝트 배열) 다음 필드가 있는 오브젝트 배열, 거부당 하나씩입니다.request_id- (문자열) 거부 요청의 ID입니다. 요청 ID를 확보하려면 ``provider.list_template_requests``를 호출하세요.reason_for_rejection- (문자열) 요청이 거부되는 이유에 대한 자유 텍스트 설명입니다.
반환: (문자열) 성공 메시지.
예:
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')
]
);
템플릿 체인¶
다음 명령을 사용하여 :doc:`템플릿 체인</user-guide/cleanrooms/developer-template-chains>`을 생성하고 관리합니다.
add_template_chain¶
- 스키마:
PROVIDER
설명: 새 템플릿 체인을 생성합니다. 이전에 존재하는 템플릿만 템플릿 체인에 추가할 수 있습니다. 템플릿 체인이 생성된 후에는 수정할 수 없지만 같은 이름의 새 템플릿 체인을 만들어 이전 템플릿 체인을 덮어쓸 수는 있습니다.
인자:
cleanroom_name (문자열) - 템플릿 체인을 추가해야 하는 클린룸의 이름입니다.
template_chain_name- (문자열) 템플릿 체인의 이름입니다.*
templates- (오브젝트 배열) - 오브젝트 배열로, 템플릿당 하나씩입니다. 오브젝트에는 다음 필드가 포함될 수 있습니다.template_name(문자열) - 템플릿 체인에 추가되는 템플릿을 지정합니다. 템플릿은 ``provider.add_template_chain``을 호출하여 클린룸에 이미 추가되어 있어야 합니다.cache_results(부울) - 템플릿 체인의 다른 템플릿이 액세스할 수 있도록 템플릿의 결과를 임시로 저장할지 여부를 결정합니다. 결과를 캐시하려면 TRUE로 지정합니다.output_table_name(문자열)cache_results= TRUE인 경우 템플릿 결과가 저장되는 Snowflake 테이블의 이름을 지정합니다.jinja_output_table_param(문자열)cache_results= TRUE인 경우 ``output_table_name``에 저장된 결과를 수락하기 위해 다른 템플릿이 포함해야 하는 Jinja 매개 변수의 이름을 지정합니다.cache_expiration_hours(정수)cache_results= TRUE인 경우 캐시의 결과가 삭제될 때까지 걸리는 시간을 지정합니다. 캐시가 만료되면 다음에 템플릿 체인이 실행될 때 캐시가 템플릿 결과로 새로 고쳐집니다.
반환: (문자열) 성공 메시지.
예:
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 (문자열) - 클린룸의 이름입니다.
반환: (table) 이 클린룸에 추가된 모든 템플릿 체인에 대한 설명입니다.
예:
CALL samooha_by_snowflake_local_db.provider.view_added_template_chains($cleanroom_name);
view_template_chain_definition¶
- 스키마:
PROVIDER
설명: 템플릿 체인의 정의를 반환합니다.
인자:
cleanroom_name (문자열) - 이 템플릿 체인과 연결된 클린룸의 이름입니다.
template_chain_name(문자열) - 이 클린룸과 연결된 템플릿 체인의 이름입니다.
반환: (table) 지정된 템플릿 체인에 대한 설명.
예:
CALL samooha_by_snowflake_local_db.provider.view_template_chain_definition(
$cleanroom_name,
'my_chain');
clear_template_chain¶
- 스키마:
PROVIDER
설명: 지정된 클린룸에서 지정된 템플릿 체인을 삭제합니다. 체인은 어디에도 저장되지 않으므로 체인을 다시 생성하려면 처음부터 다시 생성해야 합니다.
인자:
cleanroom_name (문자열) - 이 템플릿 체인이 할당된 클린룸입니다.
template_chain_name- (문자열) 이 클린룸에서 제거할 템플릿 체인입니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.clear_template_chain($cleanroom_name, 'my_chain');
활성화¶
*활성화*는 공급자, 컨슈머 또는 서드 파티에 결과를 내보내는 것을 의미합니다. 활성화에 대해 자세히 알아보세요.
set_activation_policy¶
- 스키마:
PROVIDER
설명: 활성화 템플릿 내에서 사용할 수 있는 공급자 열을 정의합니다. 활성화 정책에 나열된 열만 공급자의 데이터 세트에서 활성화할 수 있습니다. 활성화 정책을 설정하지 않으면 공급자 데이터가 활성화되지 않습니다.
이 프로시저를 호출하면 공급자가 설정한 이전 활성화 정책이 모두 지워집니다.
인자:
cleanroom_name (문자열) - 활성화를 허용해야 하는 클린룸의 이름입니다.
columns- (문자열 배열) 여기에 나열된 열만 이 클린룸의 활성화 템플릿에서 사용할 수 있습니다. 열 이름 형식은 :samp:`{template_name}:{fully_qualified_table_name}:{column_name}`입니다. 점(.) 및 콜론(:) 마커에 대한 올바른 사용법에 유의하세요.
반환: (문자열) 성공 메시지.
예:
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
설명: 지정된 클린룸에서 공급자의 활성화 정책을 표시합니다.
인자:
:ref:`cleanroom_name<label-dcr_about_clean_room_names>`*(문자열)* - 보고할 클린룸의 이름입니다.
반환: (Table) 지정된 클린룸에서 공급자의 활성화 정책입니다.
예:
CALL samooha_by_snowflake_local_db.provider.view_activation_policy($cleanroom_name);
request_provider_activation_consent¶
- 스키마:
PROVIDER
설명: 공급자가 지정된 템플릿을 실행하고 그 결과를 공급자의 Snowflake 계정으로 푸시하도록 허용하는 요청을 컨슈머에게 보냅니다. 백그라운드에서 Clean Room의 공급자 활성화 템플릿 목록에 템플릿을 추가합니다. 템플릿이 활성화 템플릿으로 지정되면 활성화 요청에만 사용할 수 있습니다.
인자:
cleanroom_name (문자열) - 활성화 템플릿이 포함된 클린룸입니다.
template_name- (문자열) 승인을 요청할 활성화 템플릿의 이름입니다. 이 템플릿은 이전 호출에서 클린룸에 추가한 적이 있어야 합니다. 템플릿 이름은 “activation”으로 시작해야 합니다.
반환: (문자열) 성공 메시지.
예:
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- (문자열) 웨어하우스 크기입니다. CREATE WAREHOUSE 명령에서 WAREHOUSE_SIZE 값 중 하나를 선택합니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.update_activation_warehouse('LARGE');
dcr_health.provider_run_provider_activation_history¶
설명: 지정된 클린룸에 대한 공급자 활성화 요청 기록을 반환합니다. 공급자와 컨슈머가 모두 시작한 공급자 활성화 요청이 표시됩니다. 이 프로시저는 공급자 활성화 관련 문제를 디버그하는 데 도움이 되는 추가 정보를 제공합니다.
인자:
cleanroom_name (문자열) - 활성화가 요청된 클린룸의 이름입니다. 사용자는 이 클린룸의 공급자 또는 컨슈머여야 합니다.
반환: (테이블) - 템플릿 및 세그먼트 이름, 상태, 컨슈머 계정 로케이터, 요청에서 반환된 모든 오류 메시지 등 각각에 대한 정보가 포함된 활성화 요청 목록입니다.
예:
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();
공급자로 분석 실행하기¶
Learn how to run a provider analysis.
enable_provider_run_analysis¶
- 스키마:
PROVIDER
설명: 공급자(클린룸 생성자)가 지정된 클린룸에서 분석을 실행할 수 있도록 지원합니다. 이 기능은 기본적으로 비활성화되어 있습니다. 그런 다음 컨슈머는 ``consumer.enable_templates_for_provider_run``을 호출하여 클린룸의 특정 템플릿에 대한 공급자 실행 분석을 활성화해야 합니다. 그 후 공급자는 ``provider.submit_analysis_request``를 호출하여 분석을 실행할 수 있습니다.
Learn more about provider-run analyses.
중요
이 프로시저는 provider.add_consumers 이후에 컨슈머가 클린룸을 설치하기 전에 호출해야 합니다. 컨슈머가 이미 클린룸을 설치한 후에 변경되는 경우 컨슈머는 새 구성을 반영하기 위해 클린룸을 다시 설치해야 합니다.
인자:
cleanroom_name (문자열) - 공급자 실행 분석을 활성화해야 하는 클린룸의 이름입니다.
consumer_accounts- (문자열 배열) - 이 클린룸에 데이터를 추가한 모든 컨슈머 계정의 계정 로케이터입니다.
반환: (문자열) 성공 메시지.
예:
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 (문자열) - 공급자 실행 분석을 비활성화해야 하는 클린룸의 이름입니다.
consumer_account_locator- (문자열) ``provider.enable_provider_run_analysis``에 전달된 동일한 컨슈머 계정 이름 목록입니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.disable_provider_run_analysis(
$cleanroom_name,
['<CONSUMER_ACCOUNT_LOCATOR>']);
is_provider_run_enabled¶
- 스키마:
LIBRARY
설명: 이 클린룸에서 공급자 실행 분석을 허용하는지 확인합니다.
인자:
cleanroom_name *(문자열) - 확인할 클린룸의 이름입니다.
반환: (string) 이 클린룸에서 공급자 실행 분석을 허용하는지 여부.
예:
CALL samooha_by_snowflake_local_db.library.is_provider_run_enabled($cleanroom_name)
view_warehouse_sizes_for_template¶
- 스키마:
PROVIDER
설명: 지정된 템플릿으로 공급자 실행 분석에 사용할 수 있는 웨어하우스 크기 및 유형 목록을 봅니다. 컨슈머는 먼저 ``consumer.enable_templates_for_provider_run``에 대한 호출에서 목록을 채워야 합니다.
인자:
*cleanroom_name (문자열) - 클린룸의 이름입니다.
template_name- (문자열) 공급자가 실행하려는 템플릿의 이름입니다.consumer_account- (문자열) 공급자 실행 요청을 승인할 컨슈머의 계정 로케이터입니다.
반환: 허용되는 웨어하우스 크기 및 유형의 테이블입니다. 지원되는 웨어하우스 유형 및 크기 문자열은 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
설명: Clean Room에서 실행할 분석을 제출합니다. 이 프로시저를 호출하려면 다음 조건을 모두 충족해야 합니다.
공급자는 이 클린룸에서 :ref:`공급자 실행 분석이 활성화<dcr-provider-enable-provider-run-analysis>`되어 있어야 합니다.
컨슈머는 지정된 템플릿에 대해 :ref:`공급자 실행 분석이 승인<dcr-consumer-enable-templates-for-provider-run>`되어야 합니다.
템플릿은 클린룸 내에서 실행되며 결과는 클린룸 내부에 안전하게 저장됩니다. 결과는 암호화되어 공급자만 결과를 볼 수 있습니다.
인자:
cleanroom_name (문자열) - 템플릿이 실행되어야 하는 클린룸의 이름입니다.
consumer_account_locator- (문자열) ``consumer.enable_templates_for_provider_run``을 호출하여 공급자 실행 분석을 허용한 이 클린룸의 컨슈머 계정 로케이터입니다.template_name- (문자열) 실행할 템플릿의 이름입니다.provider_tables- (문자열 배열) 템플릿에 노출할 공급자 테이블의 목록입니다. 이 목록은source_table배열 변수를 채웁니다.consumer_tables- (문자열 배열) 템플릿에 노출할 컨슈머 테이블의 목록입니다. 이 목록은my_table배열 변수를 채웁니다.analysis_arguments- (JSON 오브젝트) 템플릿에 필요한 모든 인자를 키-값 페어로 전달합니다. 다음 필드는 컨슈머가 허용되는 웨어하우스 유형 및 크기 세트를 지정하는 경우에만 필요합니다. ``provider.view_warehouse_sizes_for_template``을 호출하여 컨슈머가 필수 웨어하우스 크기와 유형을 지정했는지 확인합니다.warehouse_type(문자열, 컨슈머가 허용되는 유형의 범위를 지정하는 경우에만 필요) - 컨슈머가 지정된 템플릿을 사용하여 공급자 실행 분석을 위해 허용하는 웨어하우스 유형입니다. 지원되는 유형 목록을 참조하세요. 컨슈머가 기본 설정을 지정하지 않은 경우 기본값은 STANDARD입니다.warehouse_size(문자열, 컨슈머가 허용되는 크기 범위를 지정하는 경우에만 필요) - 컨슈머가 지정된 템플릿을 사용하여 공급자 실행 분석을 위해 허용하는 웨어하우스 크기입니다. 지원되는 유형 목록을 참조하세요. 컨슈머가 기본 설정을 지정하지 않은 경우 기본값은 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 명령을 실행하여 분석 요청 목록을 볼 수 있습니다. 여기서 :samp:`{cleanroom_name}`은 클린룸 이름이며, 공백은 밑줄로 대체됩니다.
SELECT * FROM SAMOOHA_CLEANROOM_<cleanroom_name>.ADMIN.PROVIDER_ANALYSIS_REQUESTS;
인자:
cleanroom_name (문자열) - 요청이 이루어진 클린룸의 이름입니다.
request_id- (문자열) 요청의 ID로, ``provider.submit_analysis_request``에 의해 반환됩니다.consumer_account_locator- (문자열) 요청이 전송된 컨슈머의 계정 로케이터입니다.
반환: (문자열) 요청의 상태로, 여기서 ``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가 비어 있거나 준비되지 않음”이라는 오류가 표시되면 이는 요청 시 이 클린룸에서 하나 이상의 컨슈머에 대한 로그가 마운트되지 않았음을 나타낼 수 있습니다. ``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 (문자열) - 요청이 전송된 클린룸의 이름입니다.
request_id- (문자열) 요청의 ID로, ``submit_analysis_request``에 의해 반환됩니다.consumer_account_locator- (문자열) ``submit_analysis_request``에 전달된 컨슈머의 계정 로케이터입니다.
반환: (Table) 쿼리 결과.
예:
CALL samooha_by_snowflake_local_db.provider.get_analysis_result(
$cleanroom_name,
$request_id,
$locator
);
클린룸 공유 관리¶
다음 명령을 사용하여 컨슈머와의 클린룸 공유를 관리하십시오.
view_consumers¶
- 스키마:
PROVIDER
설명: 클린룸에 대한 액세스 권한이 부여된 컨슈머를 목록으로 표시합니다. 컨슈머가 클린룸을 설치했는지 여부는 표시되지 않습니다.
인자:
cleanroom_name (문자열) - 관심 있는 클린룸입니다.
반환: (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 (문자열) - 지정된 사용자와 공유할 클린룸의 이름입니다. 사용자는 클린룸 API 또는 UI 중 하나를 사용하여 클린룸을 설치할 수 있습니다.
consumer_account_locators- (문자열) :doc:`/sql-reference/functions/current_account`에서 반환된 컨슈머 계정 로케이터의 쉼표로 구분된 목록입니다. 이 목록에는 ``consumer_account_names``에 포함된 것과 동일한 수의 항목이 동일한 순서로 포함되어야 합니다.consumer_account_names- (문자열) 컨슈머의 컨슈머 데이터 공유 계정 IDs<label-account_name_data_sharing>`에 대한 쉼표로 구분된 목록으로, 형식은 :samp:`{org_name}.{account_name}`입니다. *조직 이름*은 :doc:/sql-reference/functions/current_organization_name`을 호출하여 검색할 수 있습니다. *계정 이름*은 :doc:`/sql-reference/functions/current_account_name`을 호출하여 검색할 수 있습니다. 이 목록에는 ``consumer_account_locators``에 나열된 것과 동일한 수의 항목이 동일한 순서로 포함되어야 합니다.enable_differential_privacy_tasks- (부울, 선택 사항) - 이 클린룸에 나열된 사용자의 모든 쿼리에 대해 차등 개인정보 보호를 적용하려면 TRUE를 선택합니다. 이는 목록에 있는 사용자에 대해 기본값으로 차등 개인정보 보호를 활성화하는 간단한 방법입니다. 고급 설정을 지정하려면privacy_settings인자를 대신 입력합니다. 차등 개인정보 보호를 사용하려면 이 클린룸에서 차등 개인정보 보호 작업이 실행 중이어야 합니다. 기본값은 FALSE입니다.privacy_settings- (문자열, 선택 사항) 있는 경우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 (문자열) - 클린룸의 ID입니다(사용자 친화적인 이름이 아님).
cleanroom_account_locators- (문자열) - 쉼표로 구분된 사용자 계정 로케이터 목록입니다. 계정의 모든 사용자는 클린룸에 대한 액세스 권한을 잃게 됩니다.
반환: (문자열) - 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.remove_consumers(
$cleanroom_name,
'locator1,locator2,locator3'
);
set_cleanroom_ui_accessibility¶
- 스키마:
PROVIDER
설명: 이 공급자 계정에 로그인한 모든 사용자에게 클린룸 UI에서 클린룸을 표시하거나 숨깁니다.
인자:
*cleanroom_name (문자열) - 클린룸의 이름입니다.
visibility_status- (문자열) 대/소문자를 구분하는 다음 값 중 하나입니다.HIDDEN - 현재 공급자 계정의 모든 사용자로부터 클린룸 UI의 클린룸을 숨깁니다. 클린룸은 API 호출에 대해 계속 액세스할 수 있습니다.
EDITABLE - 클린룸 UI에서 클린룸을 표시합니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.set_cleanroom_ui_accessibility(
$cleanroom_name,
'HIDDEN'
);
클라우드 간 협업¶
클린룸을 다른 클라우드 리전의 컨슈머와 공유할 수 있도록 활성화합니다. 자세히 알아보세요.
enable_laf_on_account¶
- 스키마:
LIBRARY
설명: 현재 계정에서 클라우드 간 자동 복제를 활성화합니다. 이 프로시저를 실행하려면 ACCOUNTADMIN 역할이 필요합니다.
중요
먼저 :doc:`/sql-reference/functions/system_enable_global_data_sharing_for_account`를 호출하여 계정에 대한 클라우드 간 자동 복제를 활성화해야 합니다.
인자: 없음
반환: (문자열) 성공 메시지.
예:
USE ROLE ACCOUNTADMIN;
CALL samooha_by_snowflake_local_db.library.enable_laf_on_account();
disable_laf_on_account¶
- 스키마:
LIBRARY
설명: 현재 계정에서 클라우드 간 자동 복제를 비활성화합니다. 이 프로시저를 실행하려면 ACCOUNTADMIN 역할이 필요합니다.
중요
먼저 :doc:`/sql-reference/functions/system_enable_global_data_sharing_for_account`를 호출해야 계정에서 클라우드 간 자동 복제를 비활성화할 수 있습니다.
인자: 없음
반환: (문자열) 성공 메시지.
예:
USE ROLE ACCOUNTADMIN;
CALL samooha_by_snowflake_local_db.library.disable_laf_on_account();
is_laf_enabled_on_account¶
- 스키마:
LIBRARY
설명: 이 계정에 대해 클라우드 간 자동 복제가 사용 설정되어 있는지 여부를 반환합니다.
인자: 없음
반환: 이 계정에 크로스 클라우드 자동 복제가 활성화된 경우 TRUE 이고, 그렇지 않은 경우 FALSE 입니다.
예:
CALL samooha_by_snowflake_local_db.library.is_laf_enabled_on_account();
set_laf_dcr_refresh_schedule¶
- 스키마:
PROVIDER
설명: 공급자와 컨슈머가 서로 다른 클라우드 리전에 있는 경우, 공급자와 컨슈머 간의 클린룸 데이터 새로 고침 간격을 설정합니다. 이 데이터에는 공급자 데이터 세트, 공급자 실행 요청, 클린룸 정책, 클린룸 메타데이터가 포함됩니다. 즉시 새로 고침이 필요한 경우 :doc:`/sql-reference/functions/system_trigger_listing_refresh`를 호출할 수 있습니다.
인자:
schedule- (정수) 새로 고침 사이의 간격(분)입니다. 허용되는 최소 값은 10입니다.
반환: (문자열) - 성공 메시지.
예:
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``을 대신 호출합니다.
Learn how to upload and use Python code in a clean room.
이 프로시저는 클린룸의 패치 번호를 증분하고 보안 검사를 트리거합니다. 검사 상태가 APPROVED가 될 때까지 기다려야 공동 작업자와 최신 버전을 공유할 수 있습니다. 이 단계에서는 런타임 시 발생하는 코드의 구문 오류를 보고하지 않습니다.
이 프로시저는 오버로드되어 있으며, 코드를 인라인으로 업로드할지 아니면 스테이지의 파일에서 로딩할지를 결정하는 다섯 번째 인자의 데이터 타입이 다른 두 개의 서명이 있습니다.
서명
load_python_into_cleanroom``에는 인라인 코드 업로드를 위해 다음과 같은 서명이 있습니다. 코드 문자열을 ``code 인자에 전달하세요.
(cleanroom_name String, function_name String, arguments Array, packages Array, rettype String, handler String, code String)
인자:
cleanroom_name (문자열) - 스크립트를 로딩할 클린룸의 이름입니다.
function_name- (문자열) 템플릿이handler``로 지정된 함수를 호출하는 데 사용하는 이름입니다. 템플릿은 ``cleanroom네임스페이스로 함수 이름을 한정해야 합니다(예:cleanroom.my_func(val1, val2)).arguments- (공백으로 구분된 문자열 쌍의 배열)function_name함수에 필요한 인자의 배열입니다. 각 요소는 인자 이름과 해당 Snowflake SQL 데이터 타입을 지정하는 공백으로 구분된'name data_type'쌍입니다(예:['size INT', 'start_date DATE']).packages- (문자열 배열) 코드에서 사용하는 Python 패키지 이름의 목록입니다. 클린룸은 기본적으로 `이 목록<https://repo.anaconda.com/pkgs/snowflake/>`_ 또는 `Snowpark API<https://docs.snowflake.com/developer-guide/snowpark/reference/python/latest/snowpark/index>`_에서 모든 패키지를 지원합니다. 목록에 없는 패키지가 필요한 경우 :ref:`클린룸의 Snowpark Container Services<label-dcr_snowpark_spcs>`를 사용해야 합니다.ret_type- (String) SQL data type of the value returned by the functionhandler. (See some equivalent Python and SQL types. Snowflake SQL type synonyms are accepted, such as STRING for VARCHAR.) For a UDF, the return type is a single SQL type. For a UDTF, the return type is a TABLE function withcolumn_name SQL column typepairs. For example:TABLE (item_name STRING, total FLOAT)handler- (문자열) 템플릿이 ``function_name``을 호출할 때 코드에서 호출되는 함수입니다. UDF의 경우 이는 함수 이름 자체여야 합니다. UDTF의 경우 이는 UDTF를 구현하는 클래스의 이름이어야 합니다.code- (문자열) Python 코드를 문자열로 표시합니다. 이는 :doc:`Python UDF</developer-guide/udf/python/udf-python-designing>`여야 합니다.
서명
코드를 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)
인자:
cleanroom_name (문자열) - 스크립트를 로딩할 클린룸의 이름입니다.
function_name- (문자열) 템플릿이handler``로 지정된 함수를 호출하는 데 사용하는 이름입니다. 템플릿은 ``cleanroom네임스페이스로 함수 이름을 한정해야 합니다(예:cleanroom.my_func(val1, val2)).arguments- (공백으로 구분된 문자열 쌍의 배열)function_name함수에 필요한 인자의 배열입니다. 각 요소는 인자 이름과 해당 Snowflake SQL 데이터 타입을 지정하는 공백으로 구분된'name data_type'쌍입니다(예:['size INT', 'start_date DATE']).packages- (문자열 배열) 코드에서 사용하는 Python 패키지 이름의 목록입니다. 클린룸은 기본적으로 `이 목록<https://repo.anaconda.com/pkgs/snowflake/>`_ 또는 `Snowpark API<https://docs.snowflake.com/developer-guide/snowpark/reference/python/latest/snowpark/index>`_에서 모든 패키지를 지원합니다.imports- (문자열 배열) 스테이징에서 가져올 파일 목록입니다. 각 파일 주소는 코드를 업로드한 스테이징을 기준으로 합니다(예:['/my_func.py']). ``provider.get_stage_for_python_files``를 호출하여 클린룸 스테이징을 찾습니다.ret_type- (String) SQL data type of the value returned by the functionhandler. (See some equivalent Python and SQL types. Snowflake SQL type synonyms are accepted, such as STRING for VARCHAR.) For a UDF, the return type is a single SQL type. For a UDTF, the return type is a TABLE function withcolumn_name SQL column typepairs. For example:TABLE (item_name STRING, total FLOAT)handler- (문자열) 템플릿이 ``function_name``을 호출할 때 코드에서 호출되는 함수입니다. UDF의 경우 이는 함수 이름 자체여야 합니다. UDTF의 경우 이는 UDTF를 구현하는 클래스의 이름이어야 합니다.
반환: (문자열) 업로드 성공 시 성공 메시지
예제:
-- Inline UDF
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.
);
prepare_python_for_cleanroom¶
- 스키마:
PROVIDER
설명: 대량 코드 업로드 흐름의 일부로 사용자 지정 Python 코드를 클린룸에 로드합니다. 이 프로시저를 여러 번 호출하여 여러 패키지를 업로드한 다음 ``load_prepared_python_into_cleanroom``을 호출하여 지정된 클린룸으로 업로드를 트리거하고, 준비된 코드 풀을 플러시하며, 새 클린룸 패치를 생성합니다.
업로드한 코드는 Jinja 템플릿으로 호출할 수 있습니다. 단일 Python 번들만 업로드하려면 ``load_python_into_cleanroom``을 대신 호출할 수 있습니다.
Learn how to upload and use Python code in a clean room.
code 매개 변수를 사용하여 이 프로시저에 직접 코드를 전달하거나 imports 매개 변수를 사용하여 코드가 포함된 스테이징에서 파일 이름을 전달할 수 있습니다.
인자:
cleanroom_name (문자열) - 스크립트를 로딩할 클린룸의 이름입니다.
function_name- (문자열) 템플릿이handler``로 지정된 함수를 호출하는 데 사용하는 이름입니다. 템플릿은 ``cleanroom네임스페이스로 함수 이름을 한정해야 합니다(예:cleanroom.my_func(val1, val2)).arguments- (공백으로 구분된 문자열 쌍의 배열)function_name함수에 필요한 인자의 배열입니다. 각 요소는 인자 이름과 해당 Snowflake SQL 데이터 타입을 지정하는 공백으로 구분된'name data_type'쌍입니다(예:['size INT', 'start_date DATE']).packages- (문자열 배열) 코드에서 사용하는 Python 패키지 이름의 목록입니다. 클린룸은 기본적으로 `이 목록<https://repo.anaconda.com/pkgs/snowflake/>`_ 또는 `Snowpark API<https://docs.snowflake.com/developer-guide/snowpark/reference/python/latest/snowpark/index>`_에서 모든 패키지를 지원합니다. 목록에 없는 패키지가 필요한 경우 :ref:`클린룸의 Snowpark Container Services<label-dcr_snowpark_spcs>`를 사용해야 합니다.imports- (문자열 배열) 스테이징에서 소스를 가져올 때 Python 소스 파일의 목록입니다. 각 파일 주소는 코드를 업로드한 스테이징을 기준으로 합니다(예:['/my_func.py']).provider.get_stage_for_python_files``를 호출하여 클린룸 스테이징을 찾습니다. ``code매개 변수를 사용하여 코드를 인라인으로 제공하는 경우 빈 배열을 제공합니다.rettype- (String) SQL data type of the value returned by the functionhandler. (See some equivalent Python and SQL types. Snowflake SQL type synonyms are accepted, such as STRING for VARCHAR.) For a UDF, the return type is a single SQL type. For a UDTF, the return type is a TABLE function with<column name> <SQL column type>pairs. For example:TABLE (item_name STRING, total FLOAT)handler- (문자열) 템플릿이 ``function_name``을 호출할 때 코드에서 호출되는 함수입니다. UDF의 경우 이는 함수 이름 자체여야 합니다. UDTF의 경우 이는 UDTF를 구현하는 클래스의 이름이어야 합니다.code- (문자열) Python 코드를 문자열로 표시합니다. 이는 :doc:` UDF</developer-guide/udf/python/udf-python-designing>` 또는 UDTF여야 합니다. 스테이징에서 코드를 업로드하는 경우 이는 빈 문자열이어야 합니다.
반환: (문자열) 코드가 클린룸에 추가되기 전의 패치 번호를 포함하여 업로드 요청의 요약입니다.
예:
이 예에서는 두 개의 간단한 Python 프로시저를 클린룸에 로드하고 단일 패치 생성만 트리거합니다.
CALL samooha_by_snowflake_local_db.provider.prepare_python_for_cleanroom(
$cleanroom_name,
'get_next_status', -- Name of the UDF. Can be different from the handler.
['status VARCHAR'], -- Arguments of the UDF, specified as (variable name, SQL type).
['numpy'], -- Packages needed by UDF.
[], -- When providing the code inline, this is an empty array.
'VARCHAR', -- Return type of UDF.
'get_next_status', -- Handler.
$$
import numpy as np
def get_next_status(status):
"""Return the next higher status, or a random status
if no matching status found or at the top of the list."""
statuses = ['MEMBER', 'SILVER', 'GOLD', 'PLATINUM', 'DIAMOND']
try:
return statuses[statuses.index(status.upper()) + 1]
except:
return 'NO MATCH'
$$
);
CALL samooha_by_snowflake_local_db.provider.prepare_python_for_cleanroom(
$cleanroom_name,
'hello_world', -- Name of the UDF.
[],
[],
[],
'VARCHAR',
'hello_world',
$$
import numpy as np
def hello_world():
return 'Hello world!'
$$
);
CALL samooha_by_snowflake_local_db.provider.load_prepared_python_into_cleanroom($cleanroom_name);
load_prepared_python_into_cleanroom¶
- 스키마:
PROVIDER
설명: ``prepare_python_for_cleanroom``에 대한 이전 호출을 사용하여 스테이징된 모든 코드를 가져오고, 코드에 대한 보안 검사를 실행하고, 검사에 통과하면 코드를 클린룸에 업로드한 후 새 클린룸 패치를 생성합니다. 이 버전의 클린룸을 사용자에게 제공하려면 ``set_default_release_directive``를 호출하여 클린룸의 릴리스 지시문을 이 프로시저에서 반환된 패치 번호로 업데이트해야 합니다. 호출의 성공 여부와 관계없이 ``prepare_python_for_cleanroom``에 대한 이전 호출에 저장된 Python 코드 풀을 플러시합니다. 이 단계에서는 코드를 실행하려고 할 때만 보고되는 구문 오류를 보고하지 않습니다.
인자:
cleanroom_name (문자열) - Python 코드를 업로드할 클린룸의 이름입니다.
반환: (문자열) 성공하면 생성된 새 패치 번호를 반환합니다. ``set_default_release_directive``를 호출하여 클린룸의 릴리스 지시문을 이 프로시저에서 반환된 패치 번호로 업데이트합니다.
예:
CALL samooha_by_snowflake_local_db.provider.load_prepared_python_into_cleanroom($cleanroom_name);
get_stage_for_python_files¶
- 스키마:
PROVIDER
설명: 클린룸에서 사용자 지정 Python 코드를 정의하기 위해 인라인 코드 정의가 아닌 스테이징에 업로드된 코드 파일을 사용하려는 경우 Python 파일을 업로드해야 하는 스테이징 경로를 반환합니다. ``provider.load_python_into_cleanroom``을 호출하여 파일을 업로드할 때까지 스테이징이 존재하지 않으며 검사할 수 없습니다.
Learn how to upload and use Python code in a clean room.
인자:
cleanroom_name (문자열) - 파일을 업로드할 클린룸의 이름입니다.
반환: (문자열) 코드 파일을 업로드해야 하는 경로입니다. ``provider.load_python_into_cleanroom``의 가져오기 인자에 사용합니다.
예:
CALL samooha_by_snowflake_local_db.provider.get_stage_for_python_files($cleanroom_name);
view_cleanroom_scan_status¶
- 스키마:
PROVIDER
설명: DISTRIBUTION 으로 설정된 클린룸의 위협 검사 상태를 EXTERNAL 로 보고합니다. 기본 릴리스 지시어를 설정하거나 변경하려면 스캔을 “APPROVED”로 표시해야 합니다. 스캔 상태는 EXTERNAL 클린룸으로만 확인해야 합니다.
새 패치 버전을 생성하는 모든 작업 후에 검사가 실행됩니다. 가장 일반적인 시점은 클린룸을 처음 게시 후 또는 Python 클린룸에 업로드한 후입니다. Snowflake Clean Rooms는 :doc:`Snowflake Native App 보안 검사 프레임워크</developer-guide/native-apps/security-run-scan>`를 사용합니다.
인자:
cleanroom_name (문자열) - 상태를 확인할 클린룸의 이름입니다.
반환: (문자열) 스캔 상태입니다. 다음 값이 가능합니다.
NOT_REVIEWED- 검사가 진행 중입니다.APPROVED- 검사가 통과되었습니다.REJECTED- 검사에 실패했습니다. 새로운 클린룸 버전은 게시되지 않습니다. 코드에서 문제를 찾아 마지막 작업을 다시 시도하세요.MANUAL_REVIEW- 검사에 Snowflake의 수동 검토가 필요합니다. 이 작업에는 며칠이 걸릴 수 있으므로 주기적으로 다시 확인하세요.
예:
CALL samooha_by_snowflake_local_db.provider.view_cleanroom_scan_status($cleanroom_name);
요청 로그¶
다음 명령을 사용하여 컨슈머 요청 로그를 관리합니다. 컨슈머는 요청 로그를 사용하여 공급자에게 메시지를 보낼 수 있으며, 컨슈머 사용자 지정 템플릿 요청, 공급자 실행 요청의 컨슈머 승인, 클라우드 간 자동 복제와 같은 기능을 활성화하려면 마운트해야 합니다.
mount_request_logs_for_all_consumers¶
- 스키마:
PROVIDER
설명: 공급자에게 컨슈머의 요청에 대한 액세스 권한을 부여합니다. 컨슈머 사용자 지정 템플릿 요청, 공급자 실행 요청의 컨슈머 승인, 클라우드 간 자동 복제 등 다양한 기능을 지원하려면 요청 로그를 마운트해야 합니다.
이렇게 하면 지정된 클린룸을 이미 설치한 컨슈머에 대한 요청 로그만 마운트됩니다. 공급자가 이 프로시저를 호출한 후 컨슈머가 클린룸을 설치하는 경우 공급자는 이 프로시저를 다시 호출해야 합니다.
인자:
cleanroom_name (문자열) - 요청 로그를 마운트할 클린룸의 이름입니다.
반환: (테이블) 각각에 대한 요청 로그 마운트 상태가 있는 컨슈머 테이블입니다. 컨슈머에게 클린룸에 대한 액세스 권한이 부여되었지만 아직 클린룸을 설치하지 않은 경우 상태는 보류 중으로 설명되며 클린룸을 설치한 후에 ``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 (문자열) - 클린룸의 이름입니다.
반환: (테이블) - 컨슈머와 각 컨슈머의 요청 로그 마운트 상태에 대한 테이블입니다.
예:
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 (문자열) - 요청 로그를 검토할 클린룸의 이름입니다.
반환: (테이블) 컨슈머가 지정된 클린룸의 공급자에게 보낸 요청입니다.
예:
CALL samooha_by_snowflake_local_db.provider.view_request_logs($cleanroom_name);
차등 개인정보 보호¶
이러한 명령은 사용자 수준 또는 공급자 계정 수준에서 차등 개인정보 보호를 제어합니다. 차등 개인정보 보호에 대해 자세히 알아보세요.
set_privacy_settings¶
- 스키마:
PROVIDER
설명: 지정된 고객이 사용자 지정 템플릿을 실행할 때 적용되는 개인정보 보호 설정을 설정(또는 재설정)합니다. 이렇게 하면 이 컨슈머에 대한 모든 기존 설정을 덮어씁니다.
인자:
*cleanroom_name (문자열) - 클린룸의 이름입니다.
consumer_account_locator- (문자열) 쉼표로 구분된 목록의 하나 이상의 컨슈머 계정 로케이터입니다.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
설명: 차등 개인정보 보호 예산을 모니터링하고 적용하는 작업을 비활성화합니다. 이는 계정의 차등 개인정보 보호와 관련된 비용
인자: 없음
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.suspend_account_dp_task();
resume_account_dp_task¶
- 스키마:
PROVIDER
설명: 현재 계정에서 차등 개인정보 보호 작업 리스너를 다시 시작하면 차등 개인정보 보호 예산이 적용됩니다. 이전에 설정한 모든 차등 개인정보 보호 값(예: 민감도 또는 연결된 사용자)은 유지됩니다.
인자: 없음
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.resume_account_dp_task();
Snowpark Container Services 명령¶
이 프로시저를 통해 :ref:`클린룸 내부에서 Snowpark Container Services 사용<label-dcr_snowpark_spcs>`할 수 있습니다.
load_service_into_cleanroom¶
- 스키마:
PROVIDER
설명: 클린룸에서 컨테이너 서비스를 만들거나 업데이트합니다. 이 프로시저를 호출하면 클린룸 패치 번호가 업데이트되므로 이 프로시저를 호출한 후 ``provider.set_default_release_directive``를 호출해야 합니다. 서비스를 만들거나 업데이트할 때마다 이 프로시저를 호출해야 합니다. 그런 다음 클라이언트는 ``consumer.start_or_update_service``를 호출하여 업데이트를 확인해야 합니다.
클린룸에서 Snowpark Container Services를 사용하는 방법에 대해 알아보세요.
인자:
*cleanroom_name (문자열) - 클린룸의 이름입니다.
service_spec- (문자열)spec요소에 루팅된 서비스에 대한 YAML 사양입니다.service_config- (문자열) 서비스에 대한 YAML 형식의 구성입니다. 지원되는 속성은 다음과 같습니다.default_service_options- 서비스 수준 기본값으로 구성된 선택적 배열입니다. 이러한 값은 컨슈머가 서비스를 만들 때 재정의할 수 있습니다. 지원되는 하위 속성은 다음과 같습니다.min_instances(정수, 선택 사항)max_instances(정수, 선택 사항)allow_monitoring(부울, 선택 사항) - TRUE인 경우 컨슈머가 서비스 로그를 볼 수 있도록 허용합니다. 기본값은 FALSE입니다.
functions- 서비스에서 노출하는 함수의 배열입니다. 각 함수 정의는 :doc:`SPCS 서비스 함수 정의</sql-reference/sql/create-function-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: ID VARCHAR, FEATURES ARRAY
returns: VARIANT
max_batch_rows: 1000
endpoint: lalendpoint
path: /scorebatch
$$);
환경 관리¶
다음 명령을 사용하여 일반적으로 클린룸 기능 및 지원되는 플로우를 활용하는 데 도움을 받을 수 있습니다.
manage_datastats_task_on_account¶
- 스키마:
PROVIDER
설명: 클린룸 통계를 계산하는 백그라운드 작업을 활성화하거나 비활성화합니다. 작업은 기본적으로 실행 중이지만, 비용을 절감하기 위해 비활성화할 수 있습니다. 작업을 관리하려면 모든 공동 작업자가 동일한 값을 가진 이 프로시저의 적절한 provider 또는 consumer 버전을 호출해야 합니다.
인자:
enable- (부울) 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``를 호출하는 대신 이 프로시저를 호출하여 업그레이드를 자동화합니다.
이 작업을 비활성화하여 비용을 절감할 수 있지만, 시스템에 최신 버전의 클린룸 환경을 유지하려면 실행 중인 상태로 두는 것이 좋습니다.
인자: 없음
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.library.enable_local_db_auto_upgrades();
disable_local_db_auto_upgrades¶
- 스키마:
LIBRARY
설명: 새 버전이 릴리스될 때 Snowflake Data Clean Rooms 환경을 자동으로 업그레이드하는 작업을 비활성화합니다. 자동 업그레이드를 비활성화하는 경우 각 :ref:`새 릴리스<label-new_features_features>`와 함께 ``library.apply_patch``를 호출해야 합니다.
인자: 없음
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.library.disable_local_db_auto_upgrades();
apply_patch¶
- 스키마:
LIBRARY
설명: 클린룸 환경을 업데이트하여 환경의 새로운 기능과 수정 사항을 활성화합니다. 클린룸 환경의 새 버전이 출시되면 이를 호출합니다(이는 일반적으로 매주 발생합니다. :ref:`label-new_features_features`의 클린룸 항목을 참조하세요). 이 프로시저는 :doc:`samooha_by_snowflake_local_db</user-guide/cleanrooms/installation-details>`를 업데이트합니다.
``library.enable_local_db_auto_upgrades``를 호출하여 패치 업데이트를 자동화할 수 있습니다. 자동 업데이트를 활성화하는 것이 좋습니다.
인자: 없음
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.library.apply_patch();
patch_cleanroom¶
- 스키마:
PROVIDER
설명: 지정된 클린룸을 최신 버전으로 업데이트하여 해당 클린룸의 새로운 기능과 수정 사항을 활성화합니다. 일반적으로 Snowflake 지원에서 호출하도록 지시한 경우에만 호출합니다.
공급자는 컨슈머가 ``library.patch_cleanroom``을 호출하기 전에 ``library.patch_cleanroom``을 호출해야 합니다. 그렇지 않으면 적용할 패치가 없습니다.
인자:
cleanroom_name (문자열) : 패치할 클린룸의 이름입니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.patch_cleanroom($cleanroom_name);
dcr_health.dcr_tasks_health_check¶
설명: 실행 중이거나 최근에 중지된 클린룸 작업에 대한 정보를 표시합니다.
인자: 없음
반환: (테이블) 일정, 웨어하우스 이름, 웨어하우스 크기 등 클린룸 작업에 대한 정보입니다.
예:
CALL samooha_by_snowflake_local_db.dcr_health.dcr_tasks_health_check();