Snowflake Data Clean Rooms: 외부 및 Iceberg 테이블

클린룸에서 외부 테이블과 Iceberg 테이블이 연결되어 있는 경우, 공동 작업자가 클린룸에서 민감한 정보를 추출할 수 있는 외부 호출이 발생할 수 있습니다. 따라서 상대방이 클린룸에서 이러한 오브젝트를 사용하려면 공급자와 컨슈머 모두가 동의해야 합니다.

클린룸에 외부 테이블과 Iceberg 테이블을 포함할 때의 제한 사항은 제한 사항 섹션을 참조하십시오.

웹 앱 클린룸

웹 앱에 생성 및 설치된 클린룸에 외부 테이블과 Iceberg 테이블이 포함되는 것을 제어하기 위해 공급자 및 컨슈머 관리자는 이러한 오브젝트를 명시적으로 허용하도록 클린룸 환경을 구성합니다.

  • 공급자가 컨슈머와 공유하는 클린룸의 경우, 컨슈머는 공급자가 명시적으로 공급자의 클린룸 환경에 대해 외부 테이블과 Iceberg 테이블을 포함시킬 수 없습니다.

  • 컨슈머의 경우, 클린룸 사용자는 클린룸 환경이 허용하지 않는 한 외부 테이블이나 Iceberg 테이블이 있는 클린룸을 설치할 수 없습니다. 컨슈머의 클린룸 환경이 이러한 오브젝트를 허용하더라도 이러한 유형의 테이블이 연결되어 클린룸을 설치하지 않기로 결정할 수 있는 경우 클린룸 사용자에게 경고가 표시됩니다.

외부 테이블과 Iceberg 테이블을 허용하도록 클린룸 환경을 구성하려면:

  1. 웹 앱에 로그인합니다.

  2. 다음 중 하나를 수행하십시오.

    • 관리되는 계정을 사용하는 경우 Admin » My Account 를 선택합니다.

    • Snowflake 계정을 사용하는 경우 Admin » Snowflake Admin 을 선택하고 ACCOUNTADMIN 역할이 있는 사용자로 Snowflake에 로그인합니다.

  3. External & Iceberg Tables 을 사용으로 전환합니다.

개발자 API 클린룸

개발자 APIs를 사용하여 생성 및 설치된 클린룸에서 외부 테이블과 Iceberg 테이블을 허용하는 것은 2단계 프로세스입니다.

  • 첫째, ACCOUNTADMIN 역할이 있는 사용자는 전체 클린룸 환경에서 이러한 유형의 테이블을 허용합니다.

  • 그런 다음 클린룸 사용자는 이러한 오브젝트를 특정 클린룸이 생성되거나 설치될 때 허용합니다.

클린룸 환경에서 외부 테이블 및 Iceberg 테이블 허용

공급자와 컨슈머의 계정 관리자는 개별 사용자가 클린룸에서 외부 테이블과 Iceberg 테이블을 허용하기 전에 클린룸 환경에서 해당 테이블을 명시적으로 허용해야 합니다.

클린룸 환경에서 외부 테이블과 Iceberg 테이블을 허용하려면 계정 관리자가 다음을 실행합니다.

USE ROLE ACCOUNTADMIN;

CALL samooha_by_snowflake_local_db.library.enable_external_tables_on_account();
Copy

특정 클린룸에서 외부 테이블 및 Iceberg 테이블 허용

클린룸을 생성하는 공급자와 설치하는 컨슈머는 모두 클린룸 내부에 외부 테이블과 Iceberg 테이블을 설치하도록 허용해야 합니다.

공급자:

클린룸에서 외부 테이블이나 Iceberg 테이블을 연결하기 전에 공급자는 providers.enable_external_tables_for_cleanroom 명령을 호출해야 합니다. 예를 들어, 공급자가 insights_cleanroom 클린룸에 Iceberg 테이블을 추가하려면 다음을 실행해야 합니다.

CALL samooha_by_snowflake_local_db.provider.enable_external_tables_for_cleanroom(
    'insights_cleanroom');
Copy
컨슈머:

컨슈머는 클린룸을 설치한 후 consumers.enable_external_tables_for_cleanroom 명령을 실행하여 공급자가 외부 테이블 또는 Iceberg 테이블을 포함하도록 승인할 수 있습니다. 예를 들어, 컨슈머가 Iceberg 테이블이 포함된 클린룸 overlap_cleanroom 을 설치한 경우 다음을 실행해야 합니다.

CALL samooha_by_snowflake_local_db.consumer.enable_external_tables_for_cleanroom(
    'overlap_cleanroom');
Copy

외부 테이블 또는 Iceberg 테이블 등록

다른 오브젝트와 마찬가지로 외부 테이블과 Iceberg 테이블은 연결하기 전에 등록해야 합니다. library.register_table_or_view 명령의 적절한 매개 변수를 사용하여 테이블 유형을 표시합니다.

외부 테이블

library.register_table_or_view 명령의 네 번째 매개 변수는 오브젝트가 외부 테이블인지 여부를 지정합니다. 예를 들어, samooha_sample_database.demo 스키마의 외부 테이블 my_ext_table 을 등록하려면 다음을 실행합니다.

CALL samooha_by_snowflake_local_db.library.register_table_or_view(
    ['SAMOOHA_SAMPLE_DATABASE.DEMO.MY_EXT_TABLE'],
    false,
    false,
    true,
    false);
Copy
Iceberg 테이블

library.register_table_or_view 명령의 세 번째 매개 변수는 오브젝트가 Iceberg 테이블인지 여부를 지정합니다. 예를 들어, samooha_sample_database.demo 스키마의 Iceberg 테이블 customers 를 등록하려면 다음을 실행합니다.

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

제한 사항

  • 관리되는 계정은 항상 외부 테이블을 사용하므로 공급자는 관리되는 계정과 클린룸을 공유할 때 외부 테이블과 Iceberg 테이블을 활성화해야 합니다.

  • 다른 리전의 공동 작업자는 외부 테이블과 클린룸의 Iceberg 테이블을 연결할 수 없습니다.

  • SQL Query 템플릿의 구성이 외부 테이블 또는 Iceberg 테이블에 집계 정책 또는 프로젝션 정책을 적용하는 경우 해당 템플릿으로 분석을 실행할 수 없습니다.