Snowflake Data Clean Rooms에 대해 알아봐요
Snowflake Data Clean Rooms에 대해 알아봐요
기능 — 일반 공개
현재 these regions에서 사용할 수 있어요.
정부 및 VPS 배포에서는 사용할 수 없어요.
이 항목에서는 협업을 구성하는 구성 요소에 대한 개략적인 가이드를 제공하고, Snowflake Data Clean Room 협업을 만들거나 사용하는 기본 단계를 설명해요.
출처: 문서
본문
요구 사항
-
최신 버전의 Snowflake Data Clean Rooms로 업데이트되어 있어야 해요.
-
Snowsight에서 collaboration을 보거나 관리할 수 있고, Collaboration API를 통해서도 가능해요. 어느 쪽이든 역할에 적절한 권한이 필요해요. 자세한 내용은 collaborations, resources, data에 대한 액세스 관리를 참조하세요.
-
Data Provider는 Snowflake Enterprise Edition을 사용해야 해요. Owner와 Analysis runner는 Standard Edition을 사용할 수 있어요.
-
Snowflake Standard Edition을 사용하는 경우, 정책이 적용된 data clean room을 통해 데이터를 공유할 수 없어요. 하지만 다른 collaborator의 data offering에 액세스하거나, 정책을 적용하거나 데이터를 공유하지 않고 자체 데이터를 사용할 수는 있어요.
-
결과를 다른 Snowflake 계정으로 활성화하려면 Snowflake Enterprise Edition을 사용해야 해요.
-
Trial 계정은 Snowflake Data Clean Rooms를 지원하지 않아요.
collaboration의 역할과 리소스
collaboration을 사용하는 방법을 이해하려면 먼저 collaboration 역할과 collaboration 리소스를 이해해야 해요.
Collaboration 역할
collaboration에서 사용할 수 있는 역할은 다음과 같아요. 이 역할은 collaborator의 전반적인 기능을 정의해요.
-
Owner: Owner는 collaboration을 정의하고 생성하며 소유하고, 어떤 collaborator를 초대할지와 그들의 collaboration 역할을 정의해요. Owner는 자동으로 analysis runner나 data provider가 되지는 않으며, 추가적인 실행 권한도 없어요. Owner의 주요 기능은 clean room을 만들고, collaboration 역할을 할당하고, 누가 누구와 데이터를 공유할 수 있는지 결정하고, clean room을 해체하는 것이에요. collaboration은 owner를 한 명만 가질 수 있어요.
-
Data provider: collaboration에 테이블, 뷰와 같은 data offering을 제공하고, 어떤 analysis runner가 이를 사용할 수 있는지 지정해요. 즉, collaboration specification에 지정된 대로 계정 A는 계정 B와 C에 대한 data provider가 되는 거예요.
-
Analysis runner: collaboration specification에 지정된 대로 허용된 data offering에서 허용된 template을 실행해요.
이러한 역할은 collaboration을 생성할 때 사용되는 collaboration specification에 지정돼요.
한 collaborator는 여러 collaboration 역할을 할당받을 수 있고, (owner 역할을 제외하고) 하나의 collaboration 역할은 여러 collaborator에게 할당될 수 있어요.
자세히 알아보기
Collaboration 리소스
collaboration에는 data offering, template, code spec을 포함한 리소스가 포함돼요. 모든 리소스와 collaboration 자체는 YAML specification으로 정의돼요.
collaboration은 다음 유형의 리소스를 지원해요:
-
Template: analysis runner가 collaboration에서 실행할 수 있는 JinjaSQL 쿼리예요. template 유형에 따라 결과를 직접 전달하거나, 지정된 collaborator의 Snowflake 계정으로 활성화(저장)할 수 있어요. analysis runner는 실행 시 template에 값을 전달하여 열 이름, WHERE 절 및 기타 쿼리 요소에 사용되는 template 변수를 대체할 수 있어요.
-
Data offering: data provider가 특정 analysis runner와 공유하는 하나 이상의 테이블 패키지예요. data offering은 스냅샷이 아닌 소스 데이터의 실시간 뷰이며, specification은 노출되는 열과 적용되는 정책을 제어해요.
-
Code spec: template에서 호출할 수 있는 사용자 정의 Python 함수 또는 프로시저 집합이에요. code spec을 사용하면 machine learning 모델이나 사용자 정의 변환과 같은 사용자 정의 논리로 template 기능을 확장할 수 있어요.
자세히 알아보기
예제 clean room specification
두 참가자, alice(계정 corp1.acct123의 별칭)와 bob(계정 corp2.acctxyz의 별칭)이 포함된 기본 clean room의 YAML specification은 다음과 같아요. 이 specification은 각 사용자에게 역할을 할당하고 두 data offering을 collaboration에 연결해요.
api_version: 2.0.0
spec_type: collaboration
name: basic_collaboration
owner: alice # alice is the collaboration owner.
collaborator_identifier_aliases:
alice: corp1.acct123
bob: corp2.acctxyz
analysis_runners:
alice: # alice is also an analysis runner.
data_providers:
alice: # alice provides data to herself.
data_offerings: # alice provides these data offerings.
- id: alice_data_1
- id: alice_data_2
bob: # bob provides data to alice.
data_offerings: # bob provides this data to alice.
- id: bob_data_1
templates: # alice can use this template with any data she can access.
- id: template1
bob: # bob is an analysis runner
data_providers: # bob can use data from the following data providers.
alice:
data_offerings: # alice provides the following data to bob.
- id: alice_data_1
templates: # bob can use this template with any data he can access.
- id: template2
이 간단한 collaboration에는 다음 리소스와 collaboration 역할이 포함돼요:
-
alice는 collaboration owner이자 analysis runner이며, 자신과bob을 위한 data provider예요. -
bob은 analysis runner이고alice를 위한 data provider지만, 자신을 위한 data provider는 아니에요. -
alice는template1을 실행할 수 있고,bob은template2를 실행할 수 있어요.
이 collaboration에 대해 참고할 다른 사항은 다음과 같아요:
-
alice와bob모두 새 template을 추가하고 다른 collaborator와 공유할 수 있어요. -
모든 data provider는 collaboration이 생성된 후에도 자신의 data offering 목록에서 data offering을 추가하거나 제거할 수 있어요.
- 소유자는 협업이 생성된 후 EDIT를 호출하여 협업자를 추가하거나 제거하고 협업자 역할을 변경하도록 요청할 수 있어요. (preview feature) 이러한 변경에는 영향을 받는 협업자의 승인이 필요해요. 예를 들어, 소유자는 나중에
bob을 자신에게 데이터 공급자로 만들도록 요청할 수 있어요.
기본 clean room 협업 워크플로우
간단한 clean room 협업 시나리오를 살펴볼게요.
협업 소유자는 협업의 초기 구성에 표시하려는 템플릿이나 데이터 오퍼링을 선택적으로 등록할 수 있어요.
소유자는 선택적으로 협업에 참여할 협업자에게 협업의 초기 구성에 표시하려는 템플릿이나 데이터 오퍼링을 등록하도록 요청할 수 있어요. 그러면 협업자는 자신이 등록한 항목의 리소스 ID를 제공해요.
그런 다음 소유자는 협업을 생성해요. 협업 사양은 협업자, 그들의 역할, 그리고 협업의 초기 상태에서 사용할 수 있어야 하는 리소스를 정의해요.
-
협업에 다른 클라우드 호스팅 리전의 협업자가 포함된 경우, 해당 협업자는 협업을 검토하고 참여하기 전에 계정에서 enable Cross-Cloud Auto-Fulfillment on their account를 활성화해야 해요.
-
협업이 생성되면 협업 사양에 있는 모든 협업자가 해당 협업을 보고 참여할 수 있게 돼요.
협업자들은 협업을 검토하고 참여해요.
그런 다음 협업자들은 자신의 역할에 맞게 선택적으로 link resources into the collaboration할 수 있어요. 데이터 공급자는 데이터 오퍼링을 자신의 분석 러너에 연결할 수 있고, 모든 역할은 템플릿 추가를 요청하고 다른 협업자와 공유할 수 있어요.
분석 러너는 협업에서 자신과 공유된 템플릿을 실행할 수 있고, 협업에서 자신과 공유된 데이터 오퍼링을 사용할 수 있어요. 분석 러너는 분석 비용을 부담해요. 템플릿은 응답에서 쿼리 결과를 반환하거나 activate results to the caller or another collaborator를 수행할 수 있어요.
소유자는 나중에 EDIT를 호출하여 협업자를 추가하거나 제거하고 협업자 역할을 변경하도록 요청할 수 있어요. (preview feature) 단, 영향을 받는 협업자의 승인이 필요해요.
더 알아보기
-
See how to implement a basic two-party collaboration, with end-to-end code.
-
Data Clean Rooms 문서의 Use cases 섹션에서 추가 예시를 확인할 수 있어요.
협업 생성
적절한 권한이 있는 모든 Snowflake Data Clean Rooms 사용자는 clean room을 생성할 수 있어요. clean room은 YAML 사양으로 정의되며, 이 사양은 협업의 모든 협업자와 그들의 상대적 역할, 그리고 협업의 초기 구성에 포함된 리소스를 결정해요. (리소스 소유자가 참여해야 리소스를 사용할 수 있어요.) 리소스는 협업 생성 후 추가하거나 제거할 수 있어요. 소유자는 협업 생성 후 EDIT를 호출하여 협업자 추가/제거 및 협업자 역할 변경을 요청할 수도 있어요. (preview feature) 이러한 변경에는 영향을 받는 협업자의 승인이 필요해요.
협업은 버전 관리되지 않아요. 협업은 리소스 추가 또는 제거로 변경될 수 있지만, 이러한 변경은 추적되지 않아요.
더 알아보기
협업에 리소스 추가
협업은 템플릿, 데이터 오퍼링, 코드 스펙을 포함한 리소스에 접근할 수 있어요. 협업에서 리소스를 사용하려면 먼저 해당 리소스를 협업 clean rooms 환경에 *등록(register)*한 다음, 특정 협업에 *연결(link)*해야 해요.
-
*등록(Registration)*은 계정 수준 작업이에요. 리소스를 패키징하여 clean rooms 환경에 복사하고, 해당 리소스를 참조하는 데 사용되는 ID를 반환해요. 리소스는 레지스트리에 등록되는데, 계정의 기본 레지스트리 또는 계정의 누군가가 만든 사용자 지정 레지스트리 중 하나에 등록돼요. 기본 레지스트리는 READ REGISTRY 권한이 있는 계정의 모든 협업자가 사용할 수 있고, 사용자 지정 레지스트리는 레지스트리 생성자가 접근을 제어할 수 있어요.
-
*연결(Linking)*은 등록된 리소스를 특정 협업과 공유해요. 더 구체적으로, 특정 협업의 특정 협업자 집합과 등록된 리소스를 공유해요. 리소스를 연결하려면 협업 생성에 사용되는 협업 사양에 리소스를 추가하거나, 적절한 Collaboration API 프로시저를 호출하여 리소스를 협업에 연결할 수 있어요.
리소스는 콜라보레이션을 만들 때나 만든 후에 추가할 수 있어요.
콜라보레이션과 달리 리소스에는 버전이 있어요. 리소스의 최신 버전이 이전 버전을 덮어쓰지 않아요. 리소스를 최신 버전으로 교체하려면 콜라보레이션도 업데이트해서 이전 버전을 제거하고(원한다면) 새 버전을 추가해야 해요.
리소스를 등록하는 계정은 콜라보레이션 참여자여야 하며, 등록한 리소스가 콜라보레이션에서 사용 가능해지려면 먼저 콜라보레이션에 참여해야 해요.
자세히 알아보기
콜라보레이션 참여하기
콜라보레이션은 콜라보레이션 명세에 나열된 모든 참여자에게 표시돼요. 소유자를 포함한 모든 참여자는 콜라보레이션에 참여해야 해요. 소유자를 제외한 모든 참여자는 참여하기 전에 콜라보레이션을 검토해야 해요. 콜라보레이션을 검토하면 초대받은 상대방에게 콜라보레이션 명세가 공개돼요. 초대받은 사람은 콜라보레이션을 검토한 후에 참여할 수 있어요. 콜라보레이션에 제공한 리소스가 사용 가능해지려면 먼저 콜라보레이션에 참여해야 해요.
참여 상태(초대됨, 참여 중, 참여 완료)는 콜라보레이션에서 GET_STATUS를 호출하면 확인할 수 있어요. 리소스 연결, 콜라보레이션 참여, 결과 활성화 같은 대부분의 콜라보레이션 변경 작업은 비동기식이거나 다른 참여자에게 전파되는 데 시간이 걸릴 수 있어요. 그래서 변경 상태를 확인하려면 적절한 프로시저를 호출해야 해요.
분석 실행하기
콜라보레이션에서 분석 실행자로 지정된 참여자는 콜라보레이션에서 사용할 수 있는 모든 데이터 오퍼링에 대해 쿼리를 실행할 수 있어요.
콜라보레이션은 다음 유형의 분석을 지원해요:
-
템플릿 기반 분석 쿼리: 분석 실행자는 콜라보레이션에서 자신에게 할당된 모든 템플릿을 실행하고 결과를 동기식으로 확인할 수 있어요.
-
활성화 분석: 데이터 오퍼링, 콜라보레이션, 템플릿이 허용하는 경우 분석 실행자는 결과를 지정된 참여자의 Snowflake 계정에 활성화(저장)할 수 있어요.
-
자유 형식 SQL 분석: 콜라보레이션과 데이터 오퍼링이 허용하는 경우 분석 실행자는 데이터 오퍼링의 데이터에 대해 SQL 쿼리를 직접 실행할 수 있어요. Free-form SQL queries를 참조하세요.
자세히 알아보기
콜라보레이션 편집하기
Preview Feature — 공개
모든 계정에서 사용할 수 있어요.
콜라보레이션 소유자는 기존 콜라보레이션을 해체하고 다시 만들지 않고, 그 자리에서 편집을 요청할 수 있어요. 콜라보레이션을 편집하려면 소유자가 EDIT 프로시저에 콜라보레이션 명세의 업데이트된 버전을 제출해요. EDIT는 참여자를 추가하거나 제거하고, 참여자 역할을 변경하고, 이미 등록된 템플릿을 공유하거나 제거하고, 분석 실행자를 위해 이미 연결된 데이터 오퍼링을 연결하거나 연결 해제할 수 있어요. 편집 내용은 단일 업데이트 요청으로 적용되며, 변경 사항이 적용되기 전에 영향을 받는 모든 참여자가 승인해야 해요.
자세히 알아보기
콜라보레이션 나가기 또는 삭제하기
콜라보레이션은 언제든지 나갈 수 있어요. 단, 콜라보레이션 소유자는 콜라보레이션을 나갈 수 없고, 대신 모든 참여자를 위해 콜라보레이션을 삭제하게 돼요.
-
소유자가 아닌 참여자는
LEAVE를 호출하여 콜라보레이션을 나가요. 이때 본인이 제공한 모든 데이터 오퍼링은 콜라보레이션에서 제거돼요. 콜라보레이션을 나간 후에는 다시 참여할 수 없어요. -
콜라보레이션 소유자는 콜라보레이션을 나갈 수 없어요. 소유권을 양도할 수 없기 때문이에요. 콜라보레이션 소유자는
TEARDOWN을 호출하여 모든 참여자를 위해 콜라보레이션을 삭제할 수 있어요.
콜라보레이션 나가기 또는 삭제는 비동기식으로 이루어져요. 상태를 모니터링하려면 GET_STATUS를 호출해야 하며, GET_STATUS가 상태를 LOCAL_DROP_PENDING으로 표시하면 LEAVE 또는 TEARDOWN을 다시 호출해야 해요.
콜라보레이션을 삭제해도 콜라보레이션에 연결된 리소스의 등록 상태에는 영향을 미치지 않아요. 해당 리소스는 계속 사용하거나 새 콜라보레이션에 연결할 수 있어요.
더 알아보기 (Learn more)
- these regions
- updated to the latest version of Snowflake Data Clean Rooms
- Snowsight
- Collaboration API
- Managing access to collaborations, resources, and data
- use your own data
- activate results
- Learn more about roles
- Collaboration resources
- Collaboration resource schemas
- Design custom templates
- Code specs