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 테이블 또는 뷰를 클린룸에 연결합니다. 이 프로시저는 클린룸 내에서 테이블의 보안 뷰를 생성하여 클린룸에서 테이블에 자동으로 액세스할 수 있도록 하므로 테이블의 복사본을 만들 필요가 없습니다. 테이블은 여전히 소스에 연결되어 있으므로 소스의 업데이트는 클린룸 내의 보안 버전에 반영됩니다.
여기에 링크된 모든 항목은 데이터베이스, 스키마 또는 오브젝트 수준에서 먼저 등록해야 합니다.
인자:
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.
view_join_policy¶
- 스키마:
 PROVIDER
설명: 현재 클린룸에 적용된 조인 정책을 표시합니다.
인자:
*cleanroom_name (문자열) - 쿼리할 클린룸의 이름입니다.
반환: (table) 클린룸의 모든 테이블 또는 뷰에서 조인 가능한 행 목록입니다.
예:
CALL samooha_by_snowflake_local_db.provider.view_join_policy($cleanroom_name);
set_join_policy¶
- 스키마:
 PROVIDER
설명: 이 클린룸 내에서 템플릿을 실행할 때 컨슈머가 조인할 수 있는 열을 지정합니다. 정책은 바꾸기 전용 이므로 프로시저를 다시 호출하면 이전에 설정된 조인 정책이 새 정책으로 완전히 바뀝니다.
중요
조인 정책은 템플릿이 행을 조인하기 위해 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_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);
set_column_policy¶
- 스키마:
 PROVIDER
설명: 클린룸에서 지정된 템플릿이 비조인 행으로 사용할 수 있는 데이터의 열을 설정합니다. 클린룸에서 열을 사용하려면 여기 또는 ``set_join_policy``에서 열을 선언해야 합니다. 여기에 나열된 열은 조인 열을 제외하고 템플릿의 어느 곳에서나 사용할 수 있습니다. 열 정책과 조인 정책 모두에서 열을 나열할 수 없습니다.
기본적으로 테이블의 열 정책은 비어 있으므로 결과에서 열을 볼 수 없습니다.
이 프로시저는 완전 대체 동작이므로 호출될 때마다 이전 열 목록을 완전히 덮어씁니다.
열 정책 검사는 SQL 쿼리를 구문 분석하여 데이터에 대해 실행되는 모든 허용되지 않은 열에 대해 수행됩니다. 와일드카드가 포함된 쿼리는 이러한 검사를 통해 포착되지 않을 수 있으므로 분석 템플릿을 설계할 때 신중을 기해야 합니다. 일부 열은 절대로 쿼리해서는 안 되는 경우, 이러한 민감한 열을 제거한 소스 테이블의 뷰를 만들고 대신 해당 뷰에 링크하는 것을 고려하십시오.
인자:
*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
설명: 현재 클린룸에서 활동 중인 열 정책을 목록으로 표시합니다. 열 정책은 어떤 템플릿에 어떤 테이블 열을 표시할 수 있는지 알려줍니다.
인자:
cleanroom_name (문자열)
반환: (table) 어떤 템플릿에서 어떤 열을 사용할 수 있는지입니다.
예:
CALL samooha_by_snowflake_local_db.provider.view_column_policy($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, 'prod_custom_template',
    $$
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');
다중 공급자 분석¶
이러한 프로시저를 통해 :doc:`다중 공급자 분석</user-guide/cleanrooms/demo-flows/multiprovider>`을 활성화합니다.
참고
현재의 다중 공급자 흐름은 곧 사용 중단될 예정입니다. 클린룸은 현재의 다중 공급자 프로시저를 대체하는 새로운 다중 공급자 흐름을 만들기 위해 노력하고 있습니다.
enable_multiprovider_computation¶
- 스키마:
 PROVIDER
설명: 이 프로시저는 지정된 사용자가 요청할 때 사용자의 클린룸 테이블이 지정된 템플릿과 함께 사용되고 지정된 클린룸의 테이블과 함께 사용될 수 있도록 지원합니다. 이 프로시저를 통해 컨슈머는 여러 클린룸의 데이터에 대해 쿼리를 실행할 수 있습니다. 이 프로시저는 이러한 요청을 자동으로 승인하지 않지만, 요청을 :ref:`이 클린룸에 대한 다중 공급자 요청 로그<label-dcr_monitoring_multi_provider_request_history>`에 로깅하여 지정된 사용자 및 클린룸에 대해 수동 또는 자동 승인 프로세스를 시작할 수 있도록 지원합니다.
``consumer.prepare_multiprovider_flow``를 사용하여 이 클린룸에 호출한 모든 호출은 이 클린룸에 대해 ``enable_multiprovider_computation``을 호출하기 전에도 저장되고 표시됩니다.
컨슈머가 계정의 여러 클린룸에 액세스할 수 있도록 하려면 cleanroom_name 인자에 하나의 클린룸을 지정하고 approved_other_cleanrooms 인자에 나머지 클린룸을 지정합니다.
이 프로시저를 사용하려면 Clean Room에 조인 정책을 설정해야 합니다.
요청이 로그되면 해당 사용자 및 쿼리에 대한 요청 흐름에 따라 승인이 이루어집니다.
요청 로깅이 시작된 후에는 비활성화할 방법이 없지만, 지정된 사용자에 대한 자동 승인을 일시 중단(``provider.suspend_multiprovider_tasks``를 호출하여 부여한 경우)한 후에는 추가 요청을 승인하지 않습니다.
인자:
cleanroom_name (문자열) - 소유하고 있는 클린룸의 이름입니다. 이 클린룸의 모든 데이터는 ``consumer_account``에서 다중 공급자 요청을 통해 ``approved_other_cleanrooms``에 나열된 클린룸과 공유할 수 있습니다.
consumer_account- (문자열) 요청을 할 수 있는 컨슈머의 계정 로케이터이며, 승인된 경우 ``approved_other_cleanrooms``에 나열된 모든 클린룸의 데이터와 결합된 이 클린룸의 모든 테이블에 대해 쿼리 실행할 수 있습니다.approved_other_cleanrooms- (문자열 배열) 이 클린룸의 데이터를 결합할 수 있는 정규화된 클린룸 이름의 배열입니다. 각 항목의 형식은 :samp:`{provider_org_name}.{provider_account_name}.{cleanroom_name}`입니다. 중요: 각 클린룸 설명에 *계정 로케이터*가 아닌 *계정 이름*을 제공합니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.enable_multiprovider_computation(
  $cleanroom_name,
  $consumer_account_locator,
  <org_name>.<account_locator>.<cleanroom_name>);
view_multiprovider_requests¶
- 스키마:
 PROVIDER
설명: 지정된 계정 및 클린룸에서 다중 공급자 분석에 대한 모든 요청을 표시합니다. 여기에는 승인된 요청과 거부된 요청이 모두 포함됩니다. 공급자는 이 프로시저를 통해 `provider.process_multiprovider_request`를 호출하여 수동으로 승인하기 위해 요청을 폴링하거나 지정된 클린룸에서 지정된 컨슈머의 모든 요청을 확인하는 방법으로 요청을 폴링할 수 있습니다.
``view_multiprovider_requests``를 호출하기 전에 이 클린룸 및 컨슈머 계정에 대해 ``enable_multiprovider_computation``을 호출해야 합니다.
인자:
cleanroom_name (문자열) - 이 클린룸에서 지정된 컨슈머의 요청을 표시합니다.
consumer_account- (문자열) 지정된 클린룸에서 이 컨슈머 계정 로케이터의 요청을 표시합니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.view_multiprovider_requests(
  $cleanroom_name,
  $consumer_locator);
process_multiprovider_request¶
- 스키마:
 PROVIDER
설명: 모든 검사가 통과하면 지정된 다중 공급자 쿼리의 실행을 승인합니다. 확인 사항에는 요청의 기간과 공급자가 ``provider.enable_multiprovider_computation``에 대한 이전 호출에서 요청을 승인했는지 여부가 포함됩니다. 컨슈머는 계속 ``consumer.execute_multiprovider_flow``를 호출하여 쿼리를 실행해야 합니다. 승인되지 않으면 4시간 후에 요청이 삭제됩니다.
기본적으로 모든 다중 공급자 요청은 이 프로시저를 사용하여 처리해야 합니다. 이 클린룸에서 이 컨슈머의 모든 요청이 자동으로 승인되도록 하려면 ``request_id``에 ``-1``을 지정합니다. 이 클린룸에 있는 모든 컨슈머의 요청을 모두 승인하려면 ``provider.resume_multiprovider_tasks``를 호출합니다. 이전에 승인된 요청을 취소하는 방법을 알아보세요.
요청이 평가된 후 요청 및 평가 상태가 :ref:`이 클린룸의 로그 테이블<label-dcr_monitoring_multi_provider_request_history>`에 기록됩니다.
인자:
cleanroom_name (문자열) - 컨슈머가 다중 공급자 분석에 포함하도록 요청하는 클린룸의 이름입니다.
consumer_account- (문자열) 다중 공급자 분석을 요청하는 사용자의 컨슈머 계정 로케이터입니다. 이 로케이터는 이 클린룸과 ``provider.enable_multiprovider_computation``에 대한 호출의 요청에 나열된 다른 클린룸에 대해 승인되어야 합니다.request_id- (문자열) ``provider.view_multiprovider_requests``에서 ID를 승인하도록 요청합니다. 이 클린룸의 이 컨슈머에 대한 모든 요청을 승인하려면 ``-1``을 전달합니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.process_multiprovider_request(
  $cleanroom_name_1,
  $consumer_account_locator,
  $request_id);
suspend_multiprovider_tasks¶
- 스키마:
 PROVIDER
설명: 지정된 Clean Room의 다중 공급자 쿼리에서 자동 검토 및 승인(적격 쿼리에 대해)을 중지합니다. 클린룸에 대한 다중 공급자 쿼리는 계속 활성화되어 있지만, 이제 각 요청은 ``provider.process_multiprovider_request``를 호출하여 공급자가 명시적으로 승인해야 합니다.
모든 클린룸의 기본 상태는 다중 공급자 자동 승인이 비활성화된 상태입니다. 활성화하려면 ``provider.resume_multiprovider_tasks``를 호출합니다.
인자:
*cleanroom_name (문자열) - 클린룸의 이름입니다.
consumer_account- (문자열) 이 클린룸의 모든 템플릿에 대해 다중 공급자 요청을 일시 중단해야 하는 컨슈머의 계정 로케이터입니다. 나중에 이 클린룸에서 이 사용자의 요청은 제거됩니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.suspend_multiprovider_tasks(
  $cleanroom_name,
  $consumer_locator);
resume_multiprovider_tasks¶
- 스키마:
 PROVIDER
설명: 주어진 클린룸에서 주어진 사용자에 대한 다중 공급자 분석의 자동화된 검토 및 승인(적격 쿼리의 경우)을 활성화합니다. 자동 검토는 클린룸에 대해 기본적으로 비활성화되어 있습니다.
자동 승인을 중지하려면 ``provider.suspend_multiprovider_tasks``를 호출합니다.
인자:
*cleanroom_name (문자열) - 클린룸의 이름입니다.
consumer_account- (문자열) 이 클린룸에서 여러 공급자의 요청을 큐에 넣을 컨슈머의 계정 로케이터입니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.resume_multiprovider_tasks(
  $cleanroom_name,
  $consumer_locator);
활성화¶
*활성화*는 공급자, 컨슈머 또는 서드 파티에 결과를 내보내는 것을 의미합니다. 활성화에 대해 자세히 알아보세요.
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' ]);
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(문자열) - 지정된 템플릿으로 공급자 실행 분석에 대해 컨슈머가 지원하는 웨어하우스 유형입니다.warehouse_size(문자열) - 지정된 템플릿으로 공급자 실행 분석에 대해 컨슈머가 지원하는 웨어하우스 크기입니다.
반환: (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- (문자열) SQL 함수에서 반환하는 값의handler데이터 타입입니다. (이에 해당하는 Python 및 SQL 유형을 참조하세요. Snowflake SQL 유형 동의어 </sql-reference/intro-summary-data-types>`가 허용됩니다(예: VARCHAR의 경우 STRING). UDF의 경우 반환 유형은 단일 SQL 유형입니다. UDTF의 경우 반환 유형은 :samp:`{column_name} {SQL column type} 쌍이 있는 TABLE 함수입니다. 예: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- (문자열) SQL 함수에서 반환하는 값의handler데이터 타입입니다. (이에 해당하는 Python 및 SQL 유형을 참조하세요. Snowflake SQL 유형 동의어 </sql-reference/intro-summary-data-types>`가 허용됩니다(예: VARCHAR의 경우 STRING). UDF의 경우 반환 유형은 단일 SQL 유형입니다. UDTF의 경우 반환 유형은 :samp:`{column_name} {SQL column type} 쌍이 있는 TABLE 함수입니다. 예: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- (문자열) SQL 함수에서 반환하는 값의handler데이터 타입입니다. (이에 해당하는 Python 및 SQL 유형을 참조하세요. Snowflake SQL 유형 동의어 </sql-reference/intro-summary-data-types>`가 허용됩니다(예: VARCHAR의 경우 STRING). UDF의 경우 반환 유형은 단일 SQL 유형입니다. UDTF의 경우 반환 유형은 ``<column name><SQL column type>` 쌍이 있는 TABLE 함수입니다. 예: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();
사용되지 않는 프로시저¶
다음 프로시저는 더 이상 사용되지 않으며 여기에는 완전성을 위해서만 나열되어 있습니다. 교체 프로시저가 표시되면 최신 프로시저를 사용합니다.
request_laf_cleanroom_requests(사용 중단됨)¶
- 스키마:
 PROVIDER
이 함수는 이제 더 이상 사용되지 않습니다. 대신 ``provider.mount_request_logs_for_all_consumers``를 호출하세요.
설명: 지정된 컨슈머에 대해 공급자 측에서 클라우드 간 요청 공유를 설정합니다. 계정 관리자는 먼저 :doc:`클라우드 간 자동 복제를 활성화</user-guide/cleanrooms/enabling-laf>`해야 하며, 컨슈머는 ``consumer.setup_cleanroom_request_share_for_laf``를 호출해야 합니다.
이 프로세스는 공급자와 컨슈머가 서로 다른 클라우드 리전에 있는 컨슈머 정의 템플릿에 필요합니다.
이 프로시저를 반복해서 호출하여 요청 상태를 확인할 수 있습니다. 상태가 FULFILLED에 도달하면 ``provider.mount_laf_cleanroom_requests_share``를 호출할 수 있습니다. 상태가 FULFILLED에 도달하는 데는 10분 정도 걸릴 수 있습니다.
인자:
cleanroom_name (문자열) - 클라우드 간 요청 공유를 활성화할 클린룸의 이름입니다.
consumer_locator- (문자열) 클라우드 간 요청 공유를 활성화할 컨슈머의 계정 로케이터입니다.
반환: (문자열) 요청의 상태 메시지인 CREATED, PENDING, FULFILLED, FAILURE. ‘FAILURE, 목록을 찾을 수 없음’은 컨슈머가 클린룸을 설치하지 않았거나 제거했음을 의미합니다.
예:
CALL samooha_by_snowflake_local_db.provider.request_laf_cleanroom_requests(
  $cleanroom_name, $consumer_locator);
enable_laf_for_cleanroom(사용 중단됨)¶
- 스키마:
 PROVIDER
이 함수는 이제 더 이상 사용되지 않으며 해당 기능은 ``provider.create_or_update_cleanroom_listing``에 의해 처리됩니다.
설명: :doc:`클라우드 간 자동 복제</user-guide/cleanrooms/enabling-laf>`를 활성화하면 Snowflake 계정이 공급자 계정과 다른 리전에 있는 공동 작업자와 클린룸을 공유할 수 있습니다. 클라우드 간 자동 복제는 목록 자동 복제(LAF)라고도 합니다.
기본적으로 크로스 클라우드 자동 복제는 환경에 대해 사용 설정되어 있더라도 새 클린룸의 경우 해제되어 있습니다.
중요
ACCOUNTADMIN 역할이 있는 Snowflake 관리자는 이 프로시저를 실행하기 전에 Snowflake 계정에서 클라우드 간 자동 복제를 활성화해야 합니다. 클라우드 간 자동 복제에 대해 알아보세요.
다른 리전의 컨슈머와 공동 작업하는 데는 추가 비용이 발생합니다. 이러한 비용에 대한 자세한 내용은 클라우드 간 자동 복제 비용 섹션을 참조하세요.
인자:
cleanroom_name (문자열) - 리전 간에 공유해야 하는 클린룸의 이름입니다. 개별 클린룸을 공유하려면 먼저 관리자가 계정에 대해 클라우드 간 자동 복제를 사용하도록 설정해야 합니다.
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.enable_laf_for_cleanroom($cleanroom_name);
view_ui_registration_request_log – DEPRECATED¶
- 스키마:
 PROVIDER
주의
이 명령은 이제 더 이상 사용되지 않습니다. 더 이상 클린룸 UI에서 사용하기 위해 클린룸 템플릿을 수동으로 등록할 필요가 없습니다.
설명: 클린룸을 클린룸 UI에 등록하기 위해 계정에서 발생한 요청 목록을 봅니다. 각 요청에는 view_ui_registration_log 프로시저와 함께 사용하여 요청 상태를 확인할 수 있는 연결된 ID가 있습니다. 요청은 백엔드로 공유되어 처리되고 클린룸이 클린룸에 추가됩니다.
인자:
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.view_ui_registration_request_log();
register_table_or_view – 사용 중단됨¶
- 스키마:
 LIBRARY
주의
이 명령은 이제 사용 중단됩니다. 대신 :ref:`cleanroom_provider_library_register_objects`를 사용합니다.
설명: 모든 유형의 테이블 및 뷰를 등록합니다.
인자: object_names (array), is_view (boolean), is_iceberg (boolean), is_external (boolean), is_under_managed_access_schema (boolean)
반환: (문자열) 성공 메시지.
예
테이블을 등록하려면:
CALL samooha_by_snowflake_local_db.library.register_table_or_view(
    ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
    false,
    false,
    false,
    false);
Iceberg 테이블을 등록하려면:
CALL samooha_by_snowflake_local_db.library.register_table_or_view(
        ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
        false,
        true,
        false,
        false);
register_table – 사용 중단됨¶
- 스키마:
 LIBRARY
주의
이 명령은 이제 사용 중단됩니다. 대신 :ref:`cleanroom_provider_library_register_objects`를 사용합니다.
설명: ``register_db``와 유사하지만 테이블 수준에서 작업합니다. SAMOOHA_APP_ROLE 역할에 이 테이블에 대한 SELECT 권한을 부여하여 사용자가 이 테이블을 클린룸에 연결할 수 있도록 지원합니다.
관리형 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수를 사용하여 생성된 스키마)에 테이블을 등록하려는 경우 ``library.register_managed_access_table``을 대신 사용합니다.
인자: table_name (array)
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.library.register_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
register_managed_access_table – 사용 중단됨¶
- 스키마:
 LIBRARY
주의
이 명령은 이제 사용 중단됩니다. 대신 :ref:`cleanroom_provider_library_register_objects`를 사용합니다.
설명: ``register_table``과 유사하지만, WITH MANAGED ACCESS 매개 변수로 생성된 스키마에 테이블을 등록합니다. 정규화된 테이블 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여 선택이 이루어지면 사용자가 테이블을 클린룸에 연결할 수 있습니다.
인자: table_name (array)
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.library.register_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
register_view – 사용 중단됨¶
- 스키마:
 LIBRARY
주의
이 명령은 이제 사용 중단됩니다. 대신 :ref:`cleanroom_provider_library_register_objects`를 사용합니다.
설명: ``register_db``와 유사하지만 뷰 수준에서 작업합니다. 정규화된 뷰 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여 선택이 이루어지면 사용자가 뷰를 클린룸에 연결할 수 있습니다.
관리형 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수를 사용하여 생성된 스키마)에 뷰를 등록하려는 경우 ``library.register_managed_access_view``를 대신 사용합니다.
인자: view_name (array)
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.library.register_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
register_managed_access_view – 사용 중단됨¶
- 스키마:
 LIBRARY
주의
이 명령은 이제 사용 중단됩니다. 대신 :ref:`cleanroom_provider_library_register_objects`를 사용합니다.
설명: ``register_view``와 유사하지만, WITH MANAGED ACCESS 매개 변수로 생성된 스키마에 뷰를 등록합니다. 정규화된 뷰 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여 선택이 이루어지면 사용자가 뷰를 클린룸에 연결할 수 있습니다.
인자: view_name (array)
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.library.register_managed_access_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
unregister_table_or_view – 사용 중단됨¶
- 스키마:
 LIBRARY
주의
이 명령은 이제 사용 중단됩니다. 대신 :ref:`cleanroom_provider_unregister_objects`를 사용합니다.
설명: 모든 유형의 테이블 및 뷰 등록을 취소합니다.
인자: object_names (array), is_view (boolean), is_iceberg (boolean), is_external (boolean), is_under_managed_access_schema (boolean)
반환: (문자열) 성공 메시지.
예
테이블 등록을 취소하려면:
CALL samooha_by_snowflake_local_db.library.unregister_table_or_view(
  ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
  false,
  false,
  false,
  false);
unregister_table – 사용 중단됨¶
- 스키마:
 LIBRARY
주의
이 명령은 이제 사용 중단됩니다. 대신 :ref:`cleanroom_provider_unregister_objects`를 사용합니다.
설명: ``unregister_db``와 유사하지만 테이블 수준에서 작업합니다. 완전히 정규화된 테이블 이름을 나타내는 배열 또는 문자열을 전달하여 테이블을 등록 해제할 수 있습니다. 사용자는 등록되지 않은 테이블을 클린룸에 연결할 수 없습니다.
관리형 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수를 사용하여 생성된 스키마)에서 테이블을 등록 해제하려는 경우 ``library.unregister_managed_access_table``을 대신 사용합니다.
인자: table_name (array)
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.library.unregister_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
unregister_managed_access_table – 사용 중단됨¶
- 스키마:
 LIBRARY
주의
이 명령은 이제 사용 중단됩니다. 대신 :ref:`cleanroom_provider_unregister_objects`를 사용합니다.
설명: ``unregister_table``과 유사하지만, 관리형 액세스 스키마(즉, WITH, MANAGED ACCESS 매개 변수로 생성된 스키마)의 테이블을 등록 해제합니다.
인자: table_name (array)
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.library.unregister_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
unregister_view – 사용 중단됨¶
- 스키마:
 LIBRARY
주의
이 명령은 이제 사용 중단됩니다. 대신 :ref:`cleanroom_provider_unregister_objects`를 사용합니다.
설명: ``unregister_db``와 유사하지만 뷰 수준에서 작업합니다. 완전히 정규화된 뷰 이름을 나타내는 배열 또는 문자열을 전달하여 뷰를 등록 해제할 수 있습니다. 사용자는 등록되지 않은 뷰를 클린룸에 연결할 수 없습니다.
관리형 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수를 사용하여 생성된 스키마)에서 뷰를 등록 해제하려는 경우 ``library.unregister_managed_access_view``를 대신 사용합니다.
인자: view_name (array)
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.library.unregister_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
unregister_managed_access_view – 사용 중단됨¶
- 스키마:
 LIBRARY
주의
이 명령은 이제 사용 중단됩니다. 대신 :ref:`cleanroom_provider_unregister_objects`를 사용합니다.
설명: ``unregister_view``와 유사하지만, 관리형 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)에서 뷰를 등록 해제합니다.
인자: view_name (array)
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.library.unregister_managed_access_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
create_cleanroom_listing – 사용 중단됨¶
- 스키마:
 PROVIDER
주의
이 명령은 이제 사용 중단됩니다. 대신 :ref:`provider_create_or_update_cleanroom_listing`를 사용합니다.
설명: 클린룸을 구성한 후 Snowflake Marketplace에서 클린룸이 포함된 비공개 목록을 만들고 지정된 공동 작업자와 공유합니다.
해당 계정 URL의 orgname.account_name 형식을 사용하여 공동 작업자를 식별합니다. 컨슈머는 :ref:`label-account_name_find`의 지침에 따라 이 문자열을 찾을 수 있습니다.
참고
이 프로시저를 사용하려면 릴리스 지시문을 설정해야 합니다. 자세한 내용은 provider.set_default_release_directive 섹션을 참조하세요.
인자: cleanroom_name (string), consumer_account_name (string)
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.create_cleanroom_listing($cleanroom_name, <consumerorg.consumeracct>);
register_cleanroom_in_ui – DEPRECATED¶
- 스키마:
 PROVIDER
주의
이 명령은 이제 더 이상 사용되지 않습니다. 더 이상 클린룸 UI에서 사용하기 위해 클린룸 템플릿을 수동으로 등록할 필요가 없습니다.
설명: 컨슈머가 클린룸 UI에서 사용할 클린룸을 등록합니다. 클린룸은 공급자가 개발자 APIs를 사용하여 을 생성하고 구성합니다. 그런 다음, 이 명령은 컨슈머가 개발자 APIs를 사용할 필요 없이 클린룸을 클린룸 UI에 등록하여 설치하고, 테이블을 추가하고, 추가한 사용자 지정 분석을 실행할 수 있도록 합니다. 컨슈머는 전적으로 클린룸 UI의 사용자 인터페이스를 통해 클린룸을 사용합니다.
이 API를 두 번 이상 호출하여 클린룸 UI에 여러 사용자 지정 템플릿을 포함시킬 수 있습니다.
**인자:**cleanroom_name (String), 템플릿 이름 (String), consumer_account_locator (String), user_email (String)
반환: (문자열) 성공 메시지.
예:
CALL samooha_by_snowflake_local_db.provider.register_cleanroom_in_ui($cleanroom_name, 'prod_custom_template', <CONSUMER ACCOUNT LOCATOR>, <USER_EMAIL>)