데이터 등록하기¶
이 항목에서는 Snowflake Data Clean Room 에 연결할 수 있도록 데이터를 등록하는 방법에 대해 설명합니다.
지원되는 오브젝트¶
다음 오브젝트 유형을 Clean Rooms에 연결할 수 있습니다.
테이블
동적 테이블
뷰
구체화된 뷰
보안 뷰. 보안 뷰의 소유자는 SAMOOHA_APP_ROLE 역할이어야 합니다.
참고
외부 및 Iceberg 테이블을 활성화해야 Clean Room에서 사용할 수 있습니다.
데이터 오브젝트 등록하기¶
사용자가 데이터를 Snowflake Data Clean Room 에 연결하기 전에 먼저 데이터를 등록 해야 합니다. 데이터를 등록하면 Clean Room 환경에서 데이터에 액세스하는 데 사용되는 SAMOOHA_APP_ROLE 에 오브젝트에 대한 USAGE 및 SELECT 권한이 부여됩니다. 데이터베이스나 스키마를 등록하면 모든 하위 오브젝트도 함께 등록됩니다. 오브젝트를 연결하려면 해당 오브젝트에 대한 MANAGE GRANTS 권한이 있어야 합니다.
Clean Room UI 또는 Clean Room API 를 사용하여 데이터베이스, 스키마 및 오브젝트를 등록할 수 있습니다. Clean Room UI 를 사용하는 것이 더 간단하지만 ACCOUNTADMIN 역할이 있어야 합니다. 개발자 API를 사용하면 ACCOUNTADMIN 역할을 사용하지 않고 OWNERSHIP 권한이 있는 오브젝트를 등록할 수 있습니다.
중요
데이터베이스 또는 스키마를 등록하면 등록 후 추가된 오브젝트는 등록되지 않습니다. 새 오브젝트를 개별적으로 등록하거나 Clean Room UI 를 사용하여 Admin > Snowflake Admin > Database Registration 으로 이동한 후 Resync 를 선택해야 합니다.
계정에 등록된 데이터만 연결할 수 있습니다. 즉, 공급자는 컨슈머가 등록한 데이터를 연결할 수 없고, 컨슈머는 공급자가 등록한 데이터를 연결할 수 없습니다. 데이터가 Clean Room에 연결되면, 링크 당사자의 설정(조인 및 열 정책 등)에 따라 Clean Room에 액세스할 수 있는 모든 사람이 데이터에 액세스할 수 있습니다.
Clean Room UI 를 사용하여 데이터베이스, 스키마 또는 오브젝트를 등록하려면 아래 단계를 따르십시오.
Clean Room UI 에 계정 관리자로 로그인한 후 아래 단계 중 하나를 수행합니다.
관리 계정을 사용하는 경우 Admin > My Account 를 선택합니다.
Snowflake 계정을 사용하는 경우 Admin > Snowflake Admin 을 선택하고 ACCOUNTADMIN 역할을 가진 사용자로 Snowflake에 로그인합니다.
Admin > Snowflake Admin 을 선택합니다.
Log in to Snowflake 를 선택하고 ACCOUNTADMIN 역할이 있는 사용자로 인증합니다.
계정에서 외부 또는 Iceberg 테이블을 사용하려면 External & Iceberg Tables 토글을 활성화합니다.
Access management for Snowflake objects 섹션에서 Edit 를 선택한 다음 이 계정의 사용자가 데이터를 연결할 수 있도록 데이터베이스, 스키마 또는 오브젝트를 선택합니다.
Save 를 선택합니다.
Clean Room API 를 사용하여 데이터베이스, 스키마 및 오브젝트를 프로그래밍 방식으로 등록합니다. 오브젝트를 등록하려면 해당 오브젝트에 대한 MANAGE GRANTS 권한이 필요합니다.
외부 및 Iceberg 테이블은 다른 오브젝트 유형과 다르게 등록됩니다.
오브젝트를 등록하거나 등록 취소하는 데 사용할 수 있는 프로시저는 다음과 같습니다.
오브젝트 타입 |
등록 |
등록 취소 |
---|---|---|
데이터베이스 |
|
|
스키마 |
|
|
관리되는 액세스 스키마 |
|
|
기타 지원되는 오브젝트 유형 |
|
|
예:
USE ROLE <ROLE-WITH-MANAGE-GRANTS-PRIVILEGE>
CALL samooha_by_snowflake_local_db.library.register_schema(['MY_DB.MY_SCHEMA']);
데이터 오브젝트 등록 취소하기¶
테이블이 Clean Room에 연결되면 제거할 수 없습니다. 그러나 계정에서 오브젝트의 등록을 취소하면 해당 계정의 모든 Clean Rooms에서 액세스할 수 없게 됩니다.
Clean Room 또는 계정에서 데이터를 제거하려면 단순히 기본 오브젝트만 삭제하지 마십시오. 삭제할 경우 Clean Room이 실패하게 됩니다. 대신 다음 기법 중 하나를 사용하여 오브젝트 등록을 취소하십시오.
계정에서 오브젝트의 등록을 취소할 때는 이 데이터를 사용하여 만든 모든 Clean Rooms도 업데이트해야 합니다.
삭제된 데이터에 종속된 모든 공동 작업자의 쿼리는 다음에 실행될 때 실패합니다.
계정에서 오브젝트 등록을 취소하려면 다음을 수행하십시오.
Clean Room UI 에 계정 관리자로 로그인한 후 아래 단계 중 하나를 수행합니다.
관리 계정을 사용하는 경우 Admin > My Account 를 선택합니다.
Snowflake 계정을 사용하는 경우 Admin > Snowflake Admin 을 선택하고 ACCOUNTADMIN 역할을 가진 사용자로 Snowflake에 로그인합니다.
Admin > Snowflake Admin 을 선택합니다.
Log in to Snowflake 를 선택하고 ACCOUNTADMIN 역할이 있는 사용자로 인증합니다.
계정에서 외부 또는 Iceberg 테이블을 사용하려면 External & Iceberg Tables 토글을 활성화합니다.
Access management for Snowflake objects 섹션에서 Edit 를 선택한 다음 데이터베이스, 스키마 또는 오브젝트를 선택 해제하여 이 계정의 사용자가 해당 데이터를 사용할 수 없도록 합니다.
Save 를 선택합니다.
이 데이터에 종속되어 생성한 모든 Clean Rooms를 업데이트합니다.
API 에서 적절한 프로시저를 호출하여 계정에서 오브젝트 등록을 취소합니다.
library.unregister_db
library.unregister_schema
library.unregister_managed_access_schema
library.unregister_objects
외부 테이블 및 Apache Iceberg™ 테이블 활성화하기¶
외부 테이블과 Iceberg 테이블을 Clean Room에 연결할 수 있도록 하려면 먼저 외부 테이블과 Iceberg 테이블을 사용할 수 있도록 계정을 구성해야 합니다. 외부 테이블과 Iceberg 테이블을 활성화한 후에는 다른 테이블과 동일하게 등록하고 연결하여 사용할 수 있습니다.
Clean Room UI 또는 Clean Room API 를 사용하여 Clean Room을 관리하느냐에 따라 외부 테이블 및 Iceberg 테이블을 활성화하는 프로세스가 달라집니다.
외부 및 Iceberg 테이블 요구 사항¶
공급자 계정과 컨슈머 계정 모두 외부 테이블 및 Iceberg 테이블을 활성화해야 외부 또는 Iceberg 테이블에 연결되는 Clean Room을 완전히 사용할 수 있습니다.
공급자는 관리되는 계정과 Clean Room을 공유할 때 항상 외부 테이블 및 Iceberg 테이블을 활성화해야 합니다. 관리되는 계정은 항상 외부 테이블을 사용하기 때문입니다.
공급자와 컨슈머가 서로 다른 리전에 있는 경우, 컨슈머만 외부 테이블 또는 Iceberg 테이블을 Clean Room에 연결할 수 있습니다.
Clean Room UI 는 계정 수준에서 외부 테이블과 Iceberg 테이블을 제어합니다.
경고
컨슈머 계정에서 이 기능을 활성화하지 않은 경우, 컨슈머는 외부 또는 Iceberg 테이블에 연결된 모든 Clean Rooms에 참여할 수 없거나 두 유형의 테이블에 연결된 이미 참여한 Clean Rooms를 편집할 수 없게 됩니다(실행은 가능).
공급자 계정과 컨슈머 계정 모두의 DCR 계정 관리자는 다음 단계를 수행해야 합니다.
Clean Room UI 에 계정 관리자로 로그인한 후 아래 단계 중 하나를 수행합니다.
관리 계정을 사용하는 경우 Admin > My Account 를 선택합니다.
Snowflake 계정을 사용하는 경우 Admin > Snowflake Admin 을 선택하고 ACCOUNTADMIN 역할을 가진 사용자로 Snowflake에 로그인합니다.
External & Iceberg Tables 토글을 활성화합니다. 그러면 UI 로 생성된 Clean Rooms와 API 로 생성된 Clean Rooms 모두에서 이 기능을 사용할 수 있습니다.
이제 관리자의 Access management for Snowflake objects 패널에서 외부 테이블과 Iceberg 테이블을 선택할 수 있으며, 다른 오브젝트와 마찬가지로 Clean Rooms에서 사용할 수 있도록 선택할 수 있습니다.
코드에서는 외부 테이블과 Iceberg 테이블을 모두 계정 수준은 물론이고 외부 테이블이나 Iceberg 테이블에 연결되는 각 Clean Room에 대해서도 활성화해야 합니다. Clean Room UI 에서 외부 테이블 및 Iceberg 테이블을 활성화한 경우, 코드에서 활성화할 필요가 없습니다(여기에 나열된 단계를 수행할 필요가 없음).
경고
한 계정만 해당 계정 또는 Clean Room에 이 기능을 활성화하고 외부 또는 Iceberg 테이블에 연결한 경우, 다른 계정은 기존 템플릿을 실행할 수 있지만 해당 계정과 Clean Room 모두에서 외부 및 Iceberg 테이블이 허용될 때까지 어떤 방식으로도 Clean Room을 수정할 수 없습니다.
코드에서 새로운 Clean Rooms에 외부 테이블 또는 Iceberg 테이블을 활성화하고 사용하려면 다음을 수행하십시오.
ACCOUNTADMIN 역할을 가진 사용자는 먼저 공급자 및 컨슈머 계정 모두에서 전체 Clean Room 환경에 대해 외부 테이블 및 Iceberg 테이블을 사용하도록 설정합니다.
USE ROLE ACCOUNTADMIN; CALL samooha_by_snowflake_local_db.library.enable_external_tables_on_account();
참고
Clean Room UI 로 생성된 기존 Clean Rooms는 이 메서드의 영향을 받지 않습니다. Clean Room UI 를 사용하여 만든 기존 Clean Rooms를 업데이트하려면 다음 단계와 같이 코드에서 개별적으로 Clean Room을 활성화하거나, 모든 기존 Clean Room에 해당 기능을 활성화하는 Clean Room UI 를 사용하여 Clean Room을 활성화해야 합니다.
공급자 는 Clean Room에 외부 테이블과 Iceberg 테이블을 사용할 수 있도록 지원합니다. 이렇게 하면 보안 검사가 트리거되고 성공하면 새 Clean Room 버전이 생성되므로 기본 릴리스 지시문을 업데이트해야 합니다.
USE ROLE SAMOOHA_APP_ROLE; CALL samooha_by_snowflake_local_db.provider.enable_external_tables_for_cleanroom( $cleanroom_name); -- Call until scan is complete. call samooha_by_snowflake_local_db.provider.view_cleanroom_scan_status($cleanroom_name); -- When scan is successful, update with patch version mentioned in return value from enable_external_tables_for_cleanroom. call samooha_by_snowflake_local_db.provider.set_default_release_directive($cleanroom_name, 'V1_0', '<PATCH_VERSION>');
컨슈머 는 동일한 Clean Room에서 외부 테이블과 Iceberg 테이블을 사용할 수 있어야 합니다.
USE ROLE SAMOOHA_APP_ROLE; CALL samooha_by_snowflake_local_db.consumer.enable_external_tables_for_cleanroom( $cleanroom_name);
외부 테이블과 Iceberg 테이블을 Clean Room에 활성화한 후 공동 작업자는 다른 테이블과 동일한 방식으로 이러한 테이블을 등록하고 연결할 수 있습니다.