Snowflake Data Clean Rooms: 컨슈머 API 참조 가이드

이 페이지에서는 Clean Rooms API 컨슈머가 Clean Rooms를 관리하기 위해 사용하는 프로시저에 대해 설명합니다. 코딩 설정 지침은 코딩 설정 섹션을 참조하십시오.

역할 액세스 관리하기

consumer.grant_run_on_cleanrooms_to_role

설명: 지정된 역할에 지정된 Clean Rooms에서 프로시저의 하위 세트를 실행할 수 있는 권한을 부여합니다. Clean Rooms는 이 계정으로 생성 하는 것이 아니라 이 계정에 설치 해야 합니다. (즉, 귀하가 컨슈머인 Clean Rooms만 해당됩니다.)

Clean Rooms에 제한적인 사용 권한을 부여하려면 SAMOOHA_APP_ROLE 대신 사용자에게 지정된 역할을 부여하십시오. 역할 액세스에 대해 자세히 알아보십시오.

여기에 지정된 역할을 사용하여 다음 프로시저를 실행할 수 있습니다.

  • CONSUMER.VIEW_ADDED_TEMPLATES

  • CONSUMER.VIEW_ADDED_TEMPLATE_CHAINS

  • CONSUMER.GET_ARGUMENTS_FROM_TEMPLATE

  • CONSUMER.VIEW_COLUMN_POLICY

  • CONSUMER.VIEW_CONSUMER_DATASETS

  • CONSUMER.VIEW_JOIN_POLICY

  • CONSUMER.VIEW_PROVIDER_COLUMN_POLICY

  • CONSUMER.VIEW_PROVIDER_DATASETS

  • CONSUMER.VIEW_PROVIDER_JOIN_POLICY

  • CONSUMER.VIEW_REMAINING_PRIVACY_BUDGET

  • CONSUMER.RUN_ANALYSIS

  • CONSUMER.VIEW_PROVIDER_ACTIVATION_POLICY

  • CONSUMER.VIEW_ACTIVATION_POLICY

  • CONSUMER.RUN_ACTIVATION

인자:

  • cleanroom_names(문자열 배열) - 지정된 역할에 대한 제한된 액세스 권한을 부여할 모든 Clean Rooms의 이름입니다.

  • run_role_name(문자열) - 지정된 Clean Rooms에 대한 권한이 제한된 역할의 이름입니다. 이 프로시저를 호출하기 전에 역할을 만들어야 합니다.

반환: (string) - 성공 또는 실패 메시지.

예:

CREATE ROLE MARKETING_ANALYST_ROLE;
CALL samooha_by_snowflake_local_db.consumer.grant_run_on_cleanrooms_to_role(
  ['overlap_cleanroom', 'market_share_cleanroom'],
  'MARKETING_ANALYST_ROLE'
);
Copy

consumer.revoke_run_on_cleanrooms_from_role

설명: 지정된 Clean Rooms에서 지정된 역할의 권한을 취소합니다. 사용자가 취소되지 않은 역할에 대한 액세스 권한이 있거나 SAMOOHA_APP_ROLE 을 가지고 있는 경우 지정된 Clean Rooms에서 여전히 Clean Rooms 프로시저를 실행할 수 있습니다.

인자:

  • cleanroom_names(문자열 배열) - 이 계정에 있는 하나 이상의 Clean Rooms 이름입니다.

  • run_role_name(문자열) - 이 계정에서 지정된 Clean Rooms에 대한 권한이 더 이상 제한되지 않아야 하는 역할의 이름입니다.

반환: (string) - 성공 또는 실패 메시지.

예:

CALL samooha_by_snowflake_local_db.consumer.revoke_run_on_cleanrooms_from_role(
  ['overlap_cleanroom', 'market_share_cleanroom'],
  'TEMP_USERS_ROLE'
);
Copy

클린룸 설치

다음 명령을 통해 공급자가 공유한 클린룸을 설치합니다.

consumer.install_cleanroom

설명: 지정한 공급자가 만든 Clean Room을 설치(참여)합니다. 이 프로시저를 여러 번 호출하면 매번 기존 Clean Room이 지워지며, 두 번째 설치가 완료되기 전에 중단하면 Clean Room이 손상되므로 Clean Room을 사용 가능하게 하려면 이 프로시저를 완료해야 합니다.

인자:

  • cleanroom_name(문자열) - 설치할 Clean Room의 이름입니다.

  • provider_account_locator(문자열) - 이 Clean Room을 생성한 공급자의 계정 로케이터입니다.

반환: (문자열) 성공 메시지.

:

call samooha_by_snowflake_local_db.consumer.install_cleanroom($cleanroom_name, $provider_locator);
Copy

consumer.is_enabled

설명: 클린룸이 설치되면 공급자 측에서 설정을 완료하고 활성화하는 데 약 1분이 걸립니다. 이 함수를 사용하면 사용자가 클린룸의 상태를 확인하고, 활성화되어 있는지 여부를 확인할 수 있습니다. 일반적으로 클린룸을 설치한 후 약 1분 후에 플래그가 True로 전환됩니다.

인자: cleanroom_name (string)

반환: 활성화됨 (boolean)

:

call samooha_by_snowflake_local_db.consumer.is_enabled($cleanroom_name);
Copy

consumer.uninstall_cleanroom

설명: 컨슈머 계정에서 Clean Room을 제거합니다. 이렇게 하면 공유 Clean Room 데이터베이스를 포함하여 Clean Room과 관련된 모든 데이터베이스가 제거됩니다. Clean Room은 언제든지 consumer.install_cleanroom 을 사용하여 다시 설치할 수 있습니다.

인자: cleanroom_name (string)

반환: 성공 메시지 (string)

:

call samooha_by_snowflake_local_db.consumer.uninstall_cleanroom($cleanroom_name);
Copy

클라우드 간 협업

다른 클라우드 리전에 생성된 Clean Room을 설치합니다. 자세히 알아보십시오.

library.enable_laf_on_account

설명: 현재 계정에서 클라우드 간 자동 복제를 사용하도록 설정합니다. ACCOUNTADMIN 역할이 필요합니다.

인자: 없음

반환: (문자열) 성공 메시지.

예:

USE ROLE ACCOUNTADMIN;
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.library.enable_laf_on_account();
Copy

consumer.is_laf_enabled_for_cleanroom

설명: 이 Clean Room에 대해 클라우드 간 자동 복제가 활성화되었는지 여부를 설명합니다. 클라우드 간 자동 복제는 계정 관리자가 구성해야 합니다.

인자:

  • cleanroom_name (string) - 클린룸의 이름입니다.

반환: 이 Clean Room에 대해 클라우드 간 자동 복제가 활성화되었는지 여부.

예:

CALL samooha_by_snowflake_local_db.consumer.is_laf_enabled_for_cleanroom($cleanroom_name);
Copy

consumer.request_laf_cleanroom

설명: 다른 클라우드 리전에 생성된 Clean Room을 설치하기 위한 전제 조건을 설정합니다. 이 프로시저를 호출하기 전에 consumer.install_cleanroom 을 호출하면 실패합니다. 이 프로시저는 호출할 때마다 현재 상태를 반환합니다. 반환 상태가 FULFILLED 가 될 때까지 주기적으로 호출을 계속한 다음 consumer.install_cleanroom 을 호출합니다. 상태가 FULFILLED 에 도달할 때까지 최대 10분이 소요될 수 있습니다.

인자:

  • cleanroom_name(문자열) - 설치할 리전 간 Clean Room의 이름입니다.

  • provider_locator(문자열) - 이 Clean Room을 만든 공급자의 계정 로케이터입니다.

반환: (문자열) 요청의 상태 메시지. 상태가 FULFILLED 가 될 때까지 계속 호출합니다.

예:

CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.consumer.request_laf_cleanroom(
  $cleanroom_name,$provider_locator);
Copy

consumer.setup_cleanroom_request_share_for_laf

설명: 특정 Clean Room에 대해 지정된 공급자와 클라우드 간 요청 공유를 활성화합니다. 이는 리전 간 Clean Rooms가 요청 로그, 컨슈머 템플릿 요청, 공급자 실행 분석을 포함한 전체 기능을 갖추기 위해 필요합니다.

인자:

반환: (문자열) 성공 메시지.

예:

CALL samooha_by_snowflake_local_db.consumer.setup_cleanroom_request_share_for_laf(
      $cleanroom_name, $provider_account_name);
Copy

consumer.setup_activation_share_to_laf_consumer

설명: 서로 다른 클라우드 리전에 있는 공급자와 컨슈머 간에 공급자 활성화를 설정합니다.

인자:

반환: (문자열) 성공 메시지.

예:

CALL samooha_by_snowflake_local_db.consumer.setup_activation_share_to_laf_consumer('org1.locator1,org2.locator2');
Copy

공급자 실행 분석

공급자 실행 분석에 대해 자세히 알아보십시오.

library.is_provider_run_enabled

설명: 이 Clean Room에서 공급자 실행 분석을 허용하는지 확인합니다. 참고: 공급자가 이 Clean Room에서 분석을 실행하려면 먼저 consumer.enable_templates_for_provider_run 을 호출하여 명시적인 승인을 받아야 합니다.

인자: cleanroom_name (string)

반환: 활성화된 메시지 (string)

:

call samooha_by_snowflake_local_db.library.is_provider_run_enabled($cleanroom_name)
Copy

consumer.enable_templates_for_provider_run

설명: 공급자에게 요청된 Clean Room에서 분석을 실행할 수 있는 권한을 부여합니다. 이는 공급자가 provider.enable_provider_run_analysis 를 호출하여 Clean Room에서 공급자 실행 분석을 활성화한 후에 호출됩니다. consumer.enable_templates_for_rovider_run 은 공급자에게 지정된 Clean Room에서 지정된 템플릿으로 원하는 횟수만큼 분석을 실행할 수 있는 권한을 부여합니다.

인자:

  • cleanroom_name(문자열) - 공급자가 분석을 실행할 수 있는 Clean Room의 이름입니다.

  • template_names(문자열 배열) - 공급자가 실행할 수 있는 Clean Room에 있는 하나 이상의 템플릿 이름 배열입니다.

  • enable_differential_privacy(부울) - TRUE 인 경우 template_names 에 나열된 모든 템플릿에 대해 차등 개인정보 보호를 활성화합니다. 클린룸 자체에 차등 개인정보 보호가 활성화된 경우에만 이러한 템플릿에 대해 차등 개인정보 보호를 활성화할 수 있습니다. 클린룸의 차등 개인정보 보호 상태는 consumer.is_dp_enabled 에서 확인할 수 있습니다. consumer.set_privacy_settings 을 호출하여 개인정보 설정을 사용자 지정할 수 있습니다. 자세히 알아보십시오.

  • template_configuration(오브젝트, 선택 사항) - 각 템플릿에 대한 추가 설정을 지정하는 선택적 오브젝트입니다. 이 오브젝트는 키-값 페어를 포함하며, 여기서 키는 템플릿 이름( template_names)이고 값은 다음 속성을 가진 오브젝트입니다.

    • warehouse_type (문자열) - 공급자가 이 템플릿과 함께 사용할 수 있는 허용된 웨어하우스 유형입니다. 허용되는 값은 WAREHOUSE_TYPE 에 정의된 값입니다.

    • warehouse_size (문자열 배열) - 이 웨어하우스 유형 및 템플릿과 함께 사용할 수 있는 하나 이상의 허용된 웨어하우스 크기입니다. 허용되는 값은 WAREHOUSE_SIZE 에 정의된 값입니다.

반환: (string) 성공 또는 실패 메시지.

예제:

-- Simple example
CALL samooha_by_snowflake_local_db.consumer.enable_templates_for_provider_run($cleanroom_name, ['prod_overlap_analysis'], FALSE);

-- Specify warehouse types that the provider can request for each template.
call samooha_by_snowflake_local_db.CONSUMER.enable_templates_for_provider_run(
  $cleanroom_name,
  [$template1, $template2],
  TRUE,
  {
    $template1: {'warehouse_type': 'STANDARD', 'warehouse_size': ['MEDIUM', 'LARGE']},
    $template2: {'warehouse_type': 'SNOWPARK-OPTIMIZED', 'warehouse_size': ['MEDIUM', 'XLARGE']},
    $template3: {'warehouse_type': 'STANDARD', 'warehouse_size': ['MEDIUM', 'XLARGE']} 
  });
Copy

다중 공급자 분석

이러한 프로시저를 통해 다중 공급자 분석 을 활성화합니다.

consumer.prepare_multiprovider_flow

설명: 지정된 Clean Rooms의 공급자에게 다중 공급자 쿼리를 실행하라는 요청을 보냅니다. 이 프로시저는 실제로 요청을 실행하는 것이 아니라 consumer.execute_multiprovider_flow 를 호출하여 공급자에게 향후 이 요청을 실행할 권한을 요청할 뿐입니다.

공급자가 승인하면 컨슈머는 consumer.execute_multiprovider_flow 를 호출하여 원하는 만큼 쿼리를 실행할 수 있습니다(구성된 차등 개인정보 보호 설정에 따라 다름). prepare_multiprovider_flow 를 새 값으로 호출한 후 이전에 승인된 쿼리를 다시 실행하려는 경우, 여전히 정확한 이전 쿼리로 prepare_multiprovider_flow 를 호출해야 하지만 consumer.execute_multiprovider_flow 를 실행하기 전에 공급자의 승인을 기다릴 필요는 없습니다.

요청은 4시간 동안 유효하며, 그 이후에는 요청이 큐에서 제거됩니다.

인자:

  • cleanroom_names(문자열 배열) - 컨슈머 계정의 Clean Room 이름으로 구성된 배열입니다. 이러한 Clean Rooms는 반드시 설치해야 합니다.

  • template_name(문자열) - cleanroom_names 에 나열된 각 Clean Rooms에서 실행할 템플릿의 이름입니다. 이는 Clean Room 공급자가 추가한 Snowflake 제공 템플릿이거나 이전에 consumer.create_template_request 를 호출하여 Clean Room에 제출한 사용자 지정 템플릿일 수 있습니다. 두 경우 모두 Clean Room 공급자에게 요청을 제출하려면 템플릿이 Clean Room에 이미 있어야 합니다.

  • 인자(오브젝트) - 템플릿을 채우는 데 사용되는 다음 필드가 있는 오브젝트입니다.

    • source_table (문자열 배열) - 템플릿에서 사용 가능한 source_table 배열을 채우는 데 사용되는 테이블 이름의 배열입니다. 각 테이블 이름의 구문은 cleanroom_name.db.schema.table 입니다. 각 공급자는 요청에 나열된 자신의 Clean Room 테이블만 볼 수 있습니다.

    • my_table (문자열 배열) - 템플릿에서 사용 가능한 my_table 배열을 채우는 데 사용되는 자체 데이터의 테이블 이름 배열입니다. consumer.run_analysisconsumer_tables 인자에 전달된 구문과 동일한 구문을 사용합니다.

    • 기타 템플릿 변수 - 템플릿에 필요한 모든 값을 키-값 페어로 전달합니다.

반환: (문자열) consumer.execute_multiprovider_flow 에 전달하기 위한 요청 ID.

예:

CALL samooha_by_snowflake_local_db.consumer.prepare_multiprovider_flow(
    [$cleanroom_name_1, $cleanroom_name_2],
    'prod_aggregate_data',
    object_construct(
        'source_table', [
            CONCAT($cleanroom_name_1, '.SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'), 
            CONCAT($cleanroom_name_2, '.SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS')
        ],
        'my_table', ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']),
        'hem_col', ['p1.HASHED_EMAIL', 'p2.HASHED_EMAIL'],
        'dimensions', ['p1.STATUS', 'p2.STATUS'],
        'consumer_join_col', 'HASHED_EMAIL'
    )
);
Copy

consumer.execute_multiprovider_flow

설명: 컨슈머가 consumer.prepare_multiprovider_flow 에 제출한 가장 최근 쿼리를 실행합니다. 프로시저는 공급자가 쿼리를 승인한 각 지정된 Clean Room에서 쿼리를 실행하고 모든 쿼리 결과의 합집합을 반환합니다. 이 프로시저를 실행해야만 공급자가 쿼리를 승인했는지 여부를 알 수 있습니다.

인자:

  • cleanroom_names(문자열 배열) - 준비된 쿼리를 실행할 Clean Room 이름의 배열입니다. 이 배열은 쿼리 요청의 전체 Clean Rooms 목록과 일치해야 합니다.

  • request_id(문자열, 선택 사항) - prepare_multiprovider_flow 에서 반환한 ID 를 요청합니다.

반환: (테이블) 승인된 모든 Clean Rooms의 결과 합집합. 공급자가 이 컨슈머의 쿼리를 승인한 적이 없는 경우 쿼리는 실패합니다. 그러나 공급자가 이 컨슈머로부터 가장 최근 쿼리가 아닌 다른 쿼리를 승인한 경우 프로시저는 빈 결과 세트를 반환합니다.

예:

CALL samooha_by_snowflake_local_db.consumer.execute_multiprovider_flow([$cleanroom1, $cleanroom2], $request_id);
Copy

데이터 등록 및 등록 취소

다음 명령을 사용하여 데이터베이스, 스키마, 오브젝트를 등록하고 등록을 취소합니다. 테이블과 뷰는 클린룸에 연결하기 전에 등록되어야 합니다. 데이터베이스나 스키마를 등록하면 해당 데이터베이스나 스키마에 있는 모든 오브젝트가 등록됩니다.

consumer.register_db

설명: 클린룸에 데이터베이스를 추가하면 데이터베이스의 모든 데이터 세트를 연결할 수 있습니다. 이것이 호출되지 않으면 samooha_app_role에 개별적으로 권한을 부여해야 합니다.

인자: db_name (string)

반환: 성공 메시지 (string)

:

USE ROLE <ROLE_WITH_MANAGE GRANTS>;

call samooha_by_snowflake_local_db.consumer.register_db('SAMOOHA_SAMPLE_DATABASE');
Copy

library.register_schema

설명: register_db 와 유사하지만, 스키마 수준에서 작동합니다. 정규화된 스키마 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여를 선택하면 사용자가 스키마의 오브젝트를 클린룸에 연결할 수 있습니다.

관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)를 등록하려면 library.register_managed_access_schema 를 대신 사용합니다.

인자: schema_name (array)

반환: 성공 메시지 (string)

:

USE ROLE <ROLE_WITH_MANAGE GRANTS>;

call samooha_by_snowflake_local_db.library.register_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
Copy

library.register_managed_access_schema

설명: register_schema 와 유사하지만, WITH MANAGED ACCESS 매개 변수를 사용하여 생성한 스키마를 등록합니다. 정규화된 스키마 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여를 선택하면 사용자가 스키마의 오브젝트를 클린룸에 연결할 수 있습니다.

인자: schema_name (array)

반환: 성공 메시지 (string)

:

USE ROLE <ROLE_WITH_MANAGE GRANTS>;

call samooha_by_snowflake_local_db.library.register_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
Copy

library.register_objects

설명: 클린룸에 모든 유형의 테이블 및 뷰에 대한 액세스 권한을 부여하여 consumer.link_datasets 를 호출하여 클린룸에 연결할 수 있도록 합니다. library.register_schema, library.register_managed_access_schema 또는 consumer.register_db 를 호출하여 더 광범위한 오브젝트 그룹을 등록할 수 있습니다.

인자:

  • object_names (array) - 정규화된 오브젝트 이름의 배열입니다. 그런 다음 이러한 오브젝트를 클린룸에 연결할 수 있습니다.

반환: 성공 메시지 (string)

테이블과 뷰를 등록하려면 다음을 수행합니다.

USE ROLE <ROLE_WITH_MANAGE GRANTS>;

call samooha_by_snowflake_local_db.library.register_objects(
    ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS','SAMOOHA_SAMPLE_DATABASE.INFORMATION_SCHEMA.FIELDS']);
Copy

library.enable_external_tables_on_account

설명: 이 계정의 모든 Clean Rooms에서 Iceberg 또는 외부 테이블을 사용하도록 설정합니다. Iceberg 또는 외부 테이블을 어느 한 계정으로 연결할 수 있도록 하려면 공급자 및 컨슈머 계정에서 모두 ACCOUNTADMIN 으로 호출해야 합니다. 이 기능을 이 계정의 특정 Clean Rooms로 제한하려면 enable_external_tables_for_cleanroom 을 대신 호출하십시오.

인자: 없음

반환: (string) 성공 또는 실패 메시지.

예:

USE ROLE ACCOUNTADMIN;

CALL samooha_by_snowflake_local_db.library.enable_external_tables_on_account();
Copy

consumer.enable_external_tables_for_cleanroom

설명: 컨슈머가 이 계정의 지정된 Clean Room에서 Iceberg 또는 외부 테이블을 연결할 수 있도록 설정합니다. 이 계정의 모든 Clean Rooms에 대해 Iceberg 및 외부 테이블을 허용하려면 enable_external_tables_on_account 를 대신 호출하십시오.

인자:

  • cleanroom_name(문자열) - 공급자가 Iceberg 또는 외부 테이블을 연결할 수 있는 Clean Room의 이름입니다.

반환: (string) 성공 또는 실패 메시지. 성공하면 보안 검사를 트리거하고 보안 검사에 성공할 경우 생성될 패치 번호도 제공합니다.

예:

CALL samooha_by_snowflake_local_db.provider.enable_external_tables_for_cleanroom(
    $cleanroom_name);
Copy

library.register_table_or_view – 사용 중단됨

주의

이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.register_objects를 사용하십시오.

설명: 모든 유형의 테이블과 뷰를 등록합니다.

인자: object_names (array), is_view (boolean), is_iceberg (boolean), is_external (boolean), is_under_managed_access_schema (boolean)

출력: success message (string)

테이블을 등록하려면:

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

Iceberg 테이블을 등록하려면:

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

library.register_table – 사용 중단됨

주의

이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.register_objects를 사용하십시오.

설명: register_db 와 유사하지만 테이블 수준에서 작동합니다. 정규화된 테이블 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여가 이루어지면 사용자가 테이블을 클린룸에 연결할 수 있습니다.

관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)에 테이블을 등록하려면 대신 library.register_managed_access_table 을 사용합니다.

인자: table_name (array)

반환: 성공 메시지 (string)

:

call samooha_by_snowflake_local_db.library.register_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.register_managed_access_table – 사용 중단됨

주의

이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.register_objects를 사용하십시오.

설명: register_table 과 유사하지만, WITH MANAGED ACCESS 매개 변수로 생성된 스키마에 테이블을 등록합니다. 정규화된 테이블 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여가 이루어지면 사용자가 테이블을 클린룸에 연결할 수 있습니다.

인자: table_name (array)

반환: 성공 메시지 (string)

:

call samooha_by_snowflake_local_db.library.register_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.register_view – 사용 중단됨

주의

이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.register_objects를 사용하십시오.

설명: register_db 와 유사하지만, 뷰 수준에서 작동합니다. 정규화된 뷰 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여를 선택하면 사용자가 뷰를 클린룸에 연결할 수 있습니다.

관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 만든 스키마)에 보기를 등록하려면 대신 library.register_managed_access_view 를 사용합니다.

인자: view_name (array)

반환: 성공 메시지 (string)

:

call samooha_by_snowflake_local_db.library.register_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.register_managed_access_view – 사용 중단됨

주의

이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.register_objects를 사용하십시오.

설명: register_view 와 유사하지만, WITH MANAGED ACCESS 매개 변수로 생성된 스키마에 뷰를 등록합니다. 정규화된 뷰 이름을 나타내는 배열 또는 문자열을 전달하고 SAMOOHA_APP_ROLE 역할에 대한 권한 부여를 선택하면 사용자가 뷰를 클린룸에 연결할 수 있습니다.

인자: view_name (array)

반환: 성공 메시지 (string)

:

call samooha_by_snowflake_local_db.library.register_managed_access_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.unregister_db

설명: register_db 프로시저를 되돌리고 SAMOOHA_APP_ROLE 역할 및 Snowflake Data Clean Room 기본 애플리케이션에 부여된 데이터베이스 수준 부여를 제거합니다. 이렇게 하면 UI 드롭다운 요소에서 모든 데이터베이스도 제거됩니다.

인자: db_name (string)

반환: 성공 메시지 (string)

:

USE ROLE <ROLE_WITH_MANAGE GRANTS>;

call samooha_by_snowflake_local_db.library.unregister_db('SAMOOHA_SAMPLE_DATABASE');
Copy

library.unregister_schema

설명: 스키마의 등록을 취소하여 사용자가 해당 테이블과 뷰를 클린룸에 연결하는 것을 방지합니다.

관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)를 등록 해지하려면 library.unregister_managed_access_schema 를 대신 사용합니다.

인자: schema_name (array)

반환: 성공 메시지 (string)

:

USE ROLE <ROLE_WITH_MANAGE GRANTS>;

call samooha_by_snowflake_local_db.library.unregister_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
Copy

library.unregister_managed_access_schema

설명: unregister_schema 와 유사하지만, WITH MANAGED ACCESS 매개 변수를 사용하여 생성한 스키마를 등록 취소합니다.

인자: schema_name (array)

반환: 성공 메시지 (string)

:

call samooha_by_snowflake_local_db.library.unregister_managed_access_schema(['SAMOOHA_SAMPLE_DATABASE.DEMO']);
Copy

library.unregister_objects

설명: 모든 유형의 테이블 및 뷰에 대한 클린룸 액세스를 취소합니다. 이 계정으로 관리되는 모든 클린룸의 사용자는 더 이상 오브젝트를 사용할 수 없게 됩니다.

인자:

  • object_names (array) - 액세스를 취소해야 하는 정규화된 오브젝트 이름의 배열입니다.

반환: 성공 메시지 (string)

테이블 및 뷰 등록을 취소하려면 다음을 수행합니다.

USE ROLE <ROLE_WITH_MANAGE GRANTS>;

call samooha_by_snowflake_local_db.library.unregister_objects(
    ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS','SAMOOHA_SAMPLE_DATABASE.INFORMATION_SCHEMA.FIELDS']);
Copy

library.unregister_table_or_view – 사용 중단됨

주의

이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.unregister_objects를 사용하십시오.

설명: 모든 유형의 테이블과 뷰를 등록 취소합니다.

인자: object_names (array), is_view (boolean), is_iceberg (boolean), is_external (boolean), is_under_managed_access_schema (boolean)

출력: success message (string)

테이블 등록을 취소하려면:

call samooha_by_snowflake_local_db.library.unregister_table_or_view(
    ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
    false,
    false,
    false,
    false);
Copy

library.unregister_table – 사용 중단됨

주의

이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.unregister_objects를 사용하십시오

설명: unregister_db 와 유사하지만, 테이블 수준에서 작동합니다. 완전히 정규화된 테이블 이름을 나타내는 배열이나 문자열을 전달하여 테이블의 등록을 취소할 수 있습니다. 사용자는 등록되지 않은 테이블을 클린룸에 연결할 수 없습니다.

관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)에 테이블을 등록 취소하려면 대신 library.unregister_managed_access_table 을 사용합니다.

인자: table_name (array)

반환: 성공 메시지 (string)

:

call samooha_by_snowflake_local_db.library.unregister_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.unregister_managed_access_table – 사용 중단됨

주의

이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.unregister_objects를 사용하십시오

설명: unregister_table 과 유사하지만, 관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)의 테이블 등록을 취소합니다.

인자: table_name (array)

반환: 성공 메시지 (string)

:

call samooha_by_snowflake_local_db.library.unregister_managed_access_table(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.unregister_view – 사용 중단됨

주의

이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.unregister_objects를 사용하십시오

설명: unregister_db 와 유사하지만, 뷰 수준에서 작동합니다. 완전히 정규화된 뷰 이름을 나타내는 배열이나 문자열을 전달하여 뷰의 등록을 취소할 수 있습니다. 사용자는 등록되지 않은 뷰를 클린룸에 연결할 수 없습니다.

관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 만든 스키마)에 보기를 등록 취소하려면 대신 library.unregister_managed_access_view 를 사용합니다.

인자: view_name (array)

반환: 성공 메시지 (string)

:

call samooha_by_snowflake_local_db.library.unregister_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

library.unregister_managed_access_view – 사용 중단됨

주의

이 명령은 이제 더 이상 사용되지 않습니다. 대신 library.unregister_objects를 사용하십시오

설명: unregister_view 와 유사하지만, 관리되는 액세스 스키마(즉, WITH MANAGED ACCESS 매개 변수로 생성된 스키마)의 뷰 등록을 취소합니다.

인자: view_name (array)

반환: 성공 메시지 (string)

:

call samooha_by_snowflake_local_db.library.unregister_managed_access_view(['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS']);
Copy

정책 관리하기

consumer.set_join_policy

설명: Provider Run Analysis를 사용하여 클린룸 내에서 템플릿을 실행할 때 공급자가 조인을 수행할 수 있는 열을 지정합니다. 열 정책은 바꾸기 전용 이므로 함수가 다시 호출되면 이전에 설정된 열 정책이 현재 정책으로 완전히 바뀝니다.

이 검사는 승인되지 않은 열이 있는지 데이터에 대해 실행할 SQL 쿼리를 구문 분석하는 방식으로 수행됩니다. 와일드카드가 포함된 쿼리는 이러한 검사를 통해 포착되지 않을 수 있으며, 분석 템플릿을 설계할 때는 여전히 신중해야 합니다.

인자: cleanroom_name (string), table_and_col_names (array)

반환: 성공 메시지 (string)

:

call samooha_by_snowflake_local_db.consumer.set_join_policy($cleanroom_name,
  ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:HASHED_EMAIL', 'MYDB.MYSCH.EXPOSURES:HASHED_EMAIL']);
Copy

consumer.set_column_policy

설명: 공급자가 작업을 수행할 수 있는 데이터의 열을 설정합니다. 이 작업은 템플릿을 추가한 후에만 호출해야 합니다. 이 함수도 템플릿의 함수이므로 입력은 template_name:full_table_name:column_name 형식이어야 합니다. 열 정책은 바꾸기 전용 이므로 함수가 재호출되면 이전에 설정된 열 정책이 현재 정책으로 완전히 바뀝니다.

이메일과 같은 ID 열에서는 열 정책을 호출해서는 안 됩니다. 이는 집계 및 그룹화 열에만 사용해야 합니다.

이 검사는 승인되지 않은 열이 있는지 데이터에 대해 실행할 SQL 쿼리를 구문 분석하는 방식으로 수행됩니다. 와일드카드가 포함된 쿼리는 이러한 검사를 통해 포착되지 않을 수 있으며, 분석 템플릿을 설계할 때는 여전히 신중해야 합니다.

확인은 차원 또는 measure_columns 라는 SQL Jinja 인자에 대해 수행됩니다. 이 검사를 활성화하려면 이러한 태그를 사용해야 합니다.

인자: cleanroom_name (string), analysis_and_table_and_columns (array)

반환: 성공 메시지 (string)

:

call samooha_by_snowflake_local_db.consumer.set_column_policy($cleanroom_name,
['prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:STATUS',
 'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:AGE_BAND',
 'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS:DAYS_ACTIVE']);
Copy

consumer.view_column_policy

설명: 컨슈머가 클린룸에 적용한 모든 열 정책을 봅니다.

인자: cleanroom_name (string)

반환: 열 정책 (table)

:

call samooha_by_snowflake_local_db.consumer.view_column_policy($cleanroom_name);
Copy

consumer.view_provider_column_policy

설명: 공급자가 클린룸에 적용한 모든 열 정책을 봅니다.

인자: cleanroom_name (string)

반환: 열 정책 (table)

:

call samooha_by_snowflake_local_db.consumer.view_provider_column_policy($cleanroom_name);
Copy

템플릿

다음 명령을 사용하면 클린룸에서 사용 가능한 템플릿으로 작업할 수 있습니다.

consumer.view_template_definition

설명: 클린룸 템플릿 정의는 템플릿에 전달해야 할 매개 변수를 결정하는 데 도움이 됩니다.

is_obfuscated 인자를 적용하여 템플릿이 난독 처리된 경우 템플릿 정의를 볼 수 없습니다.

참고

모든 Samooha 프로시저는 암호화되어 있으며 기본적으로 볼 수 없습니다. 하지만 사용자가 추가한 사용자 지정 템플릿은 모두 표시됩니다.

인자: cleanroom_name (string), template_name (string)

반환: 템플릿 정의 (string)

:

call samooha_by_snowflake_local_db.consumer.view_template_definition($cleanroom_name, 'prod_overlap_analysis');
Copy

consumer.get_arguments_from_template

설명: 데이터를 구성하는 방법과 각 템플릿에 필요한 데이터를 정의하여 출력을 쉽게 수집할 수 있도록 합니다.

인자: cleanroom_name (string), template_name (string)

반환: 인자 목록 및 사양 (table)

:

call samooha_by_snowflake_local_db.consumer.get_arguments_from_template($cleanroom_name, 'prod_overlap_analysis');
Copy

템플릿 체인

다음 명령을 사용하면 사용자는 클린룸에서 사용할 수 있는 템플릿 체인을 사용하여 작업할 수 있습니다. 템플릿 체인 사용에 대한 일반적인 정보는 개발자 APIs를 사용하여 템플릿을 순차적으로 실행하기 를 참조하십시오.

consumer.view_added_template_chains

설명: 클린룸에서 현재 활성화된 템플릿 체인을 봅니다.

인자: cleanroom_name (string)

반환: 추가된 템플릿 체인 (table)

:

call samooha_by_snowflake_local_db.consumer.view_added_template_chains($cleanroom_name);
Copy

consumer.view_template_chain_definition

설명: 템플릿 체인의 특성을 반환합니다.

인자: cleanroom_name (string), template_chain_name (string)

반환: 템플릿 체인 정의 (string)

:

call samooha_by_snowflake_local_db.consumer.view_template_chain_definition($cleanroom_name, 'insights_chain');
Copy

분석 실행

다음 명령은 지정된 템플릿을 기반으로 특정 분석이나 활성화를 실행합니다.

consumer.run_analysis

설명: 템플릿 또는 템플릿 체인을 사용하여 분석을 실행하고 결과 테이블을 반환합니다.

차등 개인정보 보호를 사용하도록 설정한 경우 이 템플릿의 예산 한도에 도달하면 쿼리가 실패할 수 있습니다.

is_obfuscated 인자를 적용하여 템플릿이 난독 처리된 경우 해당 템플릿을 실행하려면 Snowflake Enterprise Edition 이상을 사용해야 합니다.

인자:

  • cleanroom_name (string) - 실행할 템플릿이 있는 클린룸의 이름입니다.

  • template_name (string) - 클린룸에서 실행할 템플릿 또는 템플릿 체인의 이름입니다.

  • consumer_tables (array of strings) - 정규화된 컨슈머 테이블 이름의 배열입니다. my_table 템플릿 변수에 할당됩니다. 이러한 테이블은 이미 클린룸에 링크되어 있어야 합니다. consumer.view_consumer_datasets 를 호출하여 사용 가능한 테이블을 확인하십시오. 예를 들어, [‘mytable1’,’mytable2’,’mytable3’]을 전달하면 템플릿은 각각 {{my_table[0]}}, {{my_table[1]}}{{my_table[2]}} 로 이 값에 액세스할 수 있습니다.

  • provider_tables (array of strings) - 정규화된 공급자 테이블 이름의 배열입니다. source_table 템플릿 변수에 할당됩니다. 이러한 테이블은 이미 클린룸에 링크되어 있어야 합니다. consumer.view_provider_datasets 를 호출하여 사용 가능한 테이블을 확인하십시오. 예를 들어, [‘sourcetable1’,’sourcetable2’,’sourcetable3’]을 전달하면 템플릿은 각각 {{source_table[0]}}, {{source_table[1]}}{{source_table[2]}} 로 이 값에 액세스할 수 있습니다.

  • analysis_arguments (object) - 템플릿에 전달된 키-값 페어가 있는 오브젝트입니다. 템플릿은 키 이름으로 변수에 액세스할 수 있습니다. {'age': 20} 을 전달하면 템플릿은 {{age}} 로 값에 액세스합니다. 요구 사항이 없는 경우 빈 오브젝트를 전달합니다. 어떤 값이 필요한지 확인하려면 consumer.view_template_definition 을 호출하여 해당 템플릿을 살펴봅니다. 열 이름을 제공하는 경우 템플릿을 검토하여 열 이름에 테이블 이름을 한정해야 하는지 여부를 결정하십시오. 테이블 별칭이 p 또는 c 인 경우 열 이름에 소문자 pc 테이블 별칭을 사용합니다. 즉, P.age_band 가 아니라 p.age_band 입니다. 이 오브젝트에는 1개의 선택적 예약 값이 있습니다.

  • use_cache(부울, 선택 사항) - 동일한 쿼리에 캐시된 결과를 사용할지 여부입니다. 기본값은 FALSE 입니다.

반환: (Table) 쿼리 결과.

:

call samooha_by_snowflake_local_db.consumer.run_analysis(
  $cleanroom_name,
  'prod_overlap_analysis',
  ['SAMOOHA_SAMPLE_DATABASE.MYDATA.CONVERSIONS'],  -- Consumer tables
  ['MYDB.MYSCH.EXPOSURES'],      -- Provider tables
  object_construct(
    'max_age', 30
  )
);
Copy

활성화

결과 활성화에 대한 자세한 내용은 활성화 개요 섹션을 참조하십시오.

library.view_external_activation_history

설명: 현재 계정의 활성화 요청 기록을 봅니다.

인자: 없음

반환: 활성화 요청의 세부 정보 및 상태가 포함된 테이블.

:

call SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.LIBRARY.view_external_activation_history();
Copy

consumer.set_activation_policy

설명: 활성화 템플릿 내에서 사용할 수 있는 열을 정의합니다. 이렇게 하면 컨슈머가 승인한 열만 활성화 템플릿과 함께 사용할 수 있습니다.

입력: cleanroom_name (string), columns (array)

인자는 <template_name>:<fully_qualified_table_name>:<column_name> 형식으로 전달됩니다.

출력: Success message

:

call samooha_by_snowflake_local_db.consumer.set_activation_policy('my_cleanroom', [ 
    'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE_NAME.DEMO.CUSTOMERS:HASHED_EMAIL',  
    'prod_overlap_analysis:SAMOOHA_SAMPLE_DATABASE_NAME.DEMO.CUSTOMERS:REGION_CODE' ]);
Copy

consumer.run_activation

설명: 결과를 컨슈머 또는 공급자의 Snowflake 계정으로 푸시하는 템플릿을 실행합니다. consumer_direct_activation 인자에 따라 이것이 컨슈머 활성화인지 공급자 활성화인지 결정됩니다.

인자:

  • cleanroom_name(문자열) - 활성화를 실행할 Clean Room의 이름입니다.

  • segment_name(문자열) - 이 활성화 실행에서 생성된 행에 레이블을 지정하는 데 사용되는 임의의 문자열입니다. 활성화를 실행할 때마다 기존 결과 테이블에 새 행이 추가됩니다. 이 프로시저를 호출할 때마다 이 필드에 고유 문자열을 제공하여 특정 실행으로 결과를 필터링할 수 있도록 합니다.

  • template_name(문자열) - 호출할 활성화 템플릿의 이름입니다.

  • consumer_tables(문자열 배열) - 템플릿에 전달할 정규화된 컨슈머 테이블 이름의 배열입니다.

  • provider_tables(문자열 배열) - 템플릿에 전달할 정규화된 공급자 테이블 이름의 배열입니다.

  • activation_arguments(오브젝트) - 템플릿에 전달할 인자의 키-값 세트입니다.

  • consumer_direct_activation(부울, 선택 사항) - 결과를 컨슈머 계정으로 다시 푸시하려면 TRUE, 결과를 공급자에게 전송하려면 FALSE 를 선택합니다. 기본값은 FALSE 입니다.

반환: (문자열) 성공할 경우 성공 메시지.

:

-- Run a consumer activation, as specified by the final TRUE argument.
SET segment_name = 'my_activation_segment';
CALL samooha_by_snowflake_local_db.consumer.run_activation(
  $cleanroom_name,
  $segment_name,
  $template_name,
  ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'], 
  ['SAMOOHA_SAMPLE_DATABASE.DEMO.CUSTOMERS'],
  object_construct(
    'c_join_col', 'c.hashed_email',
    'p_join_col', 'p.hashed_email'
  ),
  TRUE);
Copy

컨슈머 정의 템플릿

다음 APIs 을 사용하면 클린룸에 컨슈머 정의 템플릿을 추가할 수 있습니다. 자세한 내용은 개발자 API를 사용하여 컨슈머 정의 템플릿 추가하기 섹션을 참조하십시오.

consumer.create_template_request

설명: Clean Room 공급자에게 사용자 지정 템플릿을 Clean Room에 추가할 수 있도록 승인해 달라는 요청을 보냅니다. 개발자 API를 사용하여 컨슈머 정의 템플릿 추가하기 섹션을 참조하십시오.

인자:

  • cleanroom_name (string) - 이 템플릿이 적용되는 클린룸의 이름입니다.

  • template_name (string) - 템플릿 이름입니다. 모두 소문자, 숫자, 공백 또는 밑줄이어야 합니다. 활성화 템플릿의 이름은 “활성화”로 시작해야 합니다.

  • template_definition(문자열) - JinjaSQL 템플릿입니다. 템플릿 구문을 알아보십시오.

반환: 성공 메시지 (string)

예:

  CALL samooha_by_snowflake_local_db.consumer.create_template_request('dcr_cleanroom', 
  'my_analysis', 
  $$
  SELECT 
      identifier({{ dimensions[0] | column_policy }}) 
  FROM 
      identifier({{ my_table[0] }}) c 
    INNER JOIN
      identifier({{ source_table[0] }}) p 
        ON   
          c.identifier({{ consumer_id  }}) = identifier({{ provider_id | join_policy }}) 
        {% if where_clause %} where {{ where_clause | sqlsafe | join_and_column_policy }} {% endif %};
  $$);
Copy

consumer.get_sql_jinja

설명: JinjaSQL 템플릿을 유효한 SQL 문으로 평가합니다. 이 프로시저는 표준 JinjaSQL 문만 처리할 수 있습니다. join_policy 또는 column_policy 와 같은 JinjaSQL 로의 Clean Room 확장을 처리할 수 없습니다.

인자:

  • template_string(문자열) - 처리할 템플릿입니다. 표준 JinjaSQL 만 지원됩니다.

  • arguments(오브젝트) - 필드 이름이 템플릿에서 사용되는 변수에 해당하는 오브젝트이며 생성된 쿼리에서 템플릿의 해당 변수 자리 표시자에 값이 삽입되는 오브젝트입니다.

반환: (문자열) 제공된 변수 값으로 제출된 템플릿에 의해 생성된 SQL 문.

예:

CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.CONSUMER.GET_SQL_JINJA(
$$
SELECT COUNT(*), IDENTIFIER({{ group_by_col }})
  FROM IDENTIFIER({{ my_table | sqlsafe }})
  INNER JOIN IDENTIFIER({{ source_table | sqlsafe }})
  ON IDENTIFIER({{ consumer_join_col }}) = IDENTIFIER({{ provider_join_col }})
  GROUP BY IDENTIFIER({{ group_by_col }});
$$,
object_construct(
'group_by_col', 'city',
'consumer_join_col', 'hashed_email',
'provider_join_col', 'hashed_email',
'my_table', 'mydb.mysch.t1',
'source_table', 'mydb.mysch.t2'));
Copy

응답:

SELECT COUNT(*), IDENTIFIER('city')
  FROM IDENTIFIER(mydb.mysch.t1)
  INNER JOIN IDENTIFIER(mydb.mysch.t2)
  ON IDENTIFIER('hashed_email') = IDENTIFIER('hashed_email')
  GROUP BY IDENTIFIER('city');
Copy

consumer.generate_python_request_template

설명: 사용자 정의 Python 코드가 포함된 컨슈머 클린룸 템플릿을 생성합니다. 생성된 템플릿에는 Python 코드와 JinjaSQL 템플릿의 자리 표시자가 포함됩니다. 최종 템플릿을 consumer.create_template_request 로 전달합니다.

컨슈머 정의 템플릿에 대해 자세히 알아보십시오.

인자:

  • function_name (string) - SQL 템플릿이 함수를 실행하기 위해 호출해야 하는 Python 함수의 이름입니다.

  • 인자 (array of strings) - 각 인자가 “<argument_name> <argument_type>” 형식의 공백으로 구분된 문자열 쌍인 Python 함수에 대한 인자 목록입니다. 예를 들어, ['데이터 베리언트', '소수 자릿수 정수'] .

  • packages (array of strings) - Python 코드에 필요한 패키지 이름의 배열입니다. 없는 경우 빈 배열을 지정합니다. 예: ['pandas','numpy'] .

  • imports (array of strings) - Python 코드에 필요한 모든 사용자 정의 Python 라이브러리입니다. 0개 이상의 스테이지 주소로 구성된 배열이어야 합니다. 예: ['@db.schema.stage/my_python_sproc.py']

  • rettype (string) - 함수의 SQL 반환 유형입니다. 예: '정수' , 'varchar' .

  • 처리기 (string) - Python 코드에서 기본 처리기 함수의 이름입니다. 일반적으로 이는 'main' 입니다.

  • 코드 (string) - Python 코드 구현입니다. 가져오기를 포함하고 지정된 처리기가 가져오기 내에 정의되어 있는 경우 빈 문자열일 수 있습니다.

반환: 생성된 Python 템플릿 (string). 자리 표시자를 SQL 코드로 바꿉니다.

:

간단한 Python 예제를 통해 도우미 함수를 호출해 보십시오.

call SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.CONSUMER.GENERATE_PYTHON_REQUEST_TEMPLATE(
  'my_func',                         // SQL should use this name to call your function
  ['data variant', 'index integer'], // Arguments and types for the function
  ['pandas', 'numpy'],               // Standard libraries used
  [],                                // No custom libraries needed.
  'integer',                         // Return type integer
  'main',                            // Standard main handler
// Python implementation as UDF  
  $$
import pandas as pd
import numpy as np

def main(data, index):
    df = pd.DataFrame(data)  # you can do something with df but this is just an example
    return np.random.randint(1, 100)
    $$
);
Copy

이전 호출에 대한 응답은 다음과 같습니다. 자리 표시자에 표시된 대로 JinjaSQL 을 삽입하고 consumer.create_template_request 에 전달합니다.

BEGIN

-- First define the Python UDF
CREATE OR REPLACE FUNCTION CLEANROOM.my_func(data variant, index integer)
RETURNS integer
LANGUAGE PYTHON
RUNTIME_VERSION = 3.10
PACKAGES = ('pandas', 'numpy')

HANDLER = 'main'
AS '
import pandas as pd
import numpy as np

def main(data, index):
    df = pd.DataFrame(data)  # you can do something with df but this is just an example
    return np.random.randint(1, 100)
    ';
        

-- Then define and execute the SQL query
LET SQL_TEXT varchar := '<INSERT SQL TEMPLATE HERE>';

-- Execute the query and return the result
LET RES resultset := (EXECUTE IMMEDIATE :SQL_TEXT);
RETURN TABLE(RES);

END;
Copy

consumer.list_template_requests

설명: 컨슈머가 Clean Room에 템플릿을 추가하기 위해 요청한 내용을 나열합니다.

인자: cleanroom_name (string)

반환값: request_id (string), provider_identifier (string), template_name (string), template_definition (string), request_status (string), reason (string)

:

CALL samooha_by_snowflake_local_db.consumer.list_template_requests('dcr_cleanroom');
Copy

클린룸 메타데이터 getter 메서드

다음 메서드는 클린룸의 관련 속성을 보여줍니다.

consumer.describe_cleanroom

설명: 템플릿, 데이터 세트, 정책 등 Clean Room에 추가된 항목에 대한 모든 정보가 포함된 텍스트 요약을 만듭니다. is_obfuscated 인자를 적용하여 템플릿이 난독 처리된 경우 해당 템플릿 이름을 보려면 Snowflake Enterprise Edition 이상을 사용해야 합니다.

인자: cleanroom_name (string)

반환: 클린룸의 광범위한 설명 문자열 (table)

:

call samooha_by_snowflake_local_db.consumer.describe_cleanroom($cleanroom_name);
Copy

consumer.view_provider_datasets

설명: 공급자가 클린룸에 추가한 모든 데이터 세트를 봅니다.

인자: cleanroom_name (string)

반환: 클린룸의 모든 공급자 데이터 세트 이름 (table)

:

call samooha_by_snowflake_local_db.consumer.view_provider_datasets($cleanroom_name);
Copy

consumer.view_join_policy

설명: 컨슈머가 컨슈머 데이터 세트에 설정한, 클린룸 내부에서 사용자가 안전하게 참여할 수 있는 열을 간략하게 설명합니다.

인자: cleanroom_name (string)

반환: 조인 정책 (table)

:

call samooha_by_snowflake_local_db.consumer.view_join_policy($cleanroom_name);
Copy

consumer.view_provider_join_policy

설명: 공급자가 공급자 데이터 세트에 설정한 클린룸 내에서 사용자가 안전하게 조인할 수 있는 열을 간략하게 설명합니다.

인자: cleanroom_name (string)

반환: 조인 정책 (table)

:

call samooha_by_snowflake_local_db.consumer.view_provider_join_policy($cleanroom_name);
Copy

consumer.view_added_templates

설명: Clean Room에 있는 모든 활성 템플릿을 봅니다. is_obfuscated 인자를 적용하여 템플릿이 난독 처리된 경우 해당 템플릿을 보려면 Snowflake Enterprise Edition 이상을 사용해야 합니다.

인자: cleanroom_name (string)

반환: 추가된 템플릿 (table)

:

call samooha_by_snowflake_local_db.consumer.view_added_templates($cleanroom_name);
Copy

library.is_consumer_run_enabled

설명: 이 Clean Room에 컨슈머 분석이 활성화되어 있는지 확인합니다. 이 플래그에 따라 Clean Room 컨슈머(설치 관리자)가 이 Clean Room에서 분석을 실행할 수 있는지 여부가 결정됩니다.

인자: cleanroom_name (string)

반환: 활성화된 메시지 (string)

:

CALL samooha_by_snowflake_local_db.library.is_consumer_run_enabled($cleanroom_name);
Copy

consumer.view_cleanrooms

설명: 이 계정이 조인(설치)했거나 조인 가능한 모든 클린룸을 표시합니다. 설치된 Clean Rooms만 보려면 consumer.view_installed_cleanrooms 를 실행하십시오.

인자: 없음

반환: (테이블) 이 계정에 대해 설치되거나 초대된 모든 Clean Rooms.

:

call samooha_by_snowflake_local_db.consumer.view_cleanrooms();
Copy

consumer.view_installed_cleanrooms

설명: 이 계정에 설치(가입)된 모든 Clean Rooms를 나열합니다. 조인된 Clean Rooms와 조인되지 않은 Clean Rooms를 모두 보려면 consumer.view_cleanrooms 를 호출하십시오. 이 계정에서 생성된 모든 Clean Rooms를 보려면 provider.view_cleanrooms 를 호출하십시오.

인자: 없음

반환: (테이블) 이 계정에 설치된 Clean Rooms.

예:

CALL samooha_by_snowflake_local_db.consumer.view_installed_cleanrooms();
Copy

차등 개인정보 보호

이 명령은 클린룸의 차등 개인정보 보호를 제어합니다. consumer.enable_templates_for_provider_run 을 호출할 때 템플릿 수준에서 차등 개인정보 보호를 지정할 수도 있습니다.

차등 개인정보 관리에 대해 자세히 알아보기

consumer.is_dp_enabled

설명: 클린룸에서 차등 개인정보 보호가 활성화되었는지 확인합니다.

인자: cleanroom_name (string)

반환: 클린룸에 DP 활성화 여부 (boolean)

:

call samooha_by_snowflake_local_db.consumer.is_dp_enabled($cleanroom_name);
Copy

consumer.view_remaining_privacy_budget

설명: 클린룸에서 쿼리를 수행하는 데 사용할 수 있는 잔여 개인정보 보호 예산을 봅니다. 예산이 재설정될 때까지 run_analysis에 대한 추가 호출은 허용되지 않습니다. 예산은 매일 재설정됩니다.

SELECT cleanroom_name FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) WHERE is_already_installed = TRUE;

인자: cleanroom_name (string)

반환: 남은 개인정보 보호 예산(부동 소수점)

:

call samooha_by_snowflake_local_db.consumer.view_remaining_privacy_budget($cleanroom_name);
Copy

consumer.set_privacy_settings

설명: 사용자 지정 템플릿을 사용하는 공급자 실행 분석(활성화 포함)에 대한 개인정보 보호 설정을 지정합니다. 이전에 설정한 모든 값을 지웁니다. 이 메서드를 호출할 때마다 이전 구성 설정이 모두 지워집니다.

인자:

  • cleanroom_name(문자열) - 이 설정을 적용해야 하는 Clean Room의 이름입니다.

  • privacy_settings(문자열) - 공급자가 사용자 지정 템플릿을 실행할 때 개인정보 설정을 지정하는 문자열 JSON 오브젝트입니다. 오브젝트의 구문은 다음과 같습니다.

    '{
      "null" : <template_config>
    }'
    
    Copy

    template_config 는 차등 개인정보 보호 및 집계 설정이 있는 오브젝트입니다. 이 오브젝트에서 제공할 수 있는 필드를 확인하려면 사용 가능한 개인정보 보호 설정 섹션을 참조하십시오.

예:

-- Apply differential privacy for provider-run analysis using all custom templates.
CALL samooha_by_snowflake_local_db.consumer.set_privacy_settings(
  $cleanroom_name,
  PARSE_JSON('{
    "null":{ "differential": 1, "epsilon": 0.1, "privacy_budget": 3 }
    }')
  );
Copy

반환: 문자열 성공 메시지.

Snowpark Container Services 명령

Clean Rooms에서 Snowplark Container Services를 사용하는 방법에 대해 자세히 알아보십시오.

consumer.start_or_update_service

설명: 이 Clean Room에서 공급자가 정의한 SPCS 의 최신 버전을 생성하고 시작합니다. 공급자가 컨테이너를 생성하거나 업데이트하기 위해 provider.load_service_into_cleanroom 을 호출할 때마다, 컨슈머는 consumer.start_or_update_service 를 호출하여 서비스를 업데이트해야 합니다.

컨슈머는 이 프로시저를 호출하기 전에 풀을 정의하고 시작해야 합니다.

인자:

  • cleanroom_name(문자열) - 컨테이너를 로딩할 Clean Room의 이름입니다.

  • compute_pool_name(문자열) - 이 Clean Room에서 컨슈머가 정의한 컴퓨팅 풀의 이름입니다. 풀이 이미 생성되어 있어야 하며 Clean Room에 풀에 액세스할 수 있는 권한이 있어야 합니다.

  • service_options(오브젝트, 선택 사항) - 이 서비스에 대한 매개 변수를 지정하는 오브젝트입니다. 지원되는 속성은 다음과 같습니다.

    • query_warehouse - (문자열, 선택 사항) 이 서비스에 사용할 웨어하우스 이름입니다. Clean Room을 운영하는 웨어하우스와 동일한 웨어하우스일 필요는 없습니다.

    • min_instances - (정수, 선택 사항) 이 서비스에 사용할 최소 인스턴스 수입니다.

    • max_instances - (정수, 선택 사항) 이 서비스에 사용할 최소 인스턴스 수입니다.

반환: (테이블) 성공한 경우 로딩의 결과. 성공하지 못할 경우 오류를 발생시킵니다.

예:

CALL samooha_by_snowflake_local_db.consumer.start_or_update_service(
    $cleanroom_name,
    'dcr_lal_pool',
    object_construct(
        'query_warehouse', 'app_wh',
        'min_instances', '1',
        'max_instances', '1'
));
Copy

일반 도우미 메서드

일반적인 클린룸 기능을 지원하려면 다음 방법을 사용하십시오.

consumer.set_cleanroom_ui_accessibility

설명: 현재 계정의 컨슈머를 위해 웹 앱에서 클린룸을 표시하거나 숨깁니다.

인자:

  • cleanroom_name (string) - 클린룸의 이름입니다.

  • visibility_status (string) - 대소문자를 구분하는 다음 값 중 하나입니다.

    • HIDDEN - 웹 앱에서 지정된 클린룸을 현재 컨슈머 계정의 모든 사용자로부터 숨깁니다. 클린룸은 API 호출을 통해 계속 액세스할 수 있습니다.

    • EDITABLE - 웹 앱에서 클린룸을 표시합니다.

반환: 성공 메시지 (string)

:

CALL samooha_by_snowflake_local_db.consumer.set_cleanroom_ui_accessibility($cleanroom_name, 'HIDDEN');
Copy

library.enable_local_db_auto_upgrades

설명: 새 버전이 릴리스될 때 Snowflake Data Clean Rooms용 Snowflake Native App을 자동으로 업그레이드하는 작업 samooha_by_snowflake_local_db.admin.expected_version_task 를 활성화합니다.

인자: 없음

반환: 성공 메시지 (string)

:

CALL samooha_by_snowflake_local_db.library.enable_local_db_auto_upgrades();
Copy

library.disable_local_db_auto_upgrades

설명: 새 버전이 릴리스될 때 Snowflake Data Clean Rooms용 Snowflake Native App을 자동으로 업그레이드하는 작업 samooha_by_snowflake_local_db.admin.expected_version_task 를 비활성화합니다.

인자: 없음

반환: 성공 메시지 (string)

:

CALL samooha_by_snowflake_local_db.library.disable_local_db_auto_upgrades();
Copy