Snowflake Data Clean Rooms 개요
Snowflake Data Clean Rooms 개요
Snowflake Data Clean Rooms 콜라보레이션을 구성하는 구성 요소와, 콜라보레이션을 만들거나 사용하는 기본 단계를 간략히 안내해요.
본문
기능 — 일반 공개(Generally Available)
현재 지원 리전: 이 리전들에서 사용할 수 있어요.
정부 및 VPS 배포에서는 사용할 수 없어요.
이 항목은 콜라보레이션을 구성하는 구성 요소에 대한 높은 수준의 안내를 제공하고, Snowflake Data Clean Room 콜라보레이션을 만들거나 사용하는 기본 단계를 설명해요.
요구 사항
- 반드시 Snowflake Data Clean Rooms 최신 버전으로 업데이트해야 해요.
- Snowsight 또는 Collaboration API에서 콜라보레이션을 보고 관리할 수 있어요. 어떤 방식을 쓰든 역할에 적절한 권한이 필요해요. 자세한 내용은 콜라보레이션, 리소스, 데이터에 대한 접근 관리를 참고하세요.
- 데이터 제공자(Data Provider)는 Snowflake Enterprise Edition을 사용해야 해요. 소유자와 분석 실행자는 Standard Edition을 사용할 수 있어요.
- Snowflake Standard Edition을 사용한다면 정책 적용(policy enforcement)이 포함된 데이터 클린룸을 통해 데이터를 공유할 수 없어요. 하지만 다른 콜라보레이터의 데이터 오퍼링에 접근하거나, 정책을 적용하거나 데이터를 공유하지 않고 자체 데이터 사용은 할 수 있어요.
- 결과를 다른 Snowflake 계정으로 활성화하려면 Snowflake Enterprise Edition을 사용해야 해요.
- 트라이얼 계정은 Snowflake Data Clean Rooms를 지원하지 않아요.
콜라보레이션의 역할과 리소스
콜라보레이션을 사용하는 방법을 이해하려면 먼저 콜라보레이션 역할과 콜라보레이션 리소스를 이해해야 해요.
콜라보레이션 역할
콜라보레이션에서 사용할 수 있는 역할은 다음과 같아요. 이 역할들은 콜라보레이터의 높은 수준의 능력을 정의해요.
- 소유자(Owner): 소유자는 콜라보레이션을 정의·생성·소유하고, 어떤 콜라보레이터를 초대할지와 그들의 콜라보레이션 역할을 정의해요. 소유자는 자동으로 분석 실행자나 데이터 제공자가 되지 않으며, 상승된 실행 권한도 없어요. 소유자의 주요 능력은 클린룸 생성, 콜라보레이션 역할 배정, 누가 누구와 데이터를 공유할지 결정, 클린룸 해체(teardown)예요. 콜라보레이션은 소유자가 한 명뿐이에요.
- 데이터 제공자(Data provider): 테이블과 뷰 같은 데이터 오퍼링을 콜라보레이션에 제공하고, 어떤 분석 실행자가 이를 사용할 수 있는지 지정해요. 즉 콜라보레이션 스펙에 지정된 대로 계정 A는 계정 B와 C의 데이터 제공자가 돼요.
- 분석 실행자(Analysis runner): 콜라보레이션 스펙이 허용하는 데이터 오퍼링에서 허용된 템플릿을 실행해요.
이 역할들은 콜라보레이션을 만드는 데 사용되는 콜라보레이션 스펙에 지정돼요.
한 콜라보레이터는 여러 콜라보레이션 역할을 맡을 수 있고, (소유자 역할을 제외하고) 한 콜라보레이션 역할을 여러 콜라보레이터에 배정할 수 있어요.
더 알아보기
콜라보레이션 리소스
콜라보레이션은 데이터 오퍼링, 템플릿, 코드 스펙을 포함한 리소스를 담아요. 모든 리소스와 콜라보레이션 자체는 YAML 스펙으로 정의돼요.
콜라보레이션은 다음 유형의 리소스를 지원해요:
- 템플릿(Template): 분석 실행자가 콜라보레이션에서 실행할 수 있는 JinjaSQL 쿼리예요. 템플릿 유형에 따라 결과는 직접 전달되거나, 지정된 콜라보레이터의 Snowflake 계정으로 활성화(저장)될 수 있어요. 분석 실행자는 실행 시 템플릿에 값을 전달해, 컬럼 이름, WHERE 절 및 기타 쿼리 요소에 쓰이는 템플릿 변수를 대체할 수 있어요.
- 데이터 오퍼링(Data offering): 데이터 제공자가 특정 분석 실행자와 공유하는 하나 이상의 테이블 패키지예요. 데이터 오퍼링은 원본 데이터의 실시간 뷰(스냅샷이 아님)이며, 그 스펙은 어떤 컬럼이 노출되는지와 어떤 정책이 적용되는지를 제어해요.
- 코드 스펙(Code spec): 템플릿이 호출할 수 있는 커스텀 Python 함수 또는 프로시저 집합이에요. 코드 스펙을 사용하면 머신러닝 모델이나 커스텀 변환 같은 사용자 정의 로직으로 템플릿 기능을 확장할 수 있어요.
더 알아보기
클린룸 스펙 예시
다음은 두 참여자 alice(계정 corp1.acct123의 별칭)와 bob(계정 corp2.acctxyz의 별칭)이 있는 기본 클린룸의 YAML 스펙이에요. 이 스펙은 각 사용자에게 역할을 배정하고 두 데이터 오퍼링을 콜라보레이션에 링크해요.
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
이 간단한 콜라보레이션에는 다음 리소스와 콜라보레이션 역할이 포함돼요:
alice는 콜라보레이션 소유자이자 분석 실행자이며, 자신과bob의 데이터 제공자예요.bob은 분석 실행자이자alice의 데이터 제공자지만, 자신에게는 데이터 제공자가 아니에요.alice는template1을,bob은template2를 실행할 수 있어요.
이 콜라보레이션에 대해 주목할 다른 점 몇 가지:
alice와bob모두 새 템플릿을 추가하고 다른 콜라보레이터와 공유할 수 있어요.- 모든 데이터 제공자는 콜라보레이션이 만들어진 후에도 자신의 데이터 오퍼링 목록에서 데이터 오퍼링을 추가하거나 제거할 수 있어요.
- 소유자는 EDIT을 호출해(이것은 미리보기 기능) 콜라보레이션 생성 후 콜라보레이터를 추가·제거하고 콜라보레이션 역할을 변경하도록 요청할 수 있어요. 이 변경에는 영향받는 콜라보레이터의 승인이 필요해요. 예를 들어 소유자는 나중에
bob을 자신의 데이터 제공자로 만들도록 요청할 수 있어요.
기본 클린룸 콜라보레이션 워크플로
간단한 클린룸 콜라보레이션 시나리오는 다음과 같아요:
-
콜라보레이션 소유자는 선택적으로 콜라보레이션 초기 구성에 나타내고 싶은 템플릿이나 데이터 오퍼링을 등록해요.
-
소유자는 선택적으로 의도한 콜라보레이터들에게 콜라보레이션 초기 구성에 나타내고 싶은 템플릿이나 데이터 오퍼링을 등록하도록 요청해요. 그러면 콜라보레이터들은 등록한 항목의 리소스 ID를 알려줘요.
-
소유자는 콜라보레이션을 만들어요. 콜라보레이션 스펙은 콜라보레이터, 그들의 역할, 콜라보레이션 초기 상태에서 사용할 수 있어야 하는 리소스를 정의해요.
- 콜라보레이션에 다른 클라우드 호스팅 리전의 콜라보레이터가 포함된다면, 그들은 콜라보레이션을 검토하고 참여하기 전에 자신의 계정에서 크로스 클라우드 자동 이행을 활성화해야 해요.
- 콜라보레이션이 만들어지면 콜라보레이션 스펙의 모든 콜라보레이터에게 보이고 참여할 수 있게 돼요.
-
콜라보레이터들은 콜라보레이션을 검토하고 참여해요.
-
콜라보레이터들은 선택적으로 자신의 역할에 맞게 리소스를 콜라보레이션에 링크할 수 있어요. 데이터 제공자는 자신의 분석 실행자에게 데이터 오퍼링을 링크할 수 있고, 어떤 역할이든 템플릿을 추가해 다른 콜라보레이터와 공유하도록 요청할 수 있어요.
-
분석 실행자는 콜라보레이션에서 자신과 공유된 데이터 오퍼링을 사용해, 콜라보레이션에서 자신과 공유된 템플릿을 실행할 수 있어요. 분석 비용은 분석 실행자가 부담해요. 템플릿은 쿼리 결과를 응답으로 반환하거나 결과를 호출자 또는 다른 콜라보레이터에게 활성화할 수 있어요.
-
소유자는 나중에 EDIT을 호출해(이것은 미리보기 기능) 콜라보레이터를 추가·제거하고 콜라보레이션 역할을 변경하도록 요청할 수 있어요. 단, 영향받는 콜라보레이터의 승인이 필요해요.
더 알아보기
- 기본 양자(2-party) 콜라보레이션을 엔드 투 엔드 코드로 구현하는 방법 보기
- Data Clean Rooms 문서의 Use cases 섹션에서 추가 예시를 확인하세요.
콜라보레이션 만들기
적절한 권한이 있는 Snowflake Data Clean Rooms 사용자라면 누구나 클린룸을 만들 수 있어요. 클린룸은 모든 콜라보레이터와 콜라보레이션 내 상대적 역할, 그리고 콜라보레이션 초기 구성에 있는 리소스를 결정하는 YAML 스펙으로 정의돼요. (리소스 소유자가 참여해야 리소스를 사용할 수 있어요.) 콜라보레이션 생성 후 리소스를 추가하거나 제거할 수 있어요. 소유자는 EDIT을 호출해(이것은 미리보기 기능) 콜라보레이션 생성 후 콜라보레이터를 추가·제거하고 콜라보레이션 역할을 변경하도록 요청할 수도 있어요. 이 변경에는 영향받는 콜라보레이터의 승인이 필요해요.
콜라보레이션은 버전 관리되지 않아요. 콜라보레이션은 리소스 추가·제거로 변경될 수 있지만, 그 변경 사항은 추적되지 않아요.
더 알아보기
콜라보레이션에 리소스 추가하기
콜라보레이션은 템플릿, 데이터 오퍼링, 코드 스펙을 포함한 리소스에 접근할 수 있어요. 콜라보레이션에서 리소스를 사용하려면 먼저 콜라보레이션 클린룸 환경에 리소스를 등록한 뒤, 특정 콜라보레이션에 링크해야 해요:
- 등록(Registration) 은 계정 수준의 작업이에요. 리소스를 패키징해 클린룸 환경으로 복사하고, 해당 리소스를 참조하는 데 쓰이는 ID를 반환해요. 리소스는 계정의 기본 레지스트리 또는 계정의 누군가가 만든 커스텀 레지스트리에 등록돼요. 기본 레지스트리는 READ REGISTRY 권한이 있는 계정의 모든 콜라보레이터가 사용할 수 있고, 커스텀 레지스트리는 레지스트리 생성자가 접근을 제어할 수 있어요.
- 링크(Linking) 는 등록된 리소스를 특정 콜라보레이션과 공유해요. 더 구체적으로, 등록된 리소스를 특정 콜라보레이션의 특정 콜라보레이터 집합과 공유해요. 리소스는 콜라보레이션을 만드는 데 쓰이는 콜라보레이션 스펙에 추가하거나, 적절한 Collaboration API 프로시저를 호출해 콜라보레이션에 링크할 수 있어요.
리소스는 콜라보레이션 생성 시 또는 콜라보레이션 생성 후에 추가할 수 있어요.
콜라보레이션과 달리 리소스는 버전 관리돼요. 리소스의 새 버전이 이전 버전을 덮어쓰지 않아요. 리소스를 새 버전으로 교체하려면 콜라보레이션도 업데이트해 이전 버전을 제거(원한다면)하고 새 버전을 추가해야 해요.
리소스를 등록하는 계정은 콜라보레이터여야 하고, 등록한 리소스가 콜라보레이션에서 사용 가능해지기 전에 콜라보레이션에 참여해야 해요.
더 알아보기
콜라보레이션 참여하기
콜라보레이션은 콜라보레이션 스펙에 나열된 모든 콜라보레이터에게 보여요. 소유자를 포함한 모든 콜라보레이터는 콜라보레이션에 참여해야 해요. 소유자를 제외한 모든 콜라보레이터는 참여하기 전에 콜라보레이션을 검토해야 해요. 콜라보레이션을 검토하면 초대받은 쪽에 콜라보레이션 스펙이 공개돼요. 검토 후 초대받은 사람은 콜라보레이션에 참여할 수 있어요. 콜라보레이션에 제공하는 리소스가 사용 가능해지기 전에 콜라보레이션에 참여해야 해요.
콜라보레이션의 GET_STATUS를 호출해 참여 상태(invited, joining, joined)를 확인할 수 있어요. 리소스 링크, 콜라보레이션 참여, 결과 활성화 같은 대부분의 콜라보레이션 변경 작업은 비동기적이거나 다른 콜라보레이터에게 전파되는 데 시간이 걸릴 수 있으므로, 적절한 프로시저를 호출해 변경 상태를 확인해야 해요.
분석 실행
콜라보레이션에서 분석 실행자로 나열된 콜라보레이터는 콜라보레이션에서 자신에게 제공된 데이터 오퍼링에 대해 쿼리를 실행할 수 있어요.
콜라보레이션은 다음 유형의 분석을 지원해요:
- 템플릿 분석 쿼리: 분석 실행자는 콜라보레이션에서 자신에게 배정된 모든 템플릿을 실행하고 결과를 동기적으로 볼 수 있어요.
- 활성화 분석: 데이터 오퍼링, 콜라보레이션, 템플릿이 허용한다면 분석 실행자는 결과를 지정된 콜라보레이터의 Snowflake 계정으로 활성화(저장)할 수 있어요.
- 자유 형식 SQL 분석: 콜라보레이션과 데이터 오퍼링이 허용한다면 분석 실행자는 데이터 오퍼링의 데이터에 대해 SQL 쿼리를 직접 실행할 수 있어요. 자유 형식 SQL 쿼리를 참고하세요.
더 알아보기
콜라보레이션 편집
미리보기 기능 — 공개
모든 계정에서 사용할 수 있어요.
콜라보레이션 소유자는 콜라보레이션을 해체하고 다시 만드는 대신, 기존 콜라보레이션을 그 자리에서 편집하도록 요청할 수 있어요. 콜라보레이션을 편집하려면 소유자가 EDIT 프로시저에 콜라보레이션 스펙의 업데이트 버전을 제출해요. EDIT는 콜라보레이터를 추가·제거하고, 콜라보레이션 역할을 변경하고, 이미 등록된 템플릿을 공유·제거하고, 분석 실행자를 위해 이미 링크된 데이터 오퍼링을 링크·언링크할 수 있어요. 편집은 단일 업데이트 요청으로 적용되며, 변경이 적용되기 전에 영향받는 모든 콜라보레이터가 승인해야 해요.
더 알아보기
콜라보레이션 나가기 또는 삭제하기
언제든지 콜라보레이션에서 나갈 수 있어요. 단, 콜라보레이션 소유자는 나갈 수 없고 대신 모든 사람을 위해 콜라보레이션을 삭제해요.
- 소유자가 아닌 콜라보레이터는 LEAVE를 호출해 콜라보레이션에서 나가요. 그들이 제공한 데이터 오퍼링은 콜라보레이션에서 제거돼요. 나간 후에는 콜라보레이션에 다시 참여할 수 없어요.
- 콜라보레이션 소유자는 나갈 수 없어요. 소유권은 이전할 수 없어요. 소유자는 TEARDOWN을 호출해 모든 콜라보레이터를 위해 콜라보레이션을 삭제할 수 있어요.
콜라보레이션을 나가거나 삭제하는 것은 비동기적이에요. GET_STATUS를 호출해 상태를 모니터링하고, GET_STATUS가 LOCAL_DROP_PENDING 상태를 보여주면 LEAVE 또는 TEARDOWN을 다시 호출해야 해요.
콜라보레이션을 삭제해도 콜라보레이션에 링크된 리소스의 등록 상태에는 영향을 주지 않아요. 그 리소스들은 계속 사용하거나 새 콜라보레이션에 링크할 수 있어요.