Snowflake Data Clean Rooms: 공급자 API 참조 가이드

이 페이지에서는 클린룸 API 컨슈머가 클린룸을 관리하는 데 사용하는 프로시저에 대해 설명합니다. 코딩 설정 지침은 코딩 설정 섹션을 참조하세요.

클린룸 생성, 구성 및 삭제

이러한 프로시저를 통해 공급자가 클린룸을 생성, 구성, 삭제할 수 있습니다.

view_cleanrooms

스키마:

PROVIDER

설명: 이 공급자 계정으로 생성한 모든 기존 클린룸 목록을 표시합니다.

인자: 없음

반환: (table) 이 공급자 계정에서 생성한 클린룸 목록입니다. 클린룸은 컨슈머에게 공유하거나 설치하거나 사용할 필요가 없습니다. 삭제된 클린룸은 데이터베이스에서 삭제되며 이 목록에 표시되지 않습니다.

예:

CALL samooha_by_snowflake_local_db.provider.view_cleanrooms();
Copy

describe_cleanroom

스키마:

PROVIDER

설명: 템플릿, 조인 정책, 열 정책, 컨슈머 등 클린룸에 대한 정보 요약을 확인하십시오.

인자:

  • *cleanroom_name (문자열) - 정보를 가져올 클린룸의 이름입니다.

**반환값:**(string) 클린룸 메타데이터 요약입니다.

예:

CALL samooha_by_snowflake_local_db.provider.describe_cleanroom($cleanroom_name);
Copy

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;
      
      Copy

반환: (문자열) 성공 메시지.

예:

-- Create an internal clean room
CALL samooha_by_snowflake_local_db.provider.cleanroom_init($cleanroom_name, 'INTERNAL');
Copy

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>;
Copy

여기서, ``<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'
);
Copy

drop_cleanroom

스키마:

PROVIDER

설명: 클린룸을 삭제합니다. 클린룸이 설치된 공동 작업자는 더 이상 클린룸에 액세스하거나 사용할 수 없습니다. 다음에 브라우저를 새로 고칠 때 클린룸이 더 이상 클린룸 UI에 표시되지 않습니다.

인자:

반환: (문자열) 성공 메시지.

예:

CALL samooha_by_snowflake_local_db.provider.drop_cleanroom($cleanroom_name);
Copy

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>']
);
Copy

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>']
);
Copy

is_consumer_run_enabled

스키마:

LIBRARY

설명: 이 클린룸에서 컨슈머 분석이 가능한지 확인합니다.

인자:

**반환값:**(string) 이 클린룸이 컨슈머 분석을 허용하는지 여부.

예:

CALL samooha_by_snowflake_local_db.library.is_consumer_run_enabled($cleanroom_name)
Copy

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
);
Copy

데이터 등록 및 등록 취소

다음 명령을 사용하여 데이터베이스, 스키마, 오브젝트를 등록 및 등록 해제합니다. 테이블과 뷰는 클린룸에 연결하기 전에 등록되어야 합니다. 데이터베이스나 스키마를 등록하면 해당 데이터베이스나 스키마에 있는 모든 오브젝트가 등록됩니다. 데이터 등록에 대해 자세히 알아보세요.

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');
Copy

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']);
Copy

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']
);
Copy

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'
  ]
 );
Copy

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();
Copy

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);
Copy

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');
Copy

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']
);
Copy

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']);
Copy

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'
  ]
);
Copy

정책 관리하기

데이터 클린룸의 조인 정책은 :doc:`Snowflake 전체 조인 정책</user-guide/join-policies>`과 동일하지 않습니다. 클린룸에 대한 조인 정책은 이 프로시저를 통해서만 설정되며, 클린룸 외부의 테이블에 설정된 조인 정책은 클린룸에서 무시됩니다.

Learn more about table policies in clean rooms.

set_join_policy

스키마:

PROVIDER

Description: Specifies which columns the consumer can join on when running templates within this clean room.

Calling this function completely replaces the old policy with the new one.

Learn more about clean room policies: 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'
  ]
);
Copy

view_join_policy

스키마:

PROVIDER

Description: Shows the provider join policy in the specified clean room.

Learn more about clean room policies: Clean Room 테이블 정책 이해.

인자:

반환: (table) 클린룸의 모든 테이블 또는 뷰에서 조인 가능한 행 목록입니다.

예:

CALL samooha_by_snowflake_local_db.provider.view_join_policy($cleanroom_name);
Copy

set_column_policy

스키마:

PROVIDER

Description: Specifies which columns of your data can be projected in templates run by other collaborators.

Calling this function completely replaces the old policy with the new one.

Don’t set a column policy on identity columns or columns that contain sensitive data, such as email addresses. You generally don’t want this sort of data to be projected.

Queries with wildcards might not be caught by using these checks, so use discretion when you design the analysis template.

Learn more about clean room policies: 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']);
Copy

view_column_policy

스키마:

PROVIDER

Description: Shows the provider’s column policy in the designated clean room.

Learn more about clean room policies: Clean Room 테이블 정책 이해.

인자:

반환: (table) 어떤 템플릿에서 어떤 열을 사용할 수 있는지입니다.

예:

CALL samooha_by_snowflake_local_db.provider.view_column_policy($cleanroom_name);
Copy

공급자 템플릿 관리하기

다음 명령을 사용하여 이 클린룸에서 지원되는 템플릿/분석을 추가합니다.

view_added_templates

스키마:

PROVIDER

설명: 클린룸에서 공급자가 추가한 템플릿을 봅니다. 이 공급자의 모든 클린룸에 있는 모든 템플릿을 나열하는 방법은 없습니다.

인자:

반환: (table) - 지정된 클린룸에서 사용 가능한 템플릿 목록과 각 템플릿에 대한 세부 정보입니다.

예:

CALL samooha_by_snowflake_local_db.provider.view_added_templates($cleanroom_name);
Copy

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);
Copy

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']);
Copy

clear_template

스키마:

PROVIDER

설명: 클린룸에서 지정된 템플릿을 제거합니다.

인자:

  • *cleanroom_name (문자열) - 클린룸의 이름입니다.

  • template_name - (문자열) 해당 클린룸에서 제거할 템플릿의 이름입니다.

반환: (문자열) 성공 메시지.

예:

CALL samooha_by_snowflake_local_db.provider.clear_template(
  $cleanroom_name,
  'prod_custom_template');
Copy

clear_all_templates

스키마:

PROVIDER

설명: 클린룸에 추가된 모든 템플릿을 제거합니다.

인자:

  • cleanroom_name (문자열) - 모든 템플릿을 제거할 클린룸의 이름입니다.

반환: (문자열) 성공 메시지.

예:

CALL samooha_by_snowflake_local_db.provider.clear_all_templates($cleanroom_name);
Copy

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 %};
    $$);
Copy

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 (오브젝트): 분석을 실행하는 데 사용할 웨어하우스 유형을 추천합니다. 다음 필드가 있는 오브젝트입니다.

      • warehouse_size: 유효한 값은 :doc:`/sql-reference/sql/create-warehouse`의 *warehouse_size*를 참조하세요.

      • snowpark_optimized (부울): 쿼리를 처리하기 위해 :doc:`Snowpark에 최적화된 웨어하우스</user-guide/warehouses-snowpark-optimized>`를 사용할지 여부입니다. 대부분의 머신 러닝 사용 사례에서 Snowflake는 TRUE를 권장합니다.

    • 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>]
    }
    
    Copy
    • 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 오브젝트에서 허용되는 값의 행렬을 보여줍니다.

type

references

provider_parent_table_field

consumer_parent_table_field

render_provider_table_dropdown

render_consumer_table_dropdown

multiselect 또는 dropdown

PROVIDER_TABLES

허용되지 않음

허용되지 않음

FALSE

TRUE 또는 FALSE

PROVIDER_JOIN_POLICY

source_table

허용되지 않음

TRUE

TRUE 또는 FALSE

PROVIDER_JOIN_POLICY

parent field name

허용되지 않음

TRUE 또는 FALSE

TRUE 또는 FALSE

PROVIDER_COLUMN_POLICY

source_table

허용되지 않음

TRUE

TRUE 또는 FALSE

PROVIDER_COLUMN_POLICY

parent field name

허용되지 않음

TRUE 또는 FALSE

TRUE 또는 FALSE

CONSUMER_TABLES

허용되지 않음

허용되지 않음

TRUE 또는 FALSE

FALSE

CONSUMER_COLUMNS

허용되지 않음

my_table 또는 parent field name

TRUE 또는 FALSE

TRUE

CONSUMER_JOIN_POLICY

허용되지 않음

my_table 또는 parent field name

TRUE 또는 FALSE

TRUE

CONSUMER_COLUMN_POLICY

허용되지 않음

my_table 또는 parent field name

TRUE 또는 FALSE

TRUE

PROVIDER_ACTIVATION_POLICY

허용되지 않음

허용되지 않음

TRUE 또는 FALSE

TRUE 또는 FALSE

반환: (문자열) 성공 메시지.

예:

-- 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'
      }
  );
Copy

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']
  }
);
Copy

컨슈머 정의 템플릿

다음 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);
Copy

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);
Copy

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'
);
Copy

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'
  ]
);
Copy

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');
Copy

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')
  ]
);
Copy

템플릿 체인

다음 명령을 사용하여 :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
    }
  ]
);
Copy

view_added_template_chains

스키마:

PROVIDER

설명: 지정된 클린룸에 있는 템플릿 체인을 목록으로 표시합니다.

인자:

반환: (table) 이 클린룸에 추가된 모든 템플릿 체인에 대한 설명입니다.

예:

CALL samooha_by_snowflake_local_db.provider.view_added_template_chains($cleanroom_name);
Copy

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');
Copy

clear_template_chain

스키마:

PROVIDER

설명: 지정된 클린룸에서 지정된 템플릿 체인을 삭제합니다. 체인은 어디에도 저장되지 않으므로 체인을 다시 생성하려면 처음부터 다시 생성해야 합니다.

인자:

  • cleanroom_name (문자열) - 이 템플릿 체인이 할당된 클린룸입니다.

  • template_chain_name - (문자열) 이 클린룸에서 제거할 템플릿 체인입니다.

반환: (문자열) 성공 메시지.

예:

CALL samooha_by_snowflake_local_db.provider.clear_template_chain($cleanroom_name, 'my_chain');
Copy

활성화

*활성화*는 공급자, 컨슈머 또는 서드 파티에 결과를 내보내는 것을 의미합니다. 활성화에 대해 자세히 알아보세요.

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' ]);
Copy

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);
Copy

update_activation_warehouse

스키마:

PROVIDER

설명: 공급자 활성화에서 결과를 출력 테이블로 암호 해독할 때 사용할 웨어하우스 크기를 지정합니다. 암호 해독에 사용되는 웨어하우스는 DCR_ACTIVATION_WAREHOUSE 입니다. 공급자가 이 웨어하우스에 대한 비용을 지불합니다.

인자:

  • size - (문자열) 웨어하우스 크기입니다. CREATE WAREHOUSE 명령에서 WAREHOUSE_SIZE 값 중 하나를 선택합니다.

반환: (문자열) 성공 메시지.

예:

CALL samooha_by_snowflake_local_db.provider.update_activation_warehouse('LARGE');
Copy

setup_provider_activation_share_mount_task

스키마:

PROVIDER

설명: 공급자가 계정에 Clean Room UI 를 설치하지 않은 경우 공급자 활성화를 사용합니다.

``provider.add_consumers``를 사용하여 컨슈머를 추가한 후 호출합니다. 공급자 활성화를 구현하고 있는 경우 공급자에게 클린룸 UI가 설치되어 있지 않은 경우에만 호출됩니다(컨슈머에게 UI가 설치되어 있는지 여부는 중요하지 않음).

그러면 공급자 활성화에 필요한 컨슈머 공유를 비동기적으로 마운트하는 스레드가 시작됩니다. 이 코드는 공유를 동기적으로 마운트하고 코드를 차단하는 대신 비동기적으로 공유를 마운트하고 새 공동 작업자가 있는지 주기적으로 다시 확인합니다. 이 프로시저는 한 번만 호출해야 하며, 나중에 이 프로시저를 다시 호출할 필요 없이 공동 작업자를 추가할 수 있습니다.

인자:

  • frequency_minutes - (정수) 공유를 마운트하기 위해 이 클린룸에서 새로운 컨슈머를 다시 확인하는 빈도입니다. 권장 값은 15입니다.

반환: (String) 성공 메시지.

예:

CALL samooha_by_snowflake_local_db.provider.setup_provider_activation_share_mount_task(15);
Copy

dcr_health.provider_run_provider_activation_history

설명: 지정된 클린룸에 대한 공급자 활성화 요청 기록을 반환합니다. 공급자와 컨슈머가 모두 시작한 공급자 활성화 요청이 표시됩니다. 이 프로시저는 공급자 활성화 관련 문제를 디버그하는 데 도움이 되는 추가 정보를 제공합니다.

인자:

  • cleanroom_name (문자열) - 활성화가 요청된 클린룸의 이름입니다. 사용자는 이 클린룸의 공급자 또는 컨슈머여야 합니다.

반환: (테이블) - 템플릿 및 세그먼트 이름, 상태, 컨슈머 계정 로케이터, 요청에서 반환된 모든 오류 메시지 등 각각에 대한 정보가 포함된 활성화 요청 목록입니다.

예:

CALL samooha_by_snowflake_local_db.dcr_health.provider_run_provider_activation_history(
  $cleanroom_name);
Copy

view_external_activation_history

스키마:

LIBRARY

설명: 현재 계정의 활성화 요청 기록을 봅니다.

인자: 없음

반환: 활성화 요청의 세부 정보 및 상태가 포함된 테이블.

:

CALL samooha_by_snowflake_local_db.library.view_external_activation_history();
Copy

공급자로 분석 실행하기

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>']
);
Copy

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>']);
Copy

is_provider_run_enabled

스키마:

LIBRARY

설명: 이 클린룸에서 공급자 실행 분석을 허용하는지 확인합니다.

인자:

반환: (string) 이 클린룸에서 공급자 실행 분석을 허용하는지 여부.

예:

CALL samooha_by_snowflake_local_db.library.is_provider_run_enabled($cleanroom_name)
Copy

is_request_back_share_mounted

스키마:

PROVIDER

설명: 지정된 컨슈머로부터 지정된 클린룸의 공급자에게 메시지를 전파할 수 있는지 확인합니다. 이 클린룸에서 이 컨슈머에 대한 백 공유가 마운트되지 않은 경우, 공급자 실행 요청 승인과 같은 메시지는 컨슈머에서 공급자로 전파되지 않습니다(단, 컨슈머 측에서는 큐에 추가됨).

``provider.mount_request_logs_for_all_consumers``를 호출하여 이 컨슈머와의 공유를 다시 설정합니다. 이전에 ``provider.mount_request_logs_for_all_consumers``를 호출했는데 ``is_request_back_share_mounted``가 실패한 경우 마지막으로 ``provider.mount_request_logs_for_all_consumers``를 호출한 이후에 이 컨슈머를 이 클린룸에 추가했을 가능성이 높습니다.

인자:

  • cleanroom_name *(문자열) - 확인할 클린룸의 이름입니다.

  • consumer_account - (문자열) 컨슈머의 계정 로케이터입니다.

반환: 지정된 클린룸에서 지정된 컨슈머에 대해 백 공유가 활성화된 경우 SUCCESS입니다. 그렇지 않으면 오류가 발생합니다.

예:

CALL samooha_by_snowflake_local_db.library.is_request_back_share_mounted(
  $cleanroom_name,
  $consumer_locator);
Copy

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);
Copy

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 - (String) Account locator of the consumer in this clean room who has allowed provider-run analyses by calling consumer.enable_templates_for_provider_run.

  • template_name - (String) Name of the template to run.

  • provider_tables - (Array of String) List of provider tables to expose to the template. This list will populate the source_table array variable.

  • consumer_tables - (Array of String) List of consumer tables to expose to the template. This list will populate the my_table array variable.

  • analysis_arguments - (JSON object) Pass in any arguments required by the template as key-value pairs. The following fields are required only if the consumer specifies a set of allowed warehouse types and sizes. Call provider.view_warehouse_sizes_for_template to see if the consumer has specified required warehouse size and type.

    • warehouse_type (String, required only if the consumer specifies a range of permitted types) - A warehouse type that the consumer allows for provider-run analyses with the specified template. See the list of supported types. If the consumer has not specified a preference, the default is STANDARD.

    • warehouse_size (String, required only if the consumer specifies a range of permitted sizes) - A warehouse size that the consumer allows for provider-run analyses with the specified template. See the list of supported types. If the consumer has not specified a preference, the default is 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.
  )
);
Copy

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;
Copy

인자:

  • 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>'
);
Copy

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
);
Copy

클린룸 공유 관리

다음 명령을 사용하여 컨슈머와의 클린룸 공유를 관리하십시오.

view_consumers

스키마:

PROVIDER

설명: 클린룸에 대한 액세스 권한이 부여된 컨슈머를 목록으로 표시합니다. 컨슈머가 클린룸을 설치했는지 여부는 표시되지 않습니다.

인자:

반환: (table) - 클린룸에 액세스할 수 있는 컨슈머 계정 목록입니다.

예:

CALL samooha_by_snowflake_local_db.provider.view_consumers($cleanroom_name);
Copy

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"
    }
  }'
);
Copy

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'
);
Copy

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'
);
Copy

클라우드 간 협업

클린룸을 다른 클라우드 리전의 컨슈머와 공유할 수 있도록 활성화합니다. 자세히 알아보세요.

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();
Copy

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();
Copy

is_laf_enabled_on_account

스키마:

LIBRARY

설명: 이 계정에 대해 클라우드 간 자동 복제가 사용 설정되어 있는지 여부를 반환합니다.

인자: 없음

반환: 이 계정에 크로스 클라우드 자동 복제가 활성화된 경우 TRUE 이고, 그렇지 않은 경우 FALSE 입니다.

예:

CALL samooha_by_snowflake_local_db.library.is_laf_enabled_on_account();
Copy

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);
Copy

클린룸에서 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)
Copy

인자:

  • 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>`여야 합니다.

반환: (문자열) 업로드 성공 시 성공 메시지

예제:

-- 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)
    $$
);
Copy
-- 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.
);
Copy

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);
Copy

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);
Copy

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);
Copy

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);
Copy

요청 로그

다음 명령을 사용하여 컨슈머 요청 로그를 관리합니다. 컨슈머는 요청 로그를 사용하여 공급자에게 메시지를 보낼 수 있으며, 컨슈머 사용자 지정 템플릿 요청, 공급자 실행 요청의 컨슈머 승인, 클라우드 간 자동 복제와 같은 기능을 활성화하려면 마운트해야 합니다.

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);
Copy

view_request_mount_status_for_all_consumers

스키마:

PROVIDER

설명: 지정된 클린룸의 모든 컨슈머에 대한 요청 로그의 마운트 상태를 표시합니다. ``provider.mount_request_logs_for_all_consumers``에 대한 호출에 포함된 컨슈머만 표시됩니다. 요청 로그를 사용하면 컨슈머에서 공급자로 메시지를 전달할 수 있습니다.

인자:

반환: (테이블) - 컨슈머와 각 컨슈머의 요청 로그 마운트 상태에 대한 테이블입니다.

예:

CALL samooha_by_snowflake_local_db.provider.view_request_mount_status_for_all_consumers($cleanroom_name);
Copy

view_request_logs

스키마:

PROVIDER

설명: 이 클린룸에서 컨슈머가 보낸 요청 로그를 표시합니다. 이전에 ``mount_request_logs_for_all_consumers``에 대한 성공적인 호출에 포함된 컨슈머의 요청만 표시됩니다.

인자:

  • cleanroom_name (문자열) - 요청 로그를 검토할 클린룸의 이름입니다.

반환: (테이블) 컨슈머가 지정된 클린룸의 공급자에게 보낸 요청입니다.

예:

CALL samooha_by_snowflake_local_db.provider.view_request_logs($cleanroom_name);
Copy

차등 개인정보 보호

이러한 명령은 사용자 수준 또는 공급자 계정 수준에서 차등 개인정보 보호를 제어합니다. 차등 개인정보 보호에 대해 자세히 알아보세요.

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 });
Copy

is_dp_enabled_on_account

스키마:

PROVIDER

설명: 이 계정에 대해 차등 개인정보 보호가 사용 설정되어 있는지 여부를 설명합니다.

인자: 없음

반환: 이 계정에 대해 차등 개인정보 보호가 활성화된 경우 TRUE, 그렇지 않은 경우 FALSE.

예:

CALL samooha_by_snowflake_local_db.provider.is_dp_enabled_on_account();
Copy

suspend_account_dp_task

스키마:

PROVIDER

설명: 차등 개인정보 보호 예산을 모니터링하고 적용하는 작업을 비활성화합니다. 이는 계정의 차등 개인정보 보호와 관련된 비용

인자: 없음

반환: (문자열) 성공 메시지.

예:

CALL samooha_by_snowflake_local_db.provider.suspend_account_dp_task();
Copy

resume_account_dp_task

스키마:

PROVIDER

설명: 현재 계정에서 차등 개인정보 보호 작업 리스너를 다시 시작하면 차등 개인정보 보호 예산이 적용됩니다. 이전에 설정한 모든 차등 개인정보 보호 값(예: 민감도 또는 연결된 사용자)은 유지됩니다.

인자: 없음

반환: (문자열) 성공 메시지.

예:

CALL samooha_by_snowflake_local_db.provider.resume_account_dp_task();
Copy

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>`에 매핑됩니다. 각 요소에 대한 자세한 내용은 해당 설명서를 참조하세요. 지원되는 하위 속성은 다음과 같습니다.

      • name

      • args

      • returns

      • endpoint

      • path

      • max_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
$$);
Copy

환경 관리

다음 명령을 사용하여 일반적으로 클린룸 기능 및 지원되는 플로우를 활용하는 데 도움을 받을 수 있습니다.

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);
Copy

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();
Copy

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();
Copy

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();
Copy

patch_cleanroom

스키마:

PROVIDER

설명: 지정된 클린룸을 최신 버전으로 업데이트하여 해당 클린룸의 새로운 기능과 수정 사항을 활성화합니다. 일반적으로 Snowflake 지원에서 호출하도록 지시한 경우에만 호출합니다.

공급자는 컨슈머가 ``library.patch_cleanroom``을 호출하기 전에 ``library.patch_cleanroom``을 호출해야 합니다. 그렇지 않으면 적용할 패치가 없습니다.

인자:

  • cleanroom_name (문자열) : 패치할 클린룸의 이름입니다.

반환: (문자열) 성공 메시지.

예:

CALL samooha_by_snowflake_local_db.provider.patch_cleanroom($cleanroom_name);
Copy

dcr_health.dcr_tasks_health_check

설명: 실행 중이거나 최근에 중지된 클린룸 작업에 대한 정보를 표시합니다.

인자: 없음

반환: (테이블) 일정, 웨어하우스 이름, 웨어하우스 크기 등 클린룸 작업에 대한 정보입니다.

예:

CALL samooha_by_snowflake_local_db.dcr_health.dcr_tasks_health_check();
Copy