Snowflake Data Clean Rooms 협업 API예요
Snowflake Data Clean Rooms 협업 API예요
기능 — 일반 공급
현재 이 리전들에서 사용할 수 있어요.
정부 및 VPS 배포에서는 사용할 수 없어요.
출처: 문서
본문
소개
이 페이지는 Snowflake Data Clean Rooms Collaboration API에 대한 참조 페이지예요. 이 API는 COLLABORATION 및 REGISTRY 스키마를 사용해요.
참고
Collaboration API를 사용할 때 환경에서 보조 역할을 비활성화해야 해요:
USE SECONDARY ROLES NONE;
개발 환경을 설정하는 방법을 알아보려면 Setting up your environment를 보세요.
Collaboration API 프로시저에 대한 액세스를 관리하는 방법을 알아보려면 Use DCR privileges to manage account, object, and procedure privileges를 보세요.
메타데이터 치트 시트
콜라보레이션에 대해 자주 찾는 정보를 확인하는 방법은 다음과 같아요:
``````````````EDITLINK_DATA_OFFERINGADD_TEMPLATE_REQUEST``
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.
VIEW_COLLABORATIONS() ->>
SELECT "COLLABORATION_SPEC" FROM $1
WHERE "SOURCE_NAME" = <collaboration name>;
| 알아보려면… | 호출할 것 |
|---|---|
| 어떤 콜라보레이션에 참여할 수 있나요? | VIEW_COLLABORATIONS - collaboration_name 열이 NULL인 콜라보레이션을 찾아보세요. |
| 어떤 콜라보레이션에 참여했나요? | VIEW_COLLABORATIONS - collaboration_name 열이 NULL이 아닌 콜라보레이션을 찾아보세요. 이는 콜라보레이션을 생성했거나 참여했음을 의미할 수 있어요. |
| 어떤 콜라보레이션을 소유하고 있나요? | VIEW_COLLABORATIONS - owner_account 열을 확인하세요. |
| 콜라보레이션에 있는 모든 협업자의 상태는 무엇인가요? | GET_STATUS |
| 콜라보레이션에서 나의 참여 또는 생성 상태는 무엇인가요? | GET_STATUS 또는 VIEW_COLLABORATIONS |
| 특정 콜라보레이션의 소유자는 누구인가요? | GET_STATUS - roles 열에서 OWNER를 찾아보세요. |
| 특정 콜라보레이션에서 나의 콜라보레이션 역할은 무엇인가요? | GET_STATUS - roles 열을 확인하세요. |
| 특정 콜라보레이션에 어떤 콜라보레이션 역할이 할당되어 있나요? | GET_STATUS - roles 열을 확인하세요. |
| 특정 콜라보레이션의 스펙은 무엇인가요? | VIEW_COLLABORATIONS - collaboration_spec 열을 확인하세요. |
| 기존 콜라보레이션을 어떻게 편집하나요? | 콜라보레이션 소유자는 협업자를 추가하거나 제거하고, 협업자 역할을 변경하거나, 콜라보레이션에 이미 등록되거나 연결된 리소스를 다시 공유할 수 있어요. 모든 협업자(소유자 포함)는 (데이터 오퍼링) 또는 (템플릿)을 호출하여 새 리소스를 콜라보레이션에 공유할 수 있어요. |
| 스펙이 최신 상태인가요? | 특정 스펙에 진행 중인 변경 사항이 있는지 알 수 있는 방법은 없어요. 하지만 VIEW_COLLABORATIONS를 호출하여 최신 업데이트가 적용된 시점을 확인할 수 있어요. |
| 나에게 보류 중인 업데이트 요청은 무엇인가요? | VIEW_UPDATE_REQUESTS. STATUS = PENDING_MY_APPROVAL인 행을 찾아보세요. |
| 특정 콜라보레이션의 스펙을 보여주세요. | REVIEW는 콜라보레이션 스펙을 반환해요. 이미 REVIEW를 호출했거나 콜라보레이션에 참여한 경우, 표시된 대로 콜라보레이션 이름을 사용하여 다음 SQL 명령을 호출하세요. |
템플릿 프로시저
REGISTER_TEMPLATE
스키마:
REGISTRY
템플릿을 등록하여 콜라보레이션에서 사용할 수 있게 해요. 등록하는 모든 템플릿은 계정의 모든 레지스트리에 있는 모든 템플릿에 대해 고유한 이름-버전 조합을 가져야 해요. 등록한 템플릿을 제거하려면 REGISTRY.UNREGISTER_TEMPLATE를 호출하세요.
구문
REGISTER_TEMPLATE( ['<registry_name>' ,] <template_spec> )
인자
*registry_name* (Optional)
이 템플릿을 등록할 custom registry의 이름이에요. 지정하지 않으면 계정의 기본 레지스트리에 템플릿을 등록해요.
*template_spec*
문자열 형태의 YAML 형식으로 된 Template definition이에요.
반환 값
콜라보레이션 스펙에서 사용할 템플릿 ID예요.
예시
기본 레지스트리에 템플릿을 등록해요:
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.REGISTER_TEMPLATE(
$$
api_version: 2.0.0
spec_type: template
name: my_test_template
version: 2026_01_12_V1
type: sql_analysis
description: A test template
template:
SELECT * FROM IDENTIFIER({{ source_table[0] }}) LIMIT 10;
$$);
사용자 지정 레지스트리에 템플릿을 등록해요:
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.REGISTER_TEMPLATE(
'my_custom_registry',
$$
api_version: 2.0.0
spec_type: template
name: my_test_template
version: 2026_01_12_V1
type: sql_analysis
description: A test template
template:
SELECT * FROM IDENTIFIER({{ source_table[0] }}) LIMIT 10;
$$);
액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저를 호출하여 권한이 부여된 역할을 사용해야 해요.
기본 레지스트리에 객체를 등록하려면:
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('REGISTER TEMPLATE', '{role name}')
사용자 지정 레지스트리에 항목을 등록하려면:
-
직접 만든 사용자 지정 레지스트리에 대한 읽기 및 쓰기 권한이 있어요.
-
다른 사용자가 만든 사용자 지정 레지스트리에 액세스하려면
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('REGISTER', 'REGISTRY', 'MY_REGISTRY', '{role name}')가 필요해요.
VIEW_REGISTERED_TEMPLATES
스키마:
REGISTRY
등록한 모든 템플릿을 나열해요. 템플릿을 등록하려면 REGISTRY.REGISTER_TEMPLATE를 호출하세요.
구문
VIEW_REGISTERED_TEMPLATES()
VIEW_REGISTERED_TEMPLATES( [ '<registry_name>' ] )
인자
*registry_name* (Optional)
읽기 범위를 지정하는 레지스트리 이름의 ARRAY예요. 'default'(대소문자 구분 안 함)를 사용하면 사용자 지정 레지스트리와 함께 기본 제공 레지스트리를 포함할 수 있어요. 배열에 있는 액세스할 수 없거나 존재하지 않는 레지스트리는 자동으로 건너뛰어요. 지정하지 않으면 액세스할 수 있는 모든 레지스트리에서 템플릿을 나열해요.
예시: ['default', 'my_registry', 'other_reg']
반환 값
이 계정에서 등록한 모든 템플릿의 세부 정보를 나열하는 테이블이에요. 테이블에는 다음 열이 포함돼요:
-
TEMPLATE_ID: 템플릿의 ID예요. -
NAME: 템플릿 이름이에요. -
VERSION: 템플릿 버전이에요. -
TEMPLATE_SPEC: 템플릿의 전체 YAML 스펙이에요. -
REGISTRY: 템플릿이 등록된 레지스트리예요. -
CREATED_ON: 템플릿이 생성된 타임스탬프예요.
예시
모든 레지스트리에서 템플릿을 나열해요:
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.VIEW_REGISTERED_TEMPLATES();
기본 레지스트리의 템플릿만 나열해요:
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.VIEW_REGISTERED_TEMPLATES(['default']);
특정 레지스트리의 템플릿을 나열해요:
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.VIEW_REGISTERED_TEMPLATES(
['default', 'my_custom_registry']
);
액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요.
기본 레지스트리의 항목을 보려면:
-
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('VIEW REGISTERED TEMPLATES', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')
사용자 지정 레지스트리의 항목을 보려면:
-
직접 만든 사용자 지정 레지스트리에는 읽기 및 쓰기 권한이 있어요.
-
다른 사용자가 만든 사용자 지정 레지스트리에 액세스하려면
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('READ', 'REGISTRY', 'MY_REGISTRY', '{role name}')권한이 필요해요.
UNREGISTER_TEMPLATE
스키마:
REGISTRY
이전에 등록한 템플릿을 레지스트리에서 제거하여 등록을 취소해요. 등록한 템플릿의 ID를 찾으려면 REGISTRY.VIEW_REGISTERED_TEMPLATES를 호출하세요.
현재 협업에서 사용 중인 템플릿은 등록을 취소할 수 없어요. 템플릿이 하나 이상의 협업에 연결된 경우 프로시저가 실패하고 해당 협업을 나열하는 오류를 반환해요. 등록을 취소하기 전에 각 협업에서 템플릿을 제거하세요.
구문
UNREGISTER_TEMPLATE( '<template_id>' )
인수
*template_id*
등록을 취소할 템플릿의 ID로, REGISTRY.REGISTER_TEMPLATE 또는 REGISTRY.VIEW_REGISTERED_TEMPLATES에서 반환된 값이에요. 템플릿 ID는 {name}_{version} 형식이에요.
반환 값
템플릿 등록이 취소되었음을 확인하는 상태 메시지가 포함된 테이블이에요.
예시
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.UNREGISTER_TEMPLATE('my_test_template_2026_01_12_V1');
액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요.
기본 레지스트리에서 템플릿 등록을 취소하려면:
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('REGISTER TEMPLATE', '{role name}')
사용자 지정 레지스트리에서 항목 등록을 취소하려면:
-
직접 만든 사용자 지정 레지스트리에는 읽기 및 쓰기 권한이 있어요.
-
다른 사용자가 만든 사용자 지정 레지스트리에 액세스하려면
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('REGISTER', 'REGISTRY', 'MY_REGISTRY', '{role name}')권한이 필요해요.
ADD_TEMPLATE_REQUEST
스키마:
COLLABORATION
기존 협업에 템플릿을 연결하기 위한 요청을 보내요. 요청의 영향을 받는 발신자인 경우 발신자가 자동으로 요청을 승인해요. 변경 사항이 적용되려면 다른 모든 영향받는 협업자가 요청을 승인해야 해요. 협업 소유자도 포함하여 모든 협업자가 기존 협업에 템플릿을 연결하려면 이 프로시저를 호출해야 해요.
추가 템플릿 공유자를 추가하려면 해당 별칭을 사용하여 이 프로시저를 다시 호출할 수 있어요. 호출할 때마다 *share_with*에 나열된 사용자가 기존 공유자 목록에 추가돼요.
요청 상태를 보려면 VIEW_UPDATE_REQUESTS를 호출하세요.
구문
ADD_TEMPLATE_REQUEST( <collaboration_name>, <template_id>, <share_with> )
인수
*collaboration_name*
템플릿을 연결할 협업의 이름이에요.
*template_id*
협업에 연결할 템플릿의 ID예요. 이 값을 얻으려면 템플릿을 등록하세요.
*share_with*
이 템플릿을 공유할 분석 실행자의 별칭 배열이에요. 여기에 나열된 협업자는 이 템플릿과 연결된 다른 협업자 외에 추가로 추가돼요. 여기에 나열된 모든 협업자는 분석 실행자여야 해요. 그렇지 않으면 이 템플릿을 누구와도 공유하지 않고 프로시저가 실패해요.
반환 값
성공 메시지 문자열이에요.
예시
-- Ask to link the template only for Collaborator3 in this collaboration.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.ADD_TEMPLATE_REQUEST(
$collaboration_name,
$template_alias,
['Collaborator3']
);
액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요:
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('UPDATE', 'COLLABORATION', '{collaboration name}', '{role name}')
다음 권한 중 하나:
-
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}'), 역할에 수동으로 부여해야 하는 모든 추가 계정 수준 권한도 포함해요. -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}'), 역할에 수동으로 부여해야 하는 모든 추가 계정 수준 권한도 포함해요.
템플릿이 사용자 지정 레지스트리에 있는 경우 GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE( 'READ', '{registry name}', '{role name}') 권한도 있어야 해요.
REMOVE_TEMPLATE
스키마:
COLLABORATION
지정된 협업자에 대해 특정 협업에서 템플릿을 제거하는 비동기 요청이에요. 템플릿을 등록한 협업자만 템플릿을 제거할 수 있어요. 등록한 템플릿을 제거할 때 다른 사람의 승인은 필요하지 않아요. 협업자에 대해 템플릿이 제거되면 해당 협업자는 템플릿을 보거나 사용할 수 없어요.
구문
REMOVE_TEMPLATE( <collaboration_name>, <template_id>, <remove_for> )
인수
*collaboration_name*
템플릿을 제거할 협업의 이름이에요.
*template_id*
협업에서 제거할 템플릿의 ID예요.
*remove_for*
이 협업에서 더 이상 이 템플릿을 보거나 사용할 수 없어야 하는 분석 실행자(analysis runner)의 별칭(alias) 하나 이상의 배열이에요.
반환 값
문자열 성공 메시지를 반환해요. 템플릿이 협업자에게서 제거되었는지 확인하려면 협업 사양(collaboration specification)을 확인해요.
예시
-- Prevent collaborator_1234 from using the specified template
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.REMOVE_TEMPLATE(
$collaboration_name,
$template_id,
['collaborator_1234']
);
액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저를 호출하여 권한을 부여받은 역할을 사용해야 해요.
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('UPDATE', 'COLLABORATION', '{collaboration name}', '{role name}')
다음 권한 중 하나:
-
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}'), 그리고 역할에 수동으로 부여해야 하는 모든 추가 계정 수준 권한도 필요해요. -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}'), 그리고 역할에 수동으로 부여해야 하는 모든 추가 계정 수준 권한도 필요해요.
템플릿이 사용자 지정 레지스트리(custom registry)에 있거나 사용자 지정 레지스트리의 코드 사양(code spec)을 참조하는 경우, GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE( 'READ', '{registry name}', '{role name}') 권한도 있어야 해요.
VIEW_TEMPLATES
Schema:
COLLABORATION
지정된 협업에서 실행할 수 있거나 제출한 모든 템플릿을 보여줘요.
구문
VIEW_TEMPLATES( <collaboration_name> )
인수
*collaboration_name*
협업의 이름이에요. 템플릿을 나열하려면 먼저 이 협업을 검토하거나 참여해야 해요.
반환 값
이 협업에서 실행할 수 있는 템플릿에 대한 정보를 나열하는 테이블을 반환해요. 등록한 템플릿도 포함돼요. 테이블에는 다음 열이 포함돼요:
-
template_id: 템플릿 ID예요. 이 값을 RUN 명령의template필드 또는template_id매개 변수에 전달해요. -
parameters: 이 템플릿이 허용하는 모든 인수에 대한 설명을 JSON 형식으로 제공해요. 각 매개 변수에 대한 정보에는 이름, 기본값, 템플릿 제공자가 작성한 설명, 필수 여부가 포함돼요. 이 매개 변수들의 값을 RUN 명령에 전달해요. -
shared_by: 이 템플릿을 등록한 협업자예요. -
shared_with: 이 템플릿이 공유된 협업자들이에요.
예시
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_TEMPLATES(
$collaboration_name
);
액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요.
-
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('VIEW TEMPLATES', 'COLLABORATION', '{collaboration name}', '{role name}') -
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('READ', 'COLLABORATION', '{collaboration name}', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')
ENABLE_TEMPLATE_AUTO_APPROVAL
더 이상 사용되지 않는 기능
이 프로시저는 더 이상 사용되지 않아요. 대신 SET_CONFIGURATION에서 TEMPLATE_AUTO_APPROVAL을 true로 설정해서 사용해요.
Schema:
COLLABORATION
다른 협업자가 보낸 모든 템플릿 업데이트 요청이 자동으로 승인되도록 해요. 요청은 여전히 요청 로그에 표시돼요. 이 설정은 자동 승인이 활성화된 후에 보낸 요청에만 적용돼요.
구문
ENABLE_TEMPLATE_AUTO_APPROVAL( <collaboration_name> )
인수
*collaboration_name*
협업의 이름이에요.
반환 값
문자열 성공 메시지를 반환해요.
예시
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.ENABLE_TEMPLATE_AUTO_APPROVAL(
$collaboration_name
);
액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요.
-
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('MANAGE TEMPLATE AUTO APPROVAL', 'COLLABORATION', '{collaboration name}', '{role name}') -
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('UPDATE', 'COLLABORATION', '{collaboration name}', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')
DISABLE_TEMPLATE_AUTO_APPROVAL
더 이상 사용되지 않는 기능
이 프로시저는 더 이상 사용되지 않아요. 대신 SET_CONFIGURATION에서 TEMPLATE_AUTO_APPROVAL을 false로 설정해서 사용해요.
Schema:
COLLABORATION
다른 협업자가 제기한 템플릿 요청에 대한 자동 승인을 비활성화해요. 이후의 모든 요청은 APPROVE_UPDATE_REQUEST를 호출하여 수동으로 승인해야 해요.
구문
DISABLE_TEMPLATE_AUTO_APPROVAL( <collaboration_name> )
인수
*collaboration_name*
협업의 이름이에요.
반환 값
문자열 성공 메시지를 반환해요.
예시
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.DISABLE_TEMPLATE_AUTO_APPROVAL(
$collaboration_name
);
액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요.
-
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('MANAGE TEMPLATE AUTO APPROVAL', 'COLLABORATION', '{collaboration name}', '{role name}') -
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('UPDATE', 'COLLABORATION', '{collaboration name}', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')
데이터 오퍼링 프로시저
REGISTER_DATA_OFFERING
Schema:
REGISTRY
데이터 오퍼링을 등록하여 콜라보레이션 정의에 연결할 수 있게 해요. 등록된 데이터 오퍼링을 제거하려면 REGISTRY.UNREGISTER_DATA_OFFERING를 호출해요. 기존 데이터 오퍼링을 덮어쓸 수는 없지만, 같은 이름과 새 버전으로 새 데이터 오퍼링을 등록할 수 있어요. 데이터 오퍼링의 새 버전을 만들어도 이전 버전은 제거되지 않아요.
모든 데이터 오퍼링은 계정의 모든 레지스트리에 있는 모든 데이터 오퍼링에 대해 고유한 이름-버전 조합을 가져야 해요.
이 테이블을 콜라보레이션의 다른 사용자와 공유하려면 콜라보레이션이 생성되기 전에 콜라보레이션 사양에 테이블을 포함해요.
콜라보레이션에서 공유하는 모든 데이터에 대해 REFERENCE_USAGE 권한과 GRANT OPTION이 있어야 해요. 그렇지 않으면 콜라보레이션에 참여하거나 객체를 등록하려고 할 때 "missing reference usage grant" 오류가 발생해요. 이 문제를 처리하는 방법을 알아보세요.
구문
REGISTER_DATA_OFFERING( ['<registry_name>' ,] <data_offering_spec> )
인자
*registry_name* (선택 사항)
이 데이터 오퍼링을 등록할 사용자 지정 레지스트리의 이름이에요. 지정하지 않으면 기본 계정 레지스트리에 데이터 오퍼링을 등록해요.
*data_offering_spec*
이 데이터 오퍼링을 설명하는 YAML 형식의 데이터 오퍼링 정의예요.
반환 값
콜라보레이션의 *data_offerings.id* 필드에 사용할 데이터 오퍼링 ID예요.
예제
기본 레지스트리에 데이터 오퍼링을 등록해요:
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.REGISTER_DATA_OFFERING(
$$
api_version: 2.0.0
spec_type: data_offering
version: v1
name: customers
datasets:
- alias: customers_1
data_object_fqn: SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS
allowed_analyses: template_only
schema_and_template_policies:
hashed_email:
category: join_custom
status:
category: passthrough
$$
);
사용자 지정 레지스트리에 데이터 오퍼링을 등록해요:
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.REGISTER_DATA_OFFERING(
'my_custom_registry',
$$
api_version: 2.0.0
spec_type: data_offering
version: v1
name: customers
datasets:
- alias: customers_1
data_object_fqn: SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS
allowed_analyses: template_only
schema_and_template_policies:
hashed_email:
category: join_custom
status:
category: passthrough
$$
);
액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저를 호출하여 권한을 부여받은 역할을 사용해야 해요.
기본 레지스트리에 데이터 오퍼링을 등록하려면:
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('REGISTER DATA OFFERING', '{role name}')
사용자 지정 레지스트리에 항목을 등록하려면:
-
직접 만든 사용자 지정 레지스트리에 대한 읽기 및 쓰기 권한이 있어야 해요.
-
다른 사용자가 만든 사용자 지정 레지스트리에 액세스하려면
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('REGISTER', 'REGISTRY', 'MY_REGISTRY', '{role name}')권한이 필요해요.
LINK_DATA_OFFERING
스키마:
COLLABORATION
데이터 제공자가 이 프로시저를 실행하여 지정된 데이터 오퍼링을 지정된 분석 실행자가 사용할 수 있도록 기존 콜라보레이션을 업데이트해요. 이 프로시저는 비동기식이에요. 분석 실행자는 VIEW_DATA_OFFERINGS를 호출하여 데이터 오퍼링을 사용할 수 있는 시점을 확인해야 해요.
이 프로시저는 추가적이에요. 즉, 지정한 협력자가 기존 데이터 오퍼링 공유자 목록에 추가된다는 뜻이에요.
이 테이블을 사용하고 싶지만 다른 협력자에게는 표시하고 싶지 않다면 LINK_DATA_OFFERING 대신 LINK_LOCAL_DATA_OFFERING을 호출해요.
중요
LINK_DATA_OFFERING은 현재 콜라보레이션을 생성했거나 참여한 역할만 호출할 수 있어요.
이 프로시저를 실행할 때 활성 보조 역할을 가질 수 없어요. 보조 역할을 비활성화하려면 다음 SQL 코드를 실행해요:
USE SECONDARY ROLES NONE;
이 프로시저는 원자적이에요. 이 프로시저가 성공하려면 다음 조건이 모두 충족되어야 해요. 링크 시도가 협력자 한 명에 대해 실패하면 모든 협력자에 대해 실패해요.
-
지정된 모든 협력자는 분석 실행자여야 해요.
-
이 데이터 오퍼링이 지정된 분석 실행자 중 누구와도 이미 공유되고 있지 않아야 해요.
-
이 프로시저는 콜라보레이션에 참여한 데이터 제공자 콜라보레이션 역할을 가진 사용자만 실행할 수 있어요.
공유하려는 모든 데이터에 대해 REFERENCE_USAGE 권한과 GRANT OPTION이 있어야 해요. 그렇지 않으면 콜라보레이션에 참여하려고 할 때 "missing reference usage grant" 오류가 발생해요. 이 문제를 처리하는 방법을 알아보세요.
구문
LINK_DATA_OFFERING( <collaboration_name>, <data_offering_id>, <share_with> )
인자
*collaboration_name*
콜라보레이션의 이름이에요.
*data_offering_id*
공유할 데이터셋의 ID로, 등록할 때 생성돼요. 데이터 오퍼링을 링크하려면 VIEW_DATA_OFFERINGS 또는 VIEW_REGISTERED_DATA_OFFERINGS를 호출했을 때 해당 데이터 오퍼링이 표시되어야 해요.
*share_with*
이 데이터셋을 공유할 분석 실행자의 문자열 별칭 배열이에요. 여기에 나열된 협력자는 이 데이터 오퍼링과 연결된 다른 협력자 외에 추가돼요. 여기에 나열된 모든 협력자는 데이터 제공자 역할을 하는 분석 실행자여야 해요. 그렇지 않으면 프로시저가 아무와도 데이터를 공유하지 않고 실패해요.
반환 값
성공 메시지 문자열이에요.
예제
이 예제에서는 협력자 alice가 지정된 콜라보레이션에서 지정된 데이터 오퍼링을 사용할 수 있게 해요.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.LINK_DATA_OFFERING(
$collaboration_name,
$my_data_id,
['alice']
);
액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요.
-
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}')및 역할에 수동으로 부여해야 하는 모든 추가 계정 수준 권한. -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')및 역할에 수동으로 부여해야 하는 모든 추가 계정 수준 권한.
데이터 오퍼링이 사용자 지정 레지스트리에 있는 경우, GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE( 'READ', '{registry name}', '{role name}') 권한도 있어야 해요.
UNLINK_DATA_OFFERING
스키마:
COLLABORATION
데이터 제공자는 이 프로시저를 실행해서 기존 협업에서 지정된 분석 실행자들의 데이터 오퍼링에 대한 액세스를 제거해요. 이 프로시저는 비동기로 동작해요. 분석 실행자들은 데이터 오퍼링이 제거되었는지 확인하려면 VIEW_COLLABORATIONS를 호출해야 해요.
구문
UNLINK_DATA_OFFERING( <collaboration_name>, <data_offering_id>, <remove_for> )
인자
*collaboration_name*
협업의 이름이에요.
*data_offering_id*
등록될 때 생성된, 연결 해제할 데이터셋의 ID예요.
*remove_for*
액세스를 제거할 하나 이상의 분석 실행자에 대한 문자열 별칭 배열이에요. 여기에 나열된 모든 협업자는 현재 이 데이터 오퍼링에 대한 액세스 권한이 있는 분석 실행자여야 해요.
반환 값
문자열 성공 메시지를 반환해요.
예시
-- Remove data offering access for specific analysis runners in this collaboration.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.UNLINK_DATA_OFFERING(
$collaboration_name,
$data_offering_id,
['AnalysisRunner_1', 'AnalysisRunner_2']
);
액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요.
-
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')
LINK_LOCAL_DATA_OFFERING
스키마:
COLLABORATION
Snowflake Standard Edition을 사용하는 경우, 이 프로시저를 사용해서 자신의 데이터를 협업에 연결할 수 있어요. 먼저 REGISTER_DATA_OFFERING을 호출해서 데이터 오퍼링을 등록해야 해요. 이 오퍼링은 다른 협업자에게는 보이지 않고, 템플릿 정책도 적용되지 않아요. 여기에 제출된 테이블은 템플릿의 my_table 배열에 전파돼요.
자세한 내용은 Run an analysis with your own data when you use Standard Edition를 참조하세요.
구문
LINK_LOCAL_DATA_OFFERING( <collaboration_name>, <data_offering_id> )
인자
*collaboration_name*
협업의 이름이에요.
*data_offering_id*
등록할 때 생성된 데이터셋의 ID예요. VIEW_REGISTERED_DATA_OFFERINGS 및 VIEW_DATA_OFFERINGS에서도 확인할 수 있어요(본인에게만 보여요).
반환 값
문자열 성공 메시지를 반환해요.
예시
이 예시는 등록된 데이터 오퍼링을 다른 협업자에게 노출하지 않고 현재 계정에서만 사용할 수 있도록 연결해요.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.LINK_LOCAL_DATA_OFFERING(
$collaboration_name,
$my_private_data_offering_id
);
액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요.
-
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('LINK LOCAL DATA OFFERINGS', 'COLLABORATION', '{collaboration name}', '{role name}') -
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('UPDATE', 'COLLABORATION', '{collaboration name}', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')
UNLINK_LOCAL_DATA_OFFERING
스키마:
COLLABORATION
이 프로시저를 사용해서 협업에서 자신의 로컬 데이터를 연결 해제할 수 있어요. 연결을 해제하면 이 협업 내 분석에서 더 이상 해당 데이터 오퍼링을 사용할 수 없게 돼요. 로컬 데이터 오퍼링에 대한 자세한 내용은 Run an analysis with your own data when you use Standard Edition를 참조하세요.
구문
UNLINK_LOCAL_DATA_OFFERING( <collaboration_name>, <data_offering_id> )
인자
*collaboration_name*
협업의 이름이에요.
*data_offering_id*
등록할 때 생성된, 연결 해제할 데이터셋의 ID예요. VIEW_REGISTERED_DATA_OFFERINGS 및 VIEW_DATA_OFFERINGS에서도 확인할 수 있어요(본인에게만 보여요).
반환 값
문자열 성공 메시지를 반환해요.
예시
-- Unlink a local data offering from a collaboration.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.UNLINK_LOCAL_DATA_OFFERING(
$collaboration_name,
$my_private_data_offering_id
);
액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요.
-
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('UNLINK LOCAL DATA OFFERINGS', 'COLLABORATION', '{collaboration name}', '{role name}') -
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('UPDATE', 'COLLABORATION', '{collaboration name}', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')
VIEW_REGISTERED_DATA_OFFERINGS
스키마:
REGISTRY
사용자가 등록한 모든 데이터 오퍼링을 나열해요. 다른 사람이 연결한 협업의 데이터 오퍼링을 보려면 COLLABORATION.VIEW_DATA_OFFERINGS를 호출하세요.
구문
VIEW_REGISTERED_DATA_OFFERINGS()
VIEW_REGISTERED_DATA_OFFERINGS( [ '<registry_name>' ] )
인자
*registry_name* (Optional)
읽기 범위를 지정하는 레지스트리 이름의 ARRAY예요. 'default'(대소문자 구분 없음)를 사용하면 사용자 지정 레지스트리와 함께 기본 제공 레지스트리도 포함돼요. 배열에 있는 액세스할 수 없거나 존재하지 않는 레지스트리는 자동으로 건너뛰어져요. 지정하지 않으면 액세스 권한이 있는 모든 레지스트리의 데이터 오퍼링을 나열해요.
예시: ['default', 'my_registry', 'other_reg']
반환 값
이 계정에서 등록한 모든 데이터 오퍼링의 세부 정보를 나열하는 테이블이에요. 테이블에는 다음 컬럼이 포함돼요.
-
DATA_OFFERING_ID: 데이터 오퍼링의 ID예요. -
NAME: 데이터 오퍼링 이름이에요. -
VERSION: 데이터 오퍼링 버전이에요. -
DATA_OFFERING_SPEC: 데이터 오퍼링의 전체 YAML 사양이에요. -
REGISTRY: 데이터 오퍼링이 등록된 레지스트리예요. -
CREATED_ON: 데이터 오퍼링이 생성된 타임스탬프예요.
예시
모든 레지스트리의 데이터 오퍼링을 나열해요:
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.VIEW_REGISTERED_DATA_OFFERINGS();
기본 레지스트리에서만 데이터 오퍼링을 나열하려면:
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.VIEW_REGISTERED_DATA_OFFERINGS(['default']);
특정 레지스트리에서 데이터 오퍼링을 나열하려면:
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.VIEW_REGISTERED_DATA_OFFERINGS(
['default', 'my_custom_registry']
);
액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요.
기본 레지스트리에서 항목을 보려면:
-
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('VIEW REGISTERED DATA OFFERINGS', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')
사용자 지정 레지스트리에서 항목을 보려면:
-
직접 만든 사용자 지정 레지스트리에는 읽기 및 쓰기 권한이 있어요.
-
다른 사용자가 만든 사용자 지정 레지스트리에 액세스하려면
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('READ', 'REGISTRY', 'MY_REGISTRY', '{role name}')권한이 필요해요.
UNREGISTER_DATA_OFFERING
스키마:
REGISTRY
이전에 등록한 데이터 오퍼링을 레지스트리에서 제거하여 등록을 취소해요. 등록한 데이터 오퍼링의 ID를 찾으려면 REGISTRY.VIEW_REGISTERED_DATA_OFFERINGS를 호출하세요.
현재 콜라보레이션에서 사용 중인 데이터 오퍼링은 등록을 취소할 수 없어요. 데이터 오퍼링이 하나 이상의 콜라보레이션에 연결되어 있으면 프로시저가 실패하고 해당 콜라보레이션을 나열하는 오류를 반환해요. 등록을 취소하기 전에 각 콜라보레이션에서 데이터 오퍼링을 제거하세요.
구문
UNREGISTER_DATA_OFFERING( '<data_offering_id>' )
인수
*data_offering_id*
등록을 취소할 데이터 오퍼링의 ID로, REGISTRY.REGISTER_DATA_OFFERING 또는 REGISTRY.VIEW_REGISTERED_DATA_OFFERINGS에서 반환된 값이에요. 데이터 오퍼링 ID는 {name}_{version} 형식이에요.
반환 값
데이터 오퍼링이 등록 취소되었음을 확인하는 상태 메시지가 포함된 테이블이에요.
예제
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.UNREGISTER_DATA_OFFERING('customers_v1');
액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저를 호출하여 권한을 부여받은 역할을 사용해야 해요.
기본 레지스트리에서 데이터 오퍼링의 등록을 취소하려면:
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('REGISTER DATA OFFERING', '{role name}')
사용자 지정 레지스트리에서 항목의 등록을 취소하려면:
-
직접 만든 사용자 지정 레지스트리에는 읽기 및 쓰기 권한이 있어요.
-
다른 사용자가 만든 사용자 지정 레지스트리에 액세스하려면
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('REGISTER', 'REGISTRY', 'MY_REGISTRY', '{role name}')권한이 필요해요.
VIEW_DATA_OFFERINGS
스키마:
COLLABORATION
지정된 콜라보레이션에 있는 모든 데이터 오퍼링을 나열해요. 분석 실행자로 액세스할 수 있거나 직접 연결한 데이터 오퍼링을 보여줘요. 직접 등록한 데이터 오퍼링만 보려면 REGISTRY.VIEW_REGISTERED_DATA_OFFERINGS를 호출하세요.
콜라보레이터 X가 콜라보레이션에 참여한 후에만 X의 데이터 오퍼링을 볼 수 있어요.
구문
VIEW_DATA_OFFERINGS( <collaboration_name> )
인수
*collaboration_name*
탐색할 콜라보레이션의 이름이에요.
반환 값
지정된 콜라보레이션에 있는 모든 데이터 오퍼링에 대한 정보예요. 테이블에는 다음 열이 포함돼요:
-
template_view_name: 템플릿을 사용하여 쿼리할 때 RUN을 호출하여 오퍼링을 참조하는 데 사용되는 정규화된 뷰 이름이에요. RUN 사양의source_tables필드에 이 이름을 전달하세요. -
template_join_columns: 템플릿 기반 쿼리에서 조인에 사용할 수 있는 이 테이블의 열 이름이에요. -
analysis_allowed_columns: 템플릿 기반 쿼리에서 프로젝션할 수 있는 이 테이블의 열 이름이에요. -
activation_allowed_columns: 활성화할 수 있는 이 테이블의 열 이름이에요. -
freeform_sql_view_name: 데이터셋이 free-form SQL 쿼리를 지원하는 경우, free-form SQL 쿼리에 사용되는 정규화된 뷰 이름이에요. 데이터셋이 free-form SQL 쿼리를 제공하지 않으면 이 셀은 비어 있어요. -
freeform_sql_column_policies: 이 콜라보레이션에 있는 모든 free-form 열 정책의 JSON 표현이에요. 정책 유형별로 키가 지정돼요. -
shared_by: 이 데이터 오퍼링을 연결한 콜라보레이터예요. -
shared_with: 분석에서 데이터를 사용할 수 있는 대상이에요. 이 값이LOCAL이면, 데이터를 호스팅하는 당사자를 제외한 어떤 콜라보레이터와도 공유되지 않는 로컬 데이터셋이에요. -
data_offering_id: 이 데이터 오퍼링의 고유 ID로, 등록 시 생성된 값이에요.
예제
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_DATA_OFFERINGS(
$collaboration_name
);
액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요:
-
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('VIEW DATA OFFERINGS', 'COLLABORATION', '{collaboration name}', '{role name}') -
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('READ', 'COLLABORATION', '{collaboration name}', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')
코드 스펙 프로시저
이 프로시저들은 코드 스펙을 관리해요. 코드 스펙은 콜라보레이션 템플릿에서 호출할 수 있는 Python 함수, 저장 프로시저 또는 ML Jobs를 정의해요. 자세한 내용은 Code specs를 참조하세요.
REGISTER_CODE_SPEC
스키마:
REGISTRY
코드 스펙을 등록합니다. 이렇게 하면 코드가 clean rooms 환경의 REGISTRY.CODE_SPECS 테이블에 저장됩니다. 코드 스펙이 등록된 후에는 템플릿에서 사용할 수 있습니다.
등록되는 모든 코드 스펙은 계정의 모든 레지스트리에서 고유한 이름-버전 조합을 가져야 합니다.
구문
REGISTER_CODE_SPEC( ['<registry_name>' ,] <code_spec> )
인자
*registry_name* (Optional)
이 코드 스펙을 등록할 custom registry의 이름입니다. 지정하지 않으면 기본 계정 레지스트리에 코드 스펙을 등록합니다.
*code_spec*
YAML 형식의 코드 사양을 문자열로 표현한 것입니다.
반환 값
생성된 코드 스펙 ID입니다.
예시
기본 레지스트리에 코드 스펙을 등록합니다:
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.REGISTER_CODE_SPEC(
$$
api_version: 2.0.0
spec_type: code_spec
name: custom_udf
version: v1
description: Custom UDF for data normalization
functions:
- name: normalize_value
type: UDF
language: PYTHON
runtime_version: "3.10"
handler: normalize
arguments:
- name: value
type: FLOAT
- name: min_val
type: FLOAT
- name: max_val
type: FLOAT
returns: FLOAT
code_body: |
def normalize(value, min_val, max_val):
if max_val == min_val:
return 0.0
return (value - min_val) / (max_val - min_val)
$$
);
사용자 지정 레지스트리에 코드 스펙을 등록합니다:
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.REGISTER_CODE_SPEC(
'my_custom_registry',
$$
api_version: 2.0.0
spec_type: code_spec
name: custom_udf
version: v1
description: Custom UDF for data normalization
functions:
- name: normalize_value
type: UDF
language: PYTHON
runtime_version: "3.10"
handler: normalize
arguments:
- name: value
type: FLOAT
- name: min_val
type: FLOAT
- name: max_val
type: FLOAT
returns: FLOAT
code_body: |
def normalize(value, min_val, max_val):
if max_val == min_val:
return 0.0
return (value - min_val) / (max_val - min_val)
$$
);
액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저를 호출하여 권한을 부여받은 역할을 사용해야 합니다.
기본 레지스트리에 객체를 등록하려면:
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('REGISTER CODE SPEC', '{role name}')
사용자 지정 레지스트리에 항목을 등록하려면:
-
직접 만든 사용자 지정 레지스트리에는 읽기 및 쓰기 권한이 있습니다.
-
다른 사용자가 만든 사용자 지정 레지스트리에 액세스하려면
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('REGISTER', 'REGISTRY', 'MY_REGISTRY', '{role name}')를 호출해야 합니다.
VIEW_REGISTERED_CODE_SPECS
스키마:
REGISTRY
이 역할이 로컬 계정 레지스트리에 등록한 모든 코드 스펙을 나열합니다.
구문
VIEW_REGISTERED_CODE_SPECS()
VIEW_REGISTERED_CODE_SPECS( [ '<registry_name>' ] )
인자
*registry_name* (Optional)
읽기 범위를 지정할 레지스트리 이름의 ARRAY입니다. 'default'(대소문자 구분 안 함)를 사용하면 사용자 지정 레지스트리와 함께 기본 제공 레지스트리를 포함합니다. 배열에 포함된 액세스할 수 없거나 존재하지 않는 레지스트리는 자동으로 건너뜁니다. 지정하지 않으면 액세스 권한이 있는 모든 레지스트리의 코드 스펙을 나열합니다.
예시: ['default', 'my_registry', 'other_reg']
반환 값
이 계정에 등록한 모든 코드 스펙의 세부 정보를 나열하는 테이블입니다. 이 테이블에는 다음 열이 포함됩니다:
-
CODE_SPEC_ID: 코드 스펙의 ID입니다. -
NAME: 코드 스펙 이름입니다. -
VERSION: 코드 스펙 버전입니다. -
CODE_SPEC: 전체 YAML 코드 사양입니다. -
REGISTRY: 코드 스펙이 등록된 레지스트리입니다. -
CREATED_ON: 코드 스펙이 등록된 타임스탬프입니다.
예시
모든 레지스트리에서 코드 스펙을 나열합니다:
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.VIEW_REGISTERED_CODE_SPECS();
기본 레지스트리에서만 코드 스펙을 나열합니다:
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.VIEW_REGISTERED_CODE_SPECS(['default']);
특정 레지스트리에서 코드 스펙을 나열합니다:
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.VIEW_REGISTERED_CODE_SPECS(
['default', 'my_custom_registry']
);
액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 합니다.
기본 레지스트리의 항목을 보려면:
-
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('VIEW REGISTERED CODE SPECS', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')
사용자 지정 레지스트리의 항목을 보려면:
-
직접 만든 사용자 지정 레지스트리에는 읽기 및 쓰기 권한이 있습니다.
-
다른 사용자가 만든 사용자 지정 레지스트리에 액세스하려면
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('READ', 'REGISTRY', 'MY_REGISTRY', '{role name}')를 호출해야 합니다.
VIEW_CODE_SPECS
스키마:
COLLABORATION
지정된 협업에서 사용자가 만들었거나 실행할 수 있는 템플릿이 참조하는 모든 코드 스펙을 반환합니다.
구문
VIEW_CODE_SPECS( <collaboration_name> )
인자
*collaboration_name*
협업의 이름입니다.
반환 값
지정된 협업에서 사용할 수 있는 코드 스펙을 나열하는 테이블입니다. 이 테이블에는 다음 열이 포함됩니다:
-
code_spec_id: 이 코드 스펙의 ID입니다. -
code_spec: 전체 YAML 코드 사양입니다. -
shared_by: 코드 스펙을 공유한 협업자 별칭입니다.
예시
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_CODE_SPECS(
$collaboration_id
);
액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 합니다:
-
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('VIEW CODE SPECS', 'COLLABORATION', '{collaboration name}', '{role name}') -
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('READ', 'COLLABORATION', '{collaboration name}', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}') -
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')
업데이트 요청 프로시저
이 프로시저들은 승인이 필요한 협업 업데이트 요청을 관리하는 데 사용됩니다. 예를 들어 link template flow. 같은 경우입니다.
VIEW_UPDATE_REQUESTS
스키마:
COLLABORATION
지정된 협업에서 직접 만들었거나 승인 또는 거부할 수 있는 모든 업데이트 요청을 확인합니다. 여기에는 데이터 제공 항목, 템플릿, 코드 패키지 추가와 같은 모든 협업 변경 사항이 포함됩니다. 이 프로시저는 업데이트 상태를 보여줍니다. 업데이트 요청이 요청 목록에 나타나는 데 몇 초 정도 걸릴 수 있으므로, 방금 보낸 요청이 바로 보이지 않을 수도 있습니다.
구문
VIEW_UPDATE_REQUESTS( <collaboration_name> )
인자
*collaboration_name*
협업의 이름입니다.
반환 값
이 협업에서 전송된 업데이트 요청 테이블입니다. 정보에는 다음이 포함됩니다:
id: 요청의 ID예요. 이 ID를 사용해서 요청을 승인하거나 거부할 수 있어요.
type: 요청의 유형이에요. 다음 값이 지원돼요:
-
Add Template
-
Link Data Offering
-
Unlink Data Offering
-
Remove Template
-
Edit Collaboration
status: 요청의 현재 상태예요. 다음 상태가 보고될 수 있어요:
-
REQUESTED: 요청이 제출되었어요.
-
PENDING_MY_APPROVAL: 요청이 여러분의 승인 또는 거부를 기다리고 있어요.
-
PENDING_PARTNER_APPROVAL: 여러분이 요청을 승인했지만, 아직 한 명 이상의 다른 협업자가 승인해야 해요.
-
REJECTED: 협업에 참여한 누군가가 이 요청을 거부했어요.
-
APPROVED: 필요한 모든 승인자가 요청을 승인했어요.
-
COMPLETED: 업데이트 작업이 완료되었고 변경 사항이 협업에 적용되었어요. 코드 사양을 포함하는 템플릿의 경우, 코드 사양을 호출할 준비가 되는 시점을 확인하려면 여전히 check the upgrade state를 확인해야 해요.
-
FAILED: 업데이트 작업이 실패했어요. 실패 세부 정보는
DETAILS열을 참조하세요. Edit Collaboration 요청의 경우, 요청된 작업 중 일부만 적용될 수 있을 때도 이 상태가 사용돼요.details열은 각 개별 작업의 상태를 보고해요.
approval_log: 요청에 대한 모든 승인 및 거부 기록이에요. 요청이 거부된 경우, 거부한 쪽에서 제공한 사유도 여기에 포함돼요.
details: 요청 유형에 특화된 세부 정보예요. 예를 들어 ‘Add Template’ 요청의 경우 템플릿 이름과 공유 대상을 포함해요. ‘Edit Collaboration’ 요청의 경우, 이 열에는 편집에서 각 개별 작업의 결과를 보고하는 작업별 페이로드가 포함돼요.
spec: 업데이트 중인 리소스의 세부 정보예요. 예를 들어 ‘Add Template’ 요청의 템플릿 사양 또는 ‘Edit Collaboration’ 요청의 협업 사양이 여기에 해당해요.
updated_on: 이 요청에 대해 마지막 작업(예: 승인 또는 거부)이 수행된 타임스탬프예요.
Details 열 내용
details 열에는 요청 유형에 따라 필드가 달라지는 JSON 페이로드가 포함돼요. 다음 표는 각 유형에 포함된 필드를 보여줘요. 별도로 명시되지 않는 한, failure_reason은 상태가 FAILED인 경우에만 포함돼요.
| 요청 유형 | details 열의 필드 |
|---|---|
| Add Template | template_id, share_with, code_specs (템플릿에 코드 사양이 있는 경우에만), requested_by, failure_reason |
| Remove Template | template_id, remove_for, requested_by, failure_reason |
| Link Data Offering | data_offering_id, share_with, requested_by, failure_reason |
| Unlink Data Offering | data_offering_id, remove_for, requested_by, failure_reason |
| Edit Collaboration | operations (작업별로 하나의 항목이 있으며, 각 항목에는 operation_type, 작업별 필드, 작업별 상태, 그리고 실패 시 failure_reason이 포함돼요), requested_by, failure_reason |
#### 예시
```
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_UPDATE_REQUESTS(
$collaboration_name
);
```
#### 액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요.
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('VIEW UPDATE REQUESTS', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('UPDATE', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('READ', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')`
---
### APPROVE_UPDATE_REQUEST
**스키마:**
COLLABORATION
협업 업데이트 요청을 승인해요. VIEW_UPDATE_REQUESTS를 호출하여 보류 중인 요청 목록을 확인하세요. 요청을 승인한 후에는 나중에 거부할 수 없어요.
변경 사항이 실제로 협업에 적용되기 전에 영향을 받는 모든 협업자가 요청을 승인해야 해요.
[See the link template flow.](https://docs.snowflake.com/user-guide/cleanrooms/resources-templates#label-dcr-collaboration-add-template-post-creation)
#### 구문
```
APPROVE_UPDATE_REQUEST( <collaboration_name>, <request_id> )
```
#### 인자
**`*collaboration_name*`**
협업의 이름이에요.
**`*request_id*`**
요청의 ID예요.
#### 반환 값
성공 메시지 문자열을 반환해요.
#### 예시
```
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.APPROVE_UPDATE_REQUEST(
$collaboration_name,
$request_id
);
```
#### 액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요.
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('MANAGE UPDATE REQUEST', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('UPDATE', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')`
---
### REJECT_UPDATE_REQUEST
**스키마:**
COLLABORATION
협업 업데이트 요청을 거부해요. 한 번의 거부로 변경 사항이 협업에 적용되는 것을 막을 수 있어요. 요청을 거부한 후에는 승인할 수 없어요.
#### 구문
```
REJECT_UPDATE_REQUEST( <collaboration_name>, <request_id>, <reason> )
```
#### 인자
**`*collaboration_name*`**
협업의 이름이에요.
**`*request_id*`**
요청의 ID예요.
**`*reason*`**
요청이 거부된 이유에 대한 사람이 읽을 수 있는 설명이에요. 이 인자는 필수지만, 빈 문자열을 제출할 수 있어요.
#### 반환 값
---
---
문자열 성공 메시지입니다.
#### 예시
```
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.REJECT_UPDATE_REQUEST(
$collaboration_name,
'request_1324f934457',
'Needs more cowbell'
);
```
#### 액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요:
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('MANAGE UPDATE REQUEST', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('UPDATE', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')`
## 협업 관리 프로시저
### INITIALIZE
**스키마:**
COLLABORATION
소유자가 이 프로시저를 호출하여 협업을 생성하고, 선택적으로 협업에 참여할 수 있어요. `auto_join_warehouse`가 FALSE인 경우, 다른 협업자들이 협업을 사용할 수 있도록 JOIN을 별도로 호출해야 해요. INITIALIZE와 JOIN을 호출할 때는 동일한 역할을 사용해야 해요.
기존 협업과 동일한 `name` 값을 가진 협업 정의를 제출하면 오류가 발생해요.
협업을 생성하고 참여하는 데 시간이 걸리므로, 협업이 언제 참여되었는지 확인하려면 GET_STATUS를 호출해야 해요.
#### 구문
```
INITIALIZE( <collaboration_spec> [, '<auto_join_warehouse>'] )
```
#### 인자
**`*collaboration_spec*`**
YAML 형식의 [협업 정의](https://docs.snowflake.com/user-guide/cleanrooms/spec-collaboration#label-dcr-collaboration-spec-yaml) 문자열이에요.
**`*auto_join_warehouse*` *(선택 사항)***
유효한 Snowflake 식별자로 웨어하우스 이름을 지정하는 문자열이에요. 이 값을 지정하면 해당 웨어하우스를 사용하여 협업이 생성되고 참여돼요. 지정하지 않으면 현재 웨어하우스가 협업 생성에 사용되며, 협업에 참여하려면 JOIN을 호출해야 해요. XS 웨어하우스를 권장해요.
#### 반환 값
다음 열을 포함하는 테이블이에요:
- `collaboration_name`: 협업의 이름이에요. 협업을 지정해야 하는 모든 프로시저에서 이 값을 사용해요.
- `message`: 초기화 요청에 대한 정보예요.
- `auto_join_task`: `auto_join_warehouse`가 지정된 경우, 자동 조인 작업이 생성되었는지 여부를 나타내요.
#### 예시
다음 예시는 Alice가 소유자이고 Bob이 제공한 데이터를 사용하여 분석을 실행할 수 있는 협업을 생성해요.
```
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.INITIALIZE(
$$
api_version: 2.0.0
spec_type: collaboration
name: basic_collaboration
owner: alice
collaborator_identifier_aliases:
alice: corp_id.account_id
bob: corp2_id.account2_id
analysis_runners:
alice:
data_providers:
bob:
data_offerings:
- id: bob_data_v1
templates:
- id: alice_test_template_2026_01_12_V1
$$,
'APP_WH'
);
```
#### 액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저를 호출하여 권한을 부여받은 역할을 사용해야 해요:
-
`GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}')`
`auto-join-warehouse` 매개변수를 제공하고 SAMOOHA_APP_ROLE이 아닌 역할을 사용하는 경우, 해당 역할에 EXECUTE TASK 계정 수준 권한도 부여되어야 해요.
추가로 필요한 역할 권한은 [GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE](#label-dcr-grant-privilege-on-account-to-role)을 참조하세요.
---
### EDIT
>
[미리 보기 기능](https://docs.snowflake.com/release-notes/preview-features) — 공개
모든 계정에서 사용할 수 있어요.
**스키마:**
COLLABORATION
소유자가 기존 협업을 제자리에서 편집하기 위해 호출해요. 소유자는 전체 대상 [협업 사양](https://docs.snowflake.com/user-guide/cleanrooms/spec-collaboration#label-dcr-collaboration-spec-yaml)을 제출하며, 프로시저는 이를 현재 사양과 비교하여 차이점을 단일 대량 업데이트 요청으로 적용해요. 이 프로시저는 협업 소유자만 호출할 수 있어요.
변경 사항은 즉시 적용되지 않아요. EDIT는 하나의 업데이트 요청을 생성하며, 변경 사항이 적용되기 전에 영향을 받는 모든 협업자의 승인을 받아야 해요. [VIEW_UPDATE_REQUESTS](#label-dcr-collaboration-view-update-requests-reference)를 호출하여 요청을 추적할 수 있으며, 해당 요청은 `Edit Collaboration` 유형으로 표시돼요.
#### 지원되는 변경 사항
EDIT는 다음 변경 사항을 지원해요:
- 분석 실행자 또는 데이터 제공자로 새 협업자를 추가해요.
- 기존 협업자를 제거해요. 제거는 부분적(특정 구성 요소에서)이거나 전체(협업 전체에서)일 수 있어요.
- 협업자의 역할을 변경해요 (예: 데이터 제공자를 분석 실행자로 변경하거나 그 반대로 변경).
- 이미 등록된 템플릿을 분석 실행자와 공유하거나 공유된 템플릿을 제거해요.
- 데이터 제공자가 이미 연결한 데이터 오퍼링을 분석 실행자와 공유하거나 공유된 데이터 오퍼링의 연결을 해제해요.
다음 필드는 EDIT로 변경할 수 없어요:
- `name`
- `description`
- `owner`
- `activation_destinations`
`collaborator_identifier_aliases`에서 기존 별칭의 이름을 바꾸거나 다른 계정에 다시 매핑할 수 없어요. 그러나 `collaborator_identifier_aliases`는 협업자가 추가되거나 제거될 때 자동으로 업데이트돼요.
`api_version` 및 `spec_type` 필드는 불변이며 기존 협업에서 변경할 수 없어요.
참고
EDIT는 기존 생성 후 흐름과 함께 작동해요. 여전히 LINK_DATA_OFFERING으로 [데이터 오퍼링 연결](#label-dcr-collaboration-link-data-offering-reference), ADD_TEMPLATE_REQUEST로 [템플릿 추가](#label-dcr-collaboration-add-template-request-reference), REMOVE_TEMPLATE로 [템플릿 제거](#label-dcr-collaboration-remove-template-reference), UNLINK_DATA_OFFERING으로 [데이터 오퍼링 연결 해제](#label-dcr-collaboration-unlink-data-offering-reference)를 할 수 있어요.
#### 구문
```
EDIT( <collaboration_name>, <target_collaboration_spec> )
```
#### 인자
**`*collaboration_name*`**
편집할 협업의 이름이에요.
**`*target_collaboration_spec*`**
---
전체 목표 [collaboration definition](https://docs.snowflake.com/user-guide/cleanrooms/spec-collaboration#label-dcr-collaboration-spec-yaml)을 YAML 형식의 문자열로 제공해요. 이것은 콜라보레이션의 목표 상태이며, 부분적인 diff가 아니에요. 프로시저는 사양을 검증하고, 현재 사양과 비교한 다음, 적용할 변경 사항 집합을 도출해요. 제출된 사양이 현재 사양과 동일하거나, 유효하지 않은 콜라보레이션 토폴로지를 생성하게 되는 경우, 프로시저는 오류를 반환해요.
#### Returns
업데이트 요청이 제출되었음을 확인하는 문자열 메시지예요. [VIEW_UPDATE_REQUESTS](#label-dcr-collaboration-view-update-requests-reference)를 사용하여 요청 상태를 추적하고 `details` 열에서 작업별 페이로드를 확인할 수 있어요.
#### Usage notes
- 승인자는 전체 요청만 승인하거나 거부할 수 있어요. 개별 변경 사항에 대한 부분 승인은 지원되지 않아요.
- 소유자와 다른 클라우드 리전에 있는 콜라보레이터를 추가할 수 있는 경우는 콜라보레이션이 원래 크로스 클라우드 콜라보레이션으로 생성된 경우뿐이에요. 콜라보레이션이 처음부터 [Cross-Cloud Auto-Fulfillment](https://docs.snowflake.com/user-guide/cleanrooms/laf#label-dcr-collab-enabling-laf)로 설정되지 않았다면, EDIT로 추가되는 모든 콜라보레이터는 소유자와 같은 리전에 있어야 해요. 반대로, 마지막 크로스 리전 콜라보레이터를 제거한다고 해서 콜라보레이션이 [external tables](https://docs.snowflake.com/user-guide/cleanrooms/laf#label-dcr-collab-laf-limitations)을 지원하기 시작하는 것은 아니에요.
- 편집으로 새 콜라보레이터가 추가되면, 콜라보레이션은 해당 콜라보레이터를 `INVITED`, `REVIEWING`, `JOINING`, `JOINED` 상태로 추적해요. 기존 콜라보레이터가 승인하면 업데이트 요청은 바로 `APPROVED` 상태로 전환되며, 새 콜라보레이터의 검토 및 참여 작업은 요청 상태를 변경하지 않아요. 영향을 받는 콜라보레이터는 [VIEW_DATA_OFFERINGS](#label-dcr-collaboration-view-data-offerings-reference), [VIEW_TEMPLATES](#label-dcr-collaboration-view-templates-reference), [VIEW_CODE_SPECS](#label-dcr-collaboration-view-code-specs-reference)를 호출하여 새로 공유된 리소스를 검토할 수 있어요.
#### Example
다음 예제는 기존 콜라보레이션에 새 콜라보레이터 `carol`을 분석 실행자로 추가해요. 이 분석 실행자는 Bob의 데이터 오퍼링과 기존 템플릿을 사용할 수 있어요. 소유자는 새 분석 실행자와 별칭을 포함한 완전한 업데이트 사양을 제출해요.
```
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.EDIT(
'basic_collaboration',
$$
api_version: 2.0.0
spec_type: collaboration
name: basic_collaboration
owner: alice
collaborator_identifier_aliases:
alice: corp_id.account_id
bob: corp2_id.account2_id
carol: corp3_id.account3_id
analysis_runners:
alice:
data_providers:
bob:
data_offerings:
- id: bob_data_v1
templates:
- id: alice_test_template_2026_01_12_V1
carol:
data_providers:
bob:
data_offerings:
- id: bob_data_v1
templates:
- id: alice_test_template_2026_01_12_V1
$$
);
```
#### Access requirements
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저를 호출하여 권한을 부여받은 역할을 사용해야 해요:
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('UPDATE', 'COLLABORATION', '{collaboration name}', '{role name}')`
---
### TEARDOWN
**스키마:**
COLLABORATION
소유자가 모든 당사자에 대해 콜라보레이션을 삭제하기 위해 호출해요.
**이 프로시저는 두 번 호출해야 해요.** 먼저 한 번 호출한 다음, `LOCAL_DROP_PENDING`이 반환될 때까지 GET_STATUS를 호출하고, 그런 다음 이 프로시저를 다시 호출하세요.
콜라보레이션을 해체해도 다른 콜라보레이터 계정의 정리가 완료되지는 않아요. 다른 모든 콜라보레이터는 자신의 상태가 `LOCAL_DROP_PENDING`으로 변경되는 것을 확인하고, [LEAVE](#label-dcr-collaboration-leave-reference)를 호출하여 자신의 계정에서 clean room 애플리케이션과 콜라보레이션 메타데이터를 제거해야 해요.
참고
이 프로시저는 사용자가 생성하고 참여한 콜라보레이션에서만 호출할 수 있어요. 콜라보레이션을 생성했지만 아직 참여하지 않았다면, 해체하기 전에 먼저 참여해야 해요.
#### Syntax
```
TEARDOWN( <collaboration_name> )
```
#### Arguments
**`*collaboration_name*`**
삭제할 콜라보레이션의 이름이에요.
#### Returns
성공 메시지를 나타내는 문자열이에요.
#### Example
```
-- Start the process.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.TEARDOWN($collaboration_name);
-- Call until it returns LOCAL_DROP_PENDING.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.GET_STATUS($collaboration_name);
-- Final call.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.TEARDOWN($collaboration_name);
```
#### Access requirements
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요:
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')`
추가로 필요한 역할 권한에 대해서는 [GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE](#label-dcr-grant-privilege-on-account-to-role)를 참조하세요.
---
### GET_STATUS
**스키마:**
COLLABORATION
주어진 콜라보레이션의 모든 콜라보레이터에 대한 정보를 보여줘요.
콜라보레이션 생성이나 참여와 같은 비동기 작업을 실행할 때는, 분석 실행과 같은 추가 작업을 해당 콜라보레이션에서 수행하기 전에 마지막 작업이 완료되었는지 확인하기 위해 상태를 확인해야 해요. 이 프로시저는 콜라보레이션에 초대된 모든 콜라보레이터가 호출할 수 있어요.
콜라보레이션 소유자는 다음과 같은 상태 경로를 볼 수 있어요:
- CREATING » CREATED » INSTALLING » IN_REVIEW (or INSTALLATION_FAILED) » JOINING » JOINED (or JOIN_FAILED)
소유자가 아닌 경우에는 다음과 같은 상태 경로가 보여요:
- INSTALLING » IN_REVIEW (or INSTALLATION_FAILED) » JOINING » JOINED (or JOIN_FAILED)
콜라보레이션에 서로 다른 리전의 계정이 포함된 경우, 콜라보레이션 목록이 해당 리전으로 복제되는 동안 `REPLICATING` 상태도 볼 수 있어요. 자세한 내용은 [Cross-region replication delays](https://docs.snowflake.com/user-guide/cleanrooms/v2/troubleshooting#label-dcr-collaboration-replication-delays)를 참조하세요.
#### Syntax
```
GET_STATUS( <collaboration_name> )
```
#### Arguments
**`*collaboration_name*`**
상태를 확인할 콜라보레이션의 이름이에요. COLLABORATION.VIEW_COLLABORATIONS를 호출하면 콜라보레이션 목록을 볼 수 있어요. GET_STATUS를 호출하려면 먼저 콜라보레이션에 초대되었거나 참여해야 해요.
---
---
#### Returns
지정된 콜라보레이션의 모든 협업자에 대한 최신 조인 시도 세부 정보를 보여주는 테이블이에요. 이 테이블에는 다음 열이 포함돼요.
-
`updated_on`: 시스템이 상태를 보고한 타임스탬프예요.
-
`collaborator_account`: 이 협업자의 데이터 공유 계정 ID예요.
-
`collaborator_name`: 콜라보레이션 사양에 선언된 협업자의 별칭이에요.
-
`roles`: 이 협업자의 실제 및 잠재적 역할이에요. 값에는 `owner`, `data_provider`, `analysis_runner`가 포함돼요.
-
`status`: 업데이트 시점의 상태예요. 다음 값이 지원되며, 지정된 콜라보레이션에서 명명된 협업자의 상태를 보여줘요.
- `CREATING`: 콜라보레이션 생성이 시작됐어요.
- `CREATE_FAILED`: 콜라보레이션 생성에 실패했어요.
- `CREATE_TIMED_OUT`: 콜라보레이션 생성 시간이 초과됐어요.
- `INSTALLING`: 애플리케이션 패키지를 설치하고 검토를 위해 콜라보레이션 세부 정보를 준비하고 있어요.
- `REPLICATING`: 콜라보레이션 리스팅이 아직 사용자 지역으로 복제 중이라, 호출한 REVIEW 또는 JOIN 작업이 아직 완료되지 못했어요. 복제가 완료되었는지 확인하려면 GET_STATUS를 다시 호출하세요. 자세한 내용은 [Cross-region replication delays](https://docs.snowflake.com/user-guide/cleanrooms/v2/troubleshooting#label-dcr-collaboration-replication-delays)를 참조하세요.
- `CREATED`: 콜라보레이션이 생성되었고 작업할 준비가 됐어요. 이전 JOIN이 리스팅이 아직 복제 중이라 실패했다면, 이 상태는 복제가 완료되었음을 알리며 JOIN을 다시 호출할 수 있어요.
- `IN_REVIEW`: 콜라보레이션이 검토 중이에요.
- `INSTALLATION_FAILED`: 설치에 실패했어요. 애플리케이션 패키지가 설치되지 않아 검토할 수 없어요.
- `INVITED`: 참가자가 초대됐어요. 이전 REVIEW가 리스팅이 아직 복제 중이라 실패했다면, 이 상태는 복제가 완료되었음을 알리며 REVIEW를 다시 호출할 수 있어요.
- `JOINING`: 조인 프로세스가 시작됐어요.
- `JOIN_FAILED`: 조인 프로세스가 실패했어요.
- `JOINED`: 콜라보레이션에 성공적으로 조인했어요. 이제 콜라보레이션을 사용할 수 있어요.
- `LEAVING`: 나가기(Leave) 프로세스가 시작됐어요.
- `LEAVE_FAILED`: 나가기(Leave) 프로세스가 실패했어요.
- `LEFT`: 콜라보레이션에서 성공적으로 나갔어요.
- `LOCAL_DROP_PENDING`: 콜라보레이션이 사용자 계정에서 정리될 준비가 됐어요. 나가기를 요청했거나 소유자가 콜라보레이션을 해체했기 때문이에요. LEAVE를 호출하여 프로세스를 완료하세요. 소유자라면 TEARDOWN을 호출하세요.
- `DROPPING`: 삭제(Drop) 프로세스가 시작됐어요.
- `DROPPED`: 성공적으로 삭제됐어요.
- `DROP_FAILED`: 삭제(Drop) 프로세스가 실패했어요.
-
`details`: 현재 상태에 대한 추가 세부 정보(사용 가능한 경우)예요.
-
`region`: 이 협업자의 클라우드 리전이에요.
#### Example
```
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.GET_STATUS(
$collaboration_name
);
```
#### Access requirements
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요.
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('GET STATUS', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('READ', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')`
---
### ENABLE_EXTERNAL_TABLE_ANALYSIS_FOR_COLLABORATION
**Schema:**
ADMIN
계정에서 분석을 실행할 때 외부 및 Apache Iceberg™ 테이블을 사용할 수 있게 해줘요. 분석 실행자는 외부 또는 Iceberg 테이블이 포함된 분석을 실행하기 전에 이 프로시저를 호출해야 해요. 이 프로시저는 분석마다가 아니라 콜라보레이션당 한 번 호출해요.
#### Syntax
```
ENABLE_EXTERNAL_TABLE_ANALYSIS_FOR_COLLABORATION( <collaboration_name> )
```
#### Arguments
**`*collaboration_name*`**
콜라보레이션의 이름이에요.
#### Returns
성공 메시지가 포함된 `MESSAGE` 열이 있는 테이블이에요.
#### Example
```
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.ADMIN.ENABLE_EXTERNAL_TABLE_ANALYSIS_FOR_COLLABORATION(
$collaboration_name
);
```
#### Access requirements
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 이 프로시저를 호출하려면 MANAGE FIREWALL CONFIGURATION 권한이 부여된 역할을 사용해야 해요.
---
### VIEW_COLLABORATIONS
**Schema:**
COLLABORATION
생성했거나 검토할 수 있거나 조인한 콜라보레이션에 대한 정보를 볼 수 있어요.
#### Syntax
```
VIEW_COLLABORATIONS()
```
#### Arguments
*None*
#### Returns
액세스할 수 있는 모든 콜라보레이션의 세부 정보를 나열하는 테이블이에요. 이 테이블에는 다음 열이 포함돼요.
- `source_name`: 콜라보레이션 사양의 `name` 값으로 지정된 콜라보레이션의 이름이에요.
- `collaboration_name`: 설치된 콜라보레이션의 이름이에요. JOIN(소유자) 또는 REVIEW(비소유자)를 호출하여 콜라보레이션이 설치되기 전까지는 NULL이에요.
- `owner_account`: 콜라보레이션을 생성한 계정의 데이터 공유 ID예요.
- `updated_on`: 콜라보레이션이 마지막으로 업데이트된 시점이에요.
- `collaboration_spec`: 이 콜라보레이션의 사양을 YAML 형식으로 보여줘요. 콜라보레이션 생성 후 연결되거나 제거된 리소스를 포함한 최신 버전을 보여줘요. 다만, 새 템플릿이나 데이터 오퍼링과 같이 곧 연결될 진행 중인 업데이트 요청이 있을 수 있어요.
#### Examples
모든 콜라보레이션 보기:
```
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_COLLABORATIONS();
```
이름으로 특정 콜라보레이션의 사양 보기:
```
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_COLLABORATIONS() ->>
SELECT "COLLABORATION_SPEC" FROM $1 WHERE "SOURCE_NAME" = $collaboration_name;
```
#### Access requirements
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요.
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('READ', 'COLLABORATION', '{collaboration name}', '{role name}')`
---
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('RUN', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('VIEW COLLABORATIONS', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')`
---
### REVIEW
**스키마:**
COLLABORATION
초대받은 콜라보레이션에 대한 세부 정보를 제공해요. COLLABORATION.VIEW_COLLABORATIONS를 호출하면 초대받았지만 아직 참여하지 않은 콜라보레이션 목록을 볼 수 있어요. 소유자를 제외한 모든 협업자는 JOIN을 호출하기 전에 이 프로시저를 호출해야 해요. 이미 참여한 콜라보레이션에서는 이 프로시저를 호출할 수 없어요. REVIEW와 JOIN을 호출할 때는 동일한 역할을 사용해야 해요. 계정이 소유자와 다른 클라우드 호스팅 리전에 있다면 성공적인 응답을 받을 때까지 이 프로시저를 여러 번 호출해야 할 수도 있어요.
이 프로시저는 계정에 기본 애플리케이션을 설치해요.
**중요 참고 사항:**
- 소유자는 자신의 콜라보레이션에서 REVIEW를 호출할 수 없어요.
- 소유자를 제외한 모든 사용자는 JOIN을 호출하기 전에 REVIEW를 호출해야 해요.
- 콜라보레이션에 참여한 후에는 REVIEW를 다시 호출할 수 없어요.
#### 구문
```
REVIEW( <source_name>, <owner_account> )
REVIEW( <source_name>, <owner_account>, <collaboration_name> )
```
#### 인자
**`*source_name*`**
참여하도록 초대받은 콜라보레이션의 이름이에요. COLLABORATION.VIEW_COLLABORATIONS를 호출하면 콜라보레이션 목록을 볼 수 있어요.
**`*owner_account*`**
소유자의 [Data Sharing Account Identifier](https://docs.snowflake.com/user-guide/admin-account-identifier#label-account-name-data-sharing)예요. 이 값은 COLLABORATION.VIEW_COLLABORATIONS의 응답에서 확인할 수 있어요.
**`*collaboration_name*` *(선택 사항)***
콜라보레이션이 계정에 설치될 때 지정할 이름이에요. 이후 콜라보레이션을 지정해야 하는 프로시저에서 이 이름을 사용해요. 지정하지 않으면 콜라보레이션 이름은 기본적으로 `source_name`으로 설정돼요.
#### 반환 값
콜라보레이션 ID, 소유자, 콜라보레이션 사양을 포함한 콜라보레이션 정보 테이블을 반환해요.
계정이 콜라보레이션 소유자와 [different cloud hosting region](https://docs.snowflake.com/user-guide/cleanrooms/laf#label-dcr-collab-enabling-laf)에 있는 경우, REVIEW는 추가 설정 단계가 아직 진행 중이라는 메시지를 반환할 수 있어요. 이 메시지가 표시되면 콜라보레이션 정보 테이블이 반환될 때까지 REVIEW를 계속 호출해요.
#### 예
```
-- View the collaboration for your own usage.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.REVIEW(
$collaboration_name,
'org1.account1234'
);
```
#### 액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요:
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('REVIEW COLLABORATION', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')`
추가로 필요한 역할 권한은 [GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE](#label-dcr-grant-privilege-on-account-to-role)을 참조해요.
---
### JOIN
**스키마:**
COLLABORATION
지정된 콜라보레이션에 참여하는 비동기 메서드예요. 참여하는 시점에 콜라보레이션에 나열된 리소스에만 액세스할 수 있다는 점에 유의해요. 이 프로시저는 실행하는 데 시간이 걸려요.
데이터를 활성화할 수 있는 콜라보레이션(즉, 분석 실행자이고 콜라보레이션 사양에 `activation_destinations` 필드가 포함된 경우)에 참여하려면 REGISTER DATA OFFERING 계정 권한이 필요해요. [access management API reference guide](#label-dcr-collaboration-access-management-api)를 참조해요.
이 프로시저를 실행할 때 활성 보조 역할(secondary role)을 가질 수 없어요. 보조 역할을 비활성화하려면 다음 SQL 코드를 실행해요:
```
USE SECONDARY ROLES NONE;
```
콜라보레이션 생성자를 제외한 모든 사용자는 이 프로시저를 호출하기 전에 COLLABORATION.REVIEW를 호출해야 해요.
이 프로시저는 비동기 방식이에요. 콜라보레이션 참여가 성공적으로 완료되었는지 확인하려면 GET_STATUS를 호출해요.
콜라보레이션에 리소스를 제출하거나 콜라보레이션에서 템플릿을 실행하려는 사람은 먼저 콜라보레이션에 참여해야 해요. 콜라보레이션 생성자는 INITIALIZE를 호출할 때 자동으로 참여해요 (`auto_join_warehouse`가 FALSE로 설정된 경우는 제외해요).
#### 구문
```
JOIN( <collaboration_name> )
```
#### 인자
**`*collaboration_name*`**
참여할 콜라보레이션의 이름이에요. COLLABORATION.REVIEW를 호출할 때 지정한 로컬 이름이에요 (다른 `collaboration_name`을 지정하지 않으면 기본적으로 `source_name`으로 설정돼요). COLLABORATION.VIEW_COLLABORATIONS를 호출하면 콜라보레이션 목록을 볼 수 있어요. 같은 이름의 여러 콜라보레이션에 초대받은 경우, 기본값은 마지막으로 COLLABORATION.REVIEW를 호출한 콜라보레이션이에요.
#### 반환 값
성공 메시지 문자열을 반환해요. 참조 사용 권한 누락에 대한 오류가 발생하면 [Troubleshooting guide](https://docs.snowflake.com/user-guide/cleanrooms/v2/troubleshooting#label-dcr-database-missing-reference-usage-error)를 참조해요.
#### 예
```
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.JOIN(
$collaboration_name
);
```
#### 액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요:
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')`
추가로 필요한 역할 권한은 [GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE](#label-dcr-grant-privilege-on-account-to-role)을 참조해요.
---
### LEAVE
**스키마:**
COLLABORATION
---
참여한 콜라보레이션을 떠나요. 콜라보레이션을 떠난 후에는 다시 참여할 수 없어요.
**이 프로시저를 두 번 호출해야 해요.** 먼저 한 번 호출하고, `LOCAL_DROP_PENDING`이 반환될 때까지 GET_STATUS를 호출한 다음, 이 프로시저를 다시 호출하세요.
#### 구문
```
LEAVE( <collaboration_name> )
```
#### 인자
**`*collaboration_name*`**
떠날 콜라보레이션의 이름이에요.
#### 반환 값
성공 메시지 문자열을 반환해요.
#### 예
```
-- Start the process.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.LEAVE($collaboration_name);
-- Call until it returns LOCAL_DROP_PENDING.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.GET_STATUS($collaboration_name);
-- Final call.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.LEAVE($collaboration_name);
```
#### 액세스 요구 사항
SAMOOHA_APP_ROLE 역할을 사용하지 않는 경우, 다음 프로시저 중 하나를 호출하여 권한을 부여받은 역할을 사용해야 해요.
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')`
추가로 필요한 역할 권한은 [GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE](#label-dcr-grant-privilege-on-account-to-role)를 참조하세요.
---
### GET_CONFIGURATION
**스키마:**
COLLABORATION
콜라보레이션의 현재 구성 설정을 반환해요. 이 프로시저를 호출하기 전에 콜라보레이션에 참여해야 해요.
#### 구문
```
GET_CONFIGURATION( <collaboration_name> )
```
#### 인자
**`*collaboration_name*`**
콜라보레이션의 이름이에요.
#### 반환 값
다음 열이 있는 테이블을 반환해요:
````
| Column | Description |
|---|---|
| CONFIGURATION | The name of the configuration setting. |
| VALUE | The current value of the configuration. |
| STATUS | Whether the value is ACTIVE or PENDING (a change has been requested but not yet applied). |
##### Supported configurations
``````````````
| Configuration name | Description |
|---|---|
| TEMPLATE_AUTO_APPROVAL | Whether template update requests from other collaborators are automatically approved. Values: true or false. Default: false. |
| ALLOW_ML_JOBS_MONITORING | Whether collaborators can retrieve ML Jobs container logs using the get_logs action. Values: true or false. Default: true. Only the collaboration owner can change this value. |
#### Example
```
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.GET_CONFIGURATION(
$collaboration_name
);
```
#### Access requirements
If you’re not using the SAMOOHA_APP_ROLE role, you must use a role that was granted privileges by calling one of the following procedures:
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('MANAGE TEMPLATE AUTO APPROVAL', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('READ', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')`
---
### SET_CONFIGURATION
**Schema:**
COLLABORATION
Sets a configuration value for a collaboration. The change is asynchronous: call GET_CONFIGURATION to check when the new value has been applied. You must have joined the collaboration before calling this procedure.
Use this procedure to manage template auto-approval instead of the deprecated ENABLE_TEMPLATE_AUTO_APPROVAL and DISABLE_TEMPLATE_AUTO_APPROVAL procedures. Setting `TEMPLATE_AUTO_APPROVAL` to `true` enables automatic approval, and setting it to `false` disables it.
#### Syntax
```
SET_CONFIGURATION( <collaboration_name>, <config_name>, <value> )
```
#### Arguments
**`*collaboration_name*`**
Name of the collaboration.
**`*config_name*`**
Name of the configuration to set. See GET_CONFIGURATION for supported configuration names.
**`*value*`**
The new value for the configuration. Must be a valid value for the specified configuration name.
#### Returns
A string message confirming the request has been accepted.
#### Example
```
-- Enable automatic approval of template requests
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.SET_CONFIGURATION(
$collaboration_name,
'TEMPLATE_AUTO_APPROVAL',
'true'
);
```
#### Access requirements
If you’re not using the SAMOOHA_APP_ROLE role, you must use a role that was granted privileges by calling one of the following procedures:
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('MANAGE TEMPLATE AUTO APPROVAL', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('UPDATE', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')`
## Running analyses and activations
### RUN
**Schema:**
COLLABORATION
Runs an analysis in the data clean room. You can pass in run details either as individual parameters, or by passing in an [analysis YAML specification string](https://docs.snowflake.com/user-guide/cleanrooms/spec-analysis#label-dcr-collaboration-analysis-yaml).
Read the [consumer.run_analysis](https://docs.snowflake.com/user-guide/cleanrooms/consumer#dcr-consumer-run-analysis) reference for background about running a template in a data clean room.
There are two versions of this procedure: one that takes the run arguments as a single YAML-formatted string, and one that takes the arguments as individual parameters.
#### Syntax
**YAML argument syntax:**
```
RUN( <collaboration_name>, <analysis_spec> )
```
**Explicit parameters syntax:**
```
RUN( <collaboration_name>, <template_id>, <template_view_names>, <local_template_view_names>, <arguments> )
```
#### Arguments
**`*collaboration_name*`**
Name of the collaboration in which to run this analysis.
**`*analysis_spec*`**
[Analysis definition](https://docs.snowflake.com/user-guide/cleanrooms/spec-analysis#label-dcr-collaboration-analysis-yaml) in YAML format as a string, describing the template, tables, and template values to use in this analysis. Used with the YAML argument syntax.
**`*template_id*`**
ID of the template to run.
**`*template_view_names*`**
Array of string names of source tables to use in the analysis. Use table names returned by VIEW_DATA_OFFERINGS in the `template_view_name` column. The format for each entry is `*user_alias*.*data_offering_id*.*dataset_alias*`
Don’t include datasets that the template author [preset in the template](https://docs.snowflake.com/user-guide/cleanrooms/custom-templates#label-dcr-template-preset-tables) (preview); those are
supplied by the template. Pass an empty array if the template pins every dataset it reads.
**`*local_template_view_names*`**
Array of string IDs of your own tables to use in the analysis. You must link these tables first by calling LINK_LOCAL_DATA_OFFERING.
**`*arguments*`**
JSON object that contains named arguments used by the template, where each key is a template argument name, and the value is the value of that argument.
`preset_tables` is a reserved argument name. Snowflake rejects a RUN call that passes `preset_tables` in `arguments`.
#### Returns
Analysis results in table format.
#### Examples
Pass by parameter example:
```
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.RUN(
$collaboration_name,
$template_name,
['Provider.data_offering_1_2026_01_12_v0.test_dataset'], -- Tables to pass to source_tables variable.
[],
{} -- Template takes no parameters.
);
```
#### Access requirements
If you’re not using the SAMOOHA_APP_ROLE role, you must use a role that was granted privileges by calling one of the following procedures:
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('RUN', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')`
---
### RUN_ML_JOB_ACTION
**Schema:**
COLLABORATION
Monitors and manages a running or completed ML Job in a collaboration. Returns status, logs, or
results depending on the action specified. For a conceptual overview of ML Jobs, see
[ML Jobs in Data Clean Rooms](https://docs.snowflake.com/user-guide/cleanrooms/ml-jobs).
#### Syntax
```
RUN_ML_JOB_ACTION( <collaboration_name>, <ml_job_action_spec> )
```
#### Arguments
**`*collaboration_name*`**
Name of the collaboration that contains the running or completed ML Job.
**`*ml_job_action_spec*`**
An ML job action definition in YAML format as a string. Contains the following fields:
- `api_version`: Must be `2.0.0`.
- `spec_type`: Must be `ml_job_action`.
- `job_id`: The job ID returned by [RUN](#label-dcr-collaboration-run-reference) when the ML Job was started.
- `action`: The action to perform. Case-insensitive. See [Actions](#run_ml_job_action-actions) below.
#### Actions
The `action` field is case-insensitive. Valid actions are:
**`get_status`**
Returns the current execution status of the job. Possible values: `PENDING`, `RUNNING`,
`DONE`, `FAILED`. Poll this action to know when the job completes.
**`get_logs`**
Returns the container’s stdout/stderr output. Use this to monitor progress, debug errors, or
view script print statements. Only available if `allow_monitoring` is `true` in the code
spec **and** the collaboration owner has not disabled `ALLOW_ML_JOBS_MONITORING`.
**`get_result`**
Returns the job’s return value after completion. For scripts that write to cleanroom tables
rather than returning data directly, this returns NULL. Check `get_status` first to confirm
the job is `DONE` before calling `get_result`.
#### Returns
Action-dependent result. `get_status` returns a status string; `get_logs` returns container
output as text; `get_result` returns the job’s return value or NULL.
#### Examples
```
-- Check job status.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.RUN_ML_JOB_ACTION(
'my_collaboration',
$$
api_version: 2.0.0
spec_type: ml_job_action
job_id: <job_id>
action: get_status
$$
);
-- Check container logs for progress.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.RUN_ML_JOB_ACTION(
'my_collaboration',
$$
api_version: 2.0.0
spec_type: ml_job_action
job_id: <job_id>
action: get_logs
$$
);
-- Get the result once the job completes.
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.RUN_ML_JOB_ACTION(
'my_collaboration',
$$
api_version: 2.0.0
spec_type: ml_job_action
job_id: <job_id>
action: get_result
$$
);
```
Note
The collaboration owner can disable log access by setting the `ALLOW_ML_JOBS_MONITORING` configuration to `false`
using [SET_CONFIGURATION](#label-dcr-collaboration-set-configuration-reference). It is `true` (enabled) by default. When disabled,
`get_logs` returns an error, but `get_status` and `get_result` still work.
#### Access requirements
If you’re not using the SAMOOHA_APP_ROLE role, you must use a role that was granted privileges by calling one of the following procedures:
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('RUN ML JOB ACTION', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')`
---
### VIEW_ACTIVITY_HISTORY
**Schema:**
COLLABORATION
Returns a table of template-run activity records for a collaboration. What each caller can see depends on their activity and the resources they contribute to the collaboration. For a conceptual overview, see [Monitor analysis activity in collaborations](https://docs.snowflake.com/user-guide/cleanrooms/activity-history).
Activity history is automatically available in every collaboration created after the feature release.
#### Syntax
```
VIEW_ACTIVITY_HISTORY( <collaboration_name> )
```
#### Arguments
**`*collaboration_name*`**
Name of the collaboration to return activity for.
#### Returns
A table containing activity records that the caller is permitted to see.
The table includes the following columns:
- `ACTIVITY_ID`: Unique identifier for the activity record. Also added as a Query Tag into the underlying query so callers can correlate an entry with [account-level query history](https://docs.snowflake.com/en/sql-reference/account-usage/query_history).
- `ANALYSIS_RUNNER_ALIAS`: Alias of the collaborator that ran the analysis.
- `START_TS`: Timestamp when the run started.
- `TOTAL_DURATION`: Total run duration, in milliseconds.
- `STATUS`: `SUCCESS` or `ERROR`. For activation template runs, `SUCCESS` reflects only that the template query executed successfully - failures during the export of activation results are not surfaced.
- `FAILURE_REASON`: Populated when `STATUS` is `ERROR`. The analysis runner sees the full error message. Other accounts see a redacted message.
- `ACTIVITY_TYPE`: The type of activity. Currently always `RUN`.
- `ACTIVITY_INFO`: A `VARIANT` column whose contents depend on what the caller contributed to the collaboration. Possible sub-keys:
- `data_offering_ids`: IDs of the data offerings referenced by the run. Visible if the caller provided data offerings.
- `request_parameters.template_id`: ID of the template used.
- `request_parameters.source_tables`: Tables passed to the `source_tables` argument of `RUN`. Visible if the caller provided the relevant data offerings.
- `request_parameters.local_tables`: Tables passed to the `local_tables` argument of `RUN`. Visible only to the analysis runner.
- `request_parameters.arguments`: Template arguments passed to `RUN`. Visible only to the analysis runner.
- `request_parameters.activation_destination`: Activation destination for the run, if any.
#### Example
```
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_ACTIVITY_HISTORY(
$collaboration_name
);
```
#### Access requirements
If you’re not using the SAMOOHA_APP_ROLE role, you must use a role that was granted privileges by calling one of the following procedures:
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('VIEW ACTIVITY HISTORY', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')`
---
### VIEW_ACTIVATIONS
**Schema:**
COLLABORATION
Shows the activation status of any analysis run that either you triggered to send to a collaborator, or activations that a collaborator triggered to send to you. Activation requests to send data to yourself are not listed.
For more information about activation, see [Implementing activation](https://docs.snowflake.com/user-guide/cleanrooms/activation#label-dcr-collaboration-activating-results).
#### Syntax
```
VIEW_ACTIVATIONS( <collaboration_name> )
```
#### Arguments
**`*collaboration_name*`**
Name of the collaboration.
#### Returns
A table containing details for each activation. The table includes the following columns:
-
`updated_on`: Time when the status was last updated.
-
`segment_name`: An arbitrary string assigned by the analysis runner to identify this activation. For more information, see [Activating query results](https://docs.snowflake.com/user-guide/cleanrooms/activation).
-
`batch_id`: Batch ID of this activation request. For more information, see [Viewing provider and consumer activation results](https://docs.snowflake.com/user-guide/cleanrooms/v1/activation#label-cleanrooms-provider-consumer-view-results).
-
`template_id`: Template used to produce this activation data.
-
`shared_by`: The collaborator that ran the analysis.
-
`shared_with`: The collaborator that should receive the analysis data.
-
`status`: Status of the activation. The following values are supported:
- `PENDING`: Activation was requested, but is waiting to be processed.
- `REPLICATING`: Activation data is being replicated to the destination region.
- `SHARED`: Activation data is ready to be processed. Call PROCESS_ACTIVATION to send the results to your account.
- `FAILED`: Activation processing failed. See information in the `details` column.
- `PROCESSED`: Activation results have been sent to the account specified in the activation request.
-
`details`: Failure details, if the activation failed.
#### Example
```
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.VIEW_ACTIVATIONS(
$collaboration_name
);
```
#### Access requirements
If you’re not using the SAMOOHA_APP_ROLE role, you must use a role that was granted privileges by calling one of the following procedures:
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('VIEW ACTIVATIONS', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('RUN', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')`
---
### PROCESS_ACTIVATION
**Schema:**
COLLABORATION
If the analysis runner is sending data to another collaborator’s account, that collaborator should call PROCESS_ACTIVATION to import the activation data into their account. The collaborator should call
VIEW_ACTIVATIONS and wait until the output shows that the activation status for a given segment is `SHARED` before calling PROCESS_ACTIVATION.
For more information, see [Implementing activation](https://docs.snowflake.com/user-guide/cleanrooms/activation#label-dcr-collaboration-activating-results).
#### Syntax
```
PROCESS_ACTIVATION( <collaboration_name> [, <segment_name> | <array_of_batch_ids> ] )
```
#### Arguments
**`*collaboration_name*`**
Name of the collaboration.
**`*segment_name*` *(Optional)***
String name of a specific activation segment to process.
**`*batch_ids*` *(Optional)***
String array of batch IDs of activations to process. This value is returned by VIEW_ACTIVATIONS. If not included, the request will process all pending
activations in the designated collaboration for the caller.
#### Returns
The table name where the user can retrieve the results, and the segment name specified for the results. See [Implementing activation](https://docs.snowflake.com/user-guide/cleanrooms/activation#label-dcr-collaboration-activating-results) to learn how to read results.
#### Example
```
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.PROCESS_ACTIVATION(
$collaboration_name
);
```
#### Access requirements
If you’re not using the SAMOOHA_APP_ROLE role, you must use a role that was granted privileges by calling one of the following procedures:
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('PROCESS ACTIVATION', 'COLLABORATION', '{collaboration name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')`
## Registry management procedures
This section contains procedures used to register objects. For more information:
- [Registries](https://docs.snowflake.com/user-guide/cleanrooms/registries)
- [Adding resources to a collaboration](https://docs.snowflake.com/user-guide/cleanrooms/overview#label-dcr-collaboration-add-resources)
### CREATE_REGISTRY
**Schema:**
REGISTRY
Creates a custom registry to organize resources such as templates and data offerings. A custom registry can store resources of a single type, designated when you create the registry.
Use custom registries to group related resources separately from the default local registry. Add resources to this registry using the optional registry name parameter.
#### Syntax
```
CREATE_REGISTRY( '<registry_name>', <registry_type> )
```
#### Arguments
**`*registry_name*`**
Name of the registry to create. Must be a unique name across all registries in the account.
**`*registry_type*`**
The type of resources this registry will contain. Supported values: `TEMPLATE`, `DATA OFFERING`.
#### Returns
A string success message.
#### Example
```
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.CREATE_REGISTRY(
'my_custom_registry',
'TEMPLATE'
);
```
#### Access requirements
If you’re not using the SAMOOHA_APP_ROLE role, you must use a role that was granted privileges by calling the following procedure:
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE REGISTRY', '{role name}')`
---
### VIEW_REGISTRIES
**Schema:**
REGISTRY
Lists all registries that you have access to, including the default local registry and any custom registries.
#### Syntax
```
VIEW_REGISTRIES()
```
#### Arguments
None.
#### Returns
A table with a row for each registry that you can access.
#### Example
```
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.REGISTRY.VIEW_REGISTRIES();
```
#### Access requirements
If you’re not using the SAMOOHA_APP_ROLE role, you must use a role that was granted privileges by calling one of the following procedures:
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('VIEW REGISTRIES', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('JOIN COLLABORATION', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE COLLABORATION', '{role name}')`
- `GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE('CREATE REGISTRY', '{role name}')`
For a custom registry to be visible to VIEW_REGISTRIES, you must also have READ or REGISTER privileges, granted by one of the following procedure calls:
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('READ', 'REGISTRY', '{registry name}', '{role name}')`
- `GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE('REGISTER', 'REGISTRY', '{registry name}', '{role name}')`
## Access management procedures
The SAMOOHA_APP_ROLE role grants access to all Data Clean Room Collaboration API procedures. However, if an administrator wants to grant more granular privileges to specific roles, you can create a role and grant it specific privileges with the procedures described in this section. Learn more about managing access to Collaboration API: [The Access Management Documentation](https://docs.snowflake.com/user-guide/cleanrooms/manage-access).
The following procedures are used to manage fine-grained access to the Snowflake Data Clean Room Collaboration API:
- [GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE](#label-grant-privilege-on-object-to-role)
- [GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE](#label-dcr-grant-privilege-on-account-to-role)
### GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE
**Schema:**
ADMIN
Grants a specified role the privilege to call specific procedures on a specific object.
You can call this procedure multiple times to grant multiple
permissions to the same role. Run this procedure using the role that owns the object.
#### Syntax
```
GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE(
'<privilege>',
'<object_type>',
'<object_name>',
'<account_role_name>'
);
```
#### Arguments
**`'*privilege*'`**
What permission this role should be granted. See the table below to learn which privileges are available for which objects.
**`'*object_type*'`**
The type of object that this role is being granted permissions on. Supported values:
- `COLLABORATION`
- `REGISTRY`
**`'*object_name*'`**
The ID of the object, as specified in the object’s specification.
**`'*account_role_name*'`**
The role being granted.
The following privilege and object type combinations are supported:
**Compound privileges**
The following compound privileges grant access to multiple procedures at once:
````
````````
````
[custom
registry](https://docs.snowflake.com/user-guide/cleanrooms/registries)````
[custom registry](https://docs.snowflake.com/user-guide/cleanrooms/registries)
| 권한 | 객체 유형 | 활성화되는 프로시저 |
|---|---|---|
| READ | COLLABORATION | VIEW_COLLABORATIONS, GET_STATUS, GET_CONFIGURATION, VIEW_CODE_SPECS, VIEW_DATA_OFFERINGS, VIEW_UPDATE_REQUESTS, VIEW_TEMPLATES |
| RUN | COLLABORATION | RUN, VIEW_ACTIVATIONS, VIEW_COLLABORATIONS |
| UPDATE | COLLABORATION | EDIT, LINK_LOCAL_DATA_OFFERING, UNLINK_LOCAL_DATA_OFFERING, ADD_TEMPLATE_REQUEST, REMOVE_TEMPLATE, APPROVE_UPDATE_REQUEST, REJECT_UPDATE_REQUEST, ENABLE_TEMPLATE_AUTO_APPROVAL, DISABLE_TEMPLATE_AUTO_APPROVAL, SET_CONFIGURATION, VIEW_UPDATE_REQUESTS |
| READ | REGISTRY | 에 등록된 리소스를 봐요. |
| REGISTER | REGISTRY | 템플릿 및 데이터 오퍼링과 같은 리소스를 보거나 등록해요. |
**세분화된 권한**
다음 세분화된 권한은 특정 콜라보레이션의 개별 프로시저에 대한 액세스를 부여해요:
``````````````````````
``````
| Privilege | Procedures enabled |
|---|---|
| GET STATUS | GET_STATUS |
| VIEW DATA OFFERINGS | VIEW_DATA_OFFERINGS |
| VIEW TEMPLATES | VIEW_TEMPLATES |
| VIEW CODE SPECS | VIEW_CODE_SPECS |
| VIEW UPDATE REQUESTS | VIEW_UPDATE_REQUESTS |
| VIEW ACTIVATIONS | VIEW_ACTIVATIONS |
| VIEW ACTIVITY HISTORY | VIEW_ACTIVITY_HISTORY |
| ADD TEMPLATE REQUEST | ADD_TEMPLATE_REQUEST |
| REMOVE TEMPLATE | REMOVE_TEMPLATE |
| MANAGE UPDATE REQUEST | APPROVE_UPDATE_REQUEST, REJECT_UPDATE_REQUEST |
| MANAGE TEMPLATE AUTO APPROVAL | ENABLE_TEMPLATE_AUTO_APPROVAL, DISABLE_TEMPLATE_AUTO_APPROVAL, GET_CONFIGURATION, SET_CONFIGURATION |
| LINK LOCAL DATA OFFERINGS | LINK_LOCAL_DATA_OFFERING |
| UNLINK LOCAL DATA OFFERINGS | UNLINK_LOCAL_DATA_OFFERING |
| PROCESS ACTIVATION | PROCESS_ACTIVATION |
#### Returns
A table with a `MESSAGE` column containing a success message.
#### Example
This example creates a role for analysts to use to run analyses in a collaboration named `my_collaboration` and assigns it to a user.
```
USE ROLE role_that_created_this_collaboration;
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.ADMIN.GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE(
'RUN',
'COLLABORATION',
$collaboration_name,
'collaborator_analyst_role'
);
GRANT ROLE collaborator_analyst_role to USER alexander_hamilton;
```
#### Access requirements
You must use the same role that created the object to call GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE on that object.
- **For collaborations,** any role with CREATE COLLABORATION or JOIN COLLABORATION can call GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE on any collaboration.
- **For registries,** only the role that created the registry can call GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE on that registry.
---
### GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE
**Schema:**
ADMIN
Grants account-level privileges to a role. This procedure enables anyone using that role to call the procedures listed for that privilege.
#### Syntax
```
GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE( '<privilege>', '<account_role_name>' );
```
#### Arguments
**`'*privilege*'`**
The privilege to grant this role. The following string values are supported:
-
`JOIN COLLABORATION`: Grants permission to run COLLABORATION.JOIN as well as the following procedures on the joined collaboration:
- ADMIN.GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE
- ADMIN.GRANT_PRIVILEGE_ON_OBJECT_TO_ROLE
- ADMIN.REVOKE_PRIVILEGE_ON_OBJECT_FROM_ROLE
- COLLABORATION.ADD_TEMPLATE_REQUEST
- COLLABORATION.APPROVE_UPDATE_REQUEST
- COLLABORATION.ENABLE_TEMPLATE_AUTO_APPROVAL
- COLLABORATION.DISABLE_TEMPLATE_AUTO_APPROVAL
- COLLABORATION.REMOVE_TEMPLATE
- COLLABORATION.GET_STATUS
- COLLABORATION.LEAVE
- COLLABORATION.LINK_DATA_OFFERING
- COLLABORATION.LINK_LOCAL_DATA_OFFERING
- COLLABORATION.PROCESS_ACTIVATION
- COLLABORATION.REJECT_UPDATE_REQUEST
- COLLABORATION.REVIEW
- COLLABORATION.RUN
- COLLABORATION.TEARDOWN
- COLLABORATION.UNLINK_DATA_OFFERING
- COLLABORATION.UNLINK_LOCAL_DATA_OFFERING
- COLLABORATION.VIEW_ACTIVATIONS
- COLLABORATION.VIEW_CODE_SPECS
- COLLABORATION.VIEW_COLLABORATIONS
- COLLABORATION.VIEW_DATA_OFFERINGS
- COLLABORATION.VIEW_TEMPLATES
- COLLABORATION.VIEW_UPDATE_REQUESTS
- REGISTRY.VIEW_REGISTRIES
- REGISTRY.VIEW_REGISTERED_CODE_SPECS
- REGISTRY.VIEW_REGISTERED_DATA_OFFERINGS
- REGISTRY.VIEW_REGISTERED_TEMPLATES
This privilege requires the following account-level privileges to be granted to the role manually:
- APPLY ROW ACCESS POLICY ON ACCOUNT
- CREATE APPLICATION ON ACCOUNT
- CREATE DATABASE ON ACCOUNT
- CREATE LISTING ON ACCOUNT
- CREATE SHARE ON ACCOUNT
- IMPORT SHARE ON ACCOUNT
- MANAGE SHARE TARGET ON ACCOUNT
-
`CREATE COLLABORATION`: Grants permission to run COLLABORATION.INITIALIZE, plus all procedures allowed by `JOIN COLLABORATION`
for the joined collaboration. Requires the following account-level privileges to be granted manually to the role:
- APPLY ROW ACCESS POLICY
- CREATE APPLICATION
- CREATE DATABASE
- CREATE LISTING
- CREATE SHARE
- IMPORT SHARE
- MANAGE SHARE TARGET
- EXECUTE TASK (if using auto-join in the INITIALIZE procedure)
-
`VIEW COLLABORATIONS`: Grants permission to run COLLABORATION.VIEW_COLLABORATIONS. Requires the following privileges to be granted manually to the role:
- IMPORT SHARE ON ACCOUNT
-
`REGISTER DATA OFFERING`: Grants permission to run REGISTRY.REGISTER_DATA_OFFERING and REGISTRY.UNREGISTER_DATA_OFFERING. This permission is required for any analysis runner to join a collaboration that implements activation.
-
`VIEW REGISTERED DATA OFFERINGS`: Grants permission to run REGISTRY.VIEW_REGISTERED_DATA_OFFERINGS.
-
`REGISTER TEMPLATE`: Grants permission to run REGISTRY.REGISTER_TEMPLATE and REGISTRY.UNREGISTER_TEMPLATE.
-
`VIEW REGISTERED TEMPLATES`: Grants permission to run REGISTRY.VIEW_REGISTERED_TEMPLATES.
-
`REGISTER CODE SPEC`: Grants permission to run REGISTRY.REGISTER_CODE_SPEC.
-
`VIEW REGISTERED CODE SPECS`: Grants permission to run REGISTRY.VIEW_REGISTERED_CODE_SPECS.
-
`CREATE REGISTRY`: Grants permission to run REGISTRY.CREATE_REGISTRY, REGISTRY.VIEW_REGISTRIES, and also the ability to read from custom registries that you have created.
-
`REVIEW COLLABORATION`: Grants permission to run COLLABORATION.REVIEW.
-
`VIEW REGISTRIES`: Grants permission to run REGISTRY.VIEW_REGISTRIES.
-
`VIEW DCR STATUS`: Grants permission to view the overall status of Data Clean Rooms in the account.
**`'*account_role_name*'`**
The name of an account-level role.
#### Returns
A table with a `MESSAGE` column containing a success message.
#### Example
```
USE ROLE ACCOUNTADMIN;
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.ADMIN.GRANT_PRIVILEGE_ON_ACCOUNT_TO_ROLE(
'REGISTER DATA OFFERING',
'COLLABORATOR_ANALYST_ROLE'
);
```
#### 액세스 요구 사항
---
이 프로시저를 실행하려면 ACCOUNTADMIN 역할 또는 MANAGE GRANTS 전역 권한이 있는 역할이 필요해요.
## 더 알아보기 (Learn more)
- [these regions](https://docs.snowflake.com/user-guide/cleanrooms/installing-dcr#label-dcr-supported-regions)
- [Setting up your environment](https://docs.snowflake.com/user-guide/cleanrooms/developer-guide#label-cleanrooms-developer-setup)
- [Use DCR privileges to manage account, object, and procedure privileges](https://docs.snowflake.com/user-guide/cleanrooms/manage-access#label-dcr-collab-about-rbac-roles)
- [custom registry](https://docs.snowflake.com/user-guide/cleanrooms/registries)
- [Template definition](https://docs.snowflake.com/user-guide/cleanrooms/spec-template#label-dcr-collaboration-template-yaml)
- [See the link template flow.](https://docs.snowflake.com/user-guide/cleanrooms/resources-templates#label-dcr-collaboration-add-template-post-creation)
- [template specification](https://docs.snowflake.com/user-guide/cleanrooms/resources-templates#label-dcr-collaboration-add-templates-to-collaboration)
- [JinjaSQL](https://docs.snowflake.com/user-guide/cleanrooms/custom-templates)
- [Learn how to handle this issue.](https://docs.snowflake.com/user-guide/cleanrooms/v2/troubleshooting#label-dcr-database-missing-reference-usage-error)
- [data offering definition](https://docs.snowflake.com/user-guide/cleanrooms/spec-data-offering#label-dcr-collaboration-data-yaml)
- [Run an analysis with your own data when you use Standard Edition](https://docs.snowflake.com/user-guide/cleanrooms/demo-flows/basic-multiparty-collab#label-dcr-using-local-data)
- [free-form SQL queries](https://docs.snowflake.com/user-guide/cleanrooms/free-form-sql)