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.

view_join_policy

스키마:

PROVIDER

설명: 현재 클린룸에 적용된 조인 정책을 표시합니다.

인자:

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

예:

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

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

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

view_column_policy

스키마:

PROVIDER

설명: 현재 클린룸에서 활동 중인 열 정책을 목록으로 표시합니다. 열 정책은 어떤 템플릿에 어떤 테이블 열을 표시할 수 있는지 알려줍니다.

인자:

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

예:

CALL samooha_by_snowflake_local_db.provider.view_column_policy($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, '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 %};
    $$);
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

다중 공급자 분석

이러한 프로시저를 통해 :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>);
Copy

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

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

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

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

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 - (문자열) ``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.
  )
);
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

사용되지 않는 프로시저

다음 프로시저는 더 이상 사용되지 않으며 여기에는 완전성을 위해서만 나열되어 있습니다. 교체 프로시저가 표시되면 최신 프로시저를 사용합니다.

mount_laf_cleanroom_requests_share(사용 중단됨)

스키마:

PROVIDER

이 함수는 이제 더 이상 사용되지 않습니다. 대신 ``provider.mount_request_logs_for_all_consumers``를 호출하세요.

설명: 지정된 클린룸 및 컨슈머 계정에 대해 클라우드 간 요청에 액세스할 수 있도록 합니다. ``provider.request_laf_cleanroom_requests``는 이 프로시저를 호출하기 전에 FULFILLED의 상태를 반환해야 합니다.

이 프로세스는 공급자와 컨슈머가 서로 다른 클라우드 리전에 있는 컨슈머 정의 템플릿에 필요합니다.

인자:

  • cleanroom_name (문자열) - 공유되는 클린룸입니다.

  • consumer_locator - (문자열) 이 클린룸에서 클라우드 간 요청을 할 컨슈머의 Snowflake 계정 로케이터입니다.

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

예:

CALL samooha_by_snowflake_local_db.provider.mount_laf_cleanroom_requests_share(
  $cleanroom_name, $consumer_locator);
Copy

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

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

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

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

Iceberg 테이블을 등록하려면:

CALL samooha_by_snowflake_local_db.library.register_table_or_view(
        ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
        false,
        true,
        false,
        false);
Copy

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

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

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

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

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

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

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

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

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

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

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