목록 데이터 준비하기

이 항목에는 목록의 공유를 준비하는 방법을 포함하여 목록 생성을 준비하는 지침이 있습니다.

이 항목의 내용:

목록 생성 준비하기

목록을 만들기 전에 다음을 수행하십시오.

  1. 만들려는 목록의 유형을 결정합니다. 목록의 유형 섹션을 참조하십시오.

  2. 목록 생성을 단순화하기 위한 역할과 권한을 설정합니다. 목록에 대한 역할 및 권한 설정하기 섹션을 참조하십시오.

  3. 공유하려는 오브젝트를 식별합니다. 목록에 넣을 내용 결정하기 섹션을 참조하십시오.

  4. 다른 사람과 공유할 오브젝트를 준비합니다. 목록을 위한 공유 준비하기 섹션을 참조하십시오.

  5. 목록에 대해 요금을 청구할지 결정합니다. 유료 목록을 위한 공유 준비하기 섹션을 참조하십시오.

  6. 목록을 제공하려는 클라우드 리전을 선택합니다. 다른 리전에서 공유할 목록 준비하기 섹션을 참조하십시오.

목록 및 데이터 공유는 Snowflake 공급자 정책 을 준수해야 합니다.

목록에 대한 역할 및 권한 설정하기

목록을 만들 때 데이터가 있는 계정에서 목록을 만듭니다. 해당 계정 내에서 다음 중 하나를 수행하여 목록을 만들고 관리할 수 있습니다.

  • ACCOUNTADMIN 역할을 사용합니다.

  • 전역 CREATE DATA EXCHANGE LISTING 권한이 있는 전담 역할을 만들어 사용합니다.

공유를 생성하는 역할도 공유를 소유하며 해당 역할을 사용해 목록에 공유를 연결해야 합니다. 공유를 생성한 역할이 목록을 만들고 수정하는 데 사용하는 역할과 다른 경우, 해당 역할을 가진 사용자가 목록을 게시할 수 있도록 공유를 소유하는 역할에 해당 목록에 대한 MODIFY LISTING 권한을 부여합니다.

데이터 공유 권한에 대한 자세한 내용은 다른 역할에 권한 부여하기 를 참조하십시오.

목록에 넣을 내용 결정하기

계정의 데이터를 목록과 공유할 준비가 되면 목록에 넣을 내용을 결정하십시오.

먼저, 공유하려는 데이터가 Snowflake에 있고 데이터를 공유할 합법적 권리와 계약상의 권리가 있는지 확인하십시오. 필요한 경우 공유하려는 데이터를 Snowflake에 로딩합니다. 데이터 로딩의 개요 를 참조하십시오.

참고

사용자 목록 또는 데이터 세트의 데이터가 법적 또는 계약상 의무의 적용을 받는 범위 내에서 사용자는 해당 데이터를 공유할 법적 및 계약상의 권리가 있는지 확인해야 합니다. 예를 들어, 개인 설정 목록을 통해서만 보호되는 건강 정보(PHI)를 공유할 수 있으며, 이를 위해서는 (1) Snowflake 및 PHI를 수신하는 컨슈머와 비즈니스 제휴 계약(BAA)에 서명하고 (2) 컨슈머도 Snowflake와 BAA에 서명했는지 확인해야 합니다. 또한, 무료 또는 개인 설정 목록을 통해 개인 데이터를 공유할 수 있지만, 이를 위해서는 데이터가 공개적으로 사용 가능하지 않은 경우 적용 가능한 법적 및 계약상 권리가 있어야 합니다.

다음으로, 보유한 데이터를 목록으로 제공할 방법을 결정합니다. Snowflake Marketplace 에 목록을 제공하거나 특정 고객에게 직접 비공개 목록으로만 제공할 계획이라면 목록 내에 배치할 내용에 대해 다른 결정을 내릴 수 있습니다.

  • 데이터의 가용성을 고려합니다.

  • 목록에 액세스할 것으로 예상하는 컨슈머를 고려합니다.

  • 테이블, 뷰, 보안 뷰 또는 다른 데이터베이스 오브젝트 등, 공유에 대해 선택하는 데이터의 형식을 고려합니다.

예를 들어 애견 미용에 대한 목록을 제공하려는 경우 다음과 같은 의사 결정을 내릴 수 있습니다.

  • 애견 품종과 털 길이에 대한 정보와 함께 Snowflake Marketplace 에서 공개적으로 제공되는 무료 목록을 제공합니다.

  • 다양한 애견의 미용에 걸리는 시간과 다양한 개 품종에 대한 일반적인 미용 예약 빈도에 대한 인사이트와 함께 파트너 조직에 비공개 목록을 제공합니다.

이 예에서는 Snowflake Marketplace 를 통해 소중한 데이터를 제공하지만, 이미 신뢰할 수 있는 비즈니스 관계가 있는 조직에 보다 구체적인 인사이트를 제공합니다.

목록을 위한 공유 준비하기

목록을 만들기 전에 공유를 만들거나, 목록을 만들 때 데이터 제품을 구성하기 위한 데이터베이스, 테이블, 뷰를 선택할 수 있습니다. 공유 관련 작업하기 를 참조하십시오.

많은 목록을 제공할 계획이라면 데이터 제품을 더욱 쉽게 관리할 수 있도록 목록과 별도로 공유를 만드십시오. 동일한 공유에서 여러 목록을 제공할 수 없습니다.

공유를 업데이트된 상태로 유지하는 방법 고려하기

공유에 있는 데이터의 유지 관리를 고려하십시오. 시간이 지남에 따라, 목록에 제공하려는 정보가 변경됨에 따라 데이터 공유를 변경해야 할 수도 있습니다.

또한 공유의 데이터를 업데이트된 상태로 유지하는 방법을 고려하고 공유의 내용이 컨슈머에게 유용한지 확인해야 합니다.

공유의 오브젝트가 삭제되고 나중에 다시 생성되는 경우 컨슈머가 계속 사용할 수 있도록 다시 생성된 오브젝트를 공유에 추가해야 합니다. 예를 들어, 데이터베이스에서 테이블을 삭제하고 다시 생성하여 공유의 일부 데이터를 새로 고치는 경우 다시 생성된 테이블을 포함하도록 공유를 업데이트해야 합니다.

공유할 데이터 준비하기

다른 사람과 공유할 목록에서 공유하려는 데이터를 준비합니다.

  • 테이블, 열 및 공유 이름에 따옴표가 없는 오브젝트 식별자를 사용합니다. 목록 컨슈머가 식별자를 큰따옴표로 묶을 필요 없이 공유 데이터 오브젝트를 사용할 수 있도록 하려면 오브젝트 이름에 대문자와 영숫자 문자만 사용하십시오. 식별자 요구 사항 을 참조하십시오.

  • 공유 데이터베이스의 중요한 데이터를 보호합니다. 보안 뷰를 만들고 보안 오브젝트를 사용하여 데이터에 대한 액세스를 제어합니다. 보안 오브젝트를 사용하여 데이터 액세스 제어하기 를 참조하십시오.

  • 직접 공유를 사용하는 것처럼, 컨슈머 계정과 이미 공유된 공유를 목록에 추가할 수 있습니다.

  • 공유는 1개의 목록에만 첨부할 수 있습니다. 공유가 이미 목록에 연결된 경우 목록이 삭제되었더라도 다른 목록에 연결할 수 없습니다.

유료 목록을 제공할 준비하기

목록에 대해 요금을 청구하려면 다음을 수행해야 합니다.

  1. 자신의 리전에서 유료 목록을 제공할 수 있는지 확인합니다. 유료 목록을 게시할 수 있는 곳 섹션을 참조하십시오.

  2. 데이터 평가판을 제공하기 위한 데이터를 준비합니다. 유료 목록을 위한 공유 준비하기 섹션을 참조하십시오.

  3. 목록에 가장 적합한 가격 계획을 결정합니다. 사용 가능한 가격 계획을 검토하려면 유료 목록 가격 책정 모델 섹션을 참조하십시오.

유료 목록을 게시할 수 있는 곳

공급자는 계정의 청구 주소가 다음 국가 중 하나인 경우 유료 목록을 만들 수 있습니다.

  • 오스트레일리아

  • 핀란드

  • 프랑스

  • 독일

  • 아일랜드

  • 이스라엘

  • 이탈리아

  • 멕시코

  • 네덜란드

  • 노르웨이

  • 싱가포르

  • 스웨덴

  • 스위스

  • 영국

  • 미국

컨슈머를 위한 리전 가용성에 대한 정보는 컨슈머가 유료 목록을 구할 수 있는 곳 섹션을 참조하십시오.

유료 목록을 위한 공유 준비하기

Snowflake Marketplace 에서 유료 목록을 제공할 때 컨슈머가 목록을 구매하기 전에 평가판으로 사용해 본 후 결정할 수 있는 기능을 제공해야 합니다. 평가판은 유료 비공개 목록을 위한 선택 사항입니다. 평가판의 일부로, 컨슈머를 특정 데이터와 기능, 특정 기간 또는 이들의 조합으로 제한할 수 있습니다.

평가판 컨슈머를 특정 데이터와 기능으로 제한하기로 한 경우 유료 목록을 위한 단일 공유를 만들고 Snowflake에서 제공하는 보안 뷰와 시스템 함수 SYSTEM$IS_LISTING_PURCHASED 를 사용하여 평가판 컨슈머에게 표시되는 데이터와 요금을 결제한 컨슈머에게만 제공되는 데이터를 제어하십시오.

참고

목록에 보안 사용자 정의 함수(UDF)가 포함된 경우 UDF에 대한 액세스를 제한할 수 없습니다. 목록의 유료 고객과 평가판 고객 모두 보안 UDF에 액세스할 수 있습니다.

유료 컨슈머와 평가판 컨슈머에게 서로 다른 데이터를 표시하는 고유한 보안 뷰를 만들려면 다음 예를 참조하십시오.

평가판 컨슈머가 제한된 기간에 목록의 모든 데이터를 사용하도록 허용하려면 공유에 대한 뷰 정의에서 SYSTEM$IS_LISTING_PURCHASED 함수를 사용하지 마십시오.

예 1: 계정의 구매 상태에 따라 데이터 반환

테이블의 모든 열을 선택하는 보안 뷰를 만듭니다. 뷰는 유료 목록을 구매한 컨슈머 계정 내에서 쿼리할 때만 행을 반환합니다.

CREATE SECURE VIEW paid_v
  AS
  SELECT
    *
  FROM
    paid_t
  WHERE
    SYSTEM$IS_LISTING_PURCHASED() = TRUE;
Copy

예 2: 계정의 구매 상태에 따라 행의 하위 세트 반환

데이터에 있는 특정 열의 부울 값을 기반으로 행의 하위 세트를 반환하는 보안 뷰를 만듭니다. 이 예에서는 기본 테이블에 어떤 컨슈머에게 어떤 데이터를 표시할지 결정하는 데 사용되는 is_free 라는 열이 있습니다.

일부 행에는 is_freeTRUE 로 설정되어 있는데, 이는 해당 행의 데이터가 평가판 컨슈머에게 표시될 수 있음을 나타냅니다. 다른 행에는 is_freeFALSE 로 설정되어 있는데, 이는 해당 행의 데이터가 유료 컨슈머에게만 표시되어야 함을 나타냅니다.

이 예제 뷰는 유료 목록을 구매한 컨슈머 계정에서 쿼리할 때만 모든 행을 반환하도록 설정되어 있으며, 그렇지 않으면 is_freeTRUE 로 설정된 행만 반환합니다.

CREATE SECURE VIEW paid_v
  AS
  SELECT
    *
  FROM
    paid_t
  WHERE
    is_free
    OR
    SYSTEM$IS_LISTING_PURCHASED() = TRUE;
Copy

예 3: 계정의 구매 상태에 따라 가장 최근 행만 반환

평가판을 사용 중이지만 아직 유료 목록을 구매하지 않은 컨슈머 계정으로 이전 7일간의 행만 반환하는 보안 뷰를 만듭니다.

이 예에서는 타임스탬프 데이터 타입이 있는 열을 사용하여 데이터를 필터링하지만, 보안 뷰 정의에서 다른 열 데이터 타입을 사용할 수 있습니다.

CREATE SECURE VIEW paid_v
  AS
  SELECT *
  FROM
    paid_t
  WHERE
    (timestamp > current_timestamp() - interval '7 days')
    OR
    SYSTEM$IS_LISTING_PURCHASED() = TRUE;
Copy

유료 및 평가판 데이터에 대해 보안 뷰 유효성 검사하기

보안 뷰를 준비한 후 유료 및 평가판 컨슈머 계정의 경험을 시뮬레이션하여 보안 뷰를 올바르게 설정했는지 검증합니다. 보안 뷰에 대해 쿼리를 실행하여 각 유형의 컨슈머가 예상 데이터에 대한 액세스 권한이 있는지 확인합니다.

중요

이 방법은 컨슈머가 데이터에 안전하게 액세스할 수 있는지 여부를 검증하지 않습니다. 이 방법은 공유가 컨슈머에게 예상대로 작동하는지 여부만 검증합니다.

공유의 유효성을 검사하려면 SHARE_CONTEXT(SYSTEM$IS_LISTING_PURCHASED) 를 사용하여 보안 뷰에 대해 쿼리를 실행합니다.

EXECUTE USING SHARE_CONTEXT(SYSTEM$IS_LISTING_PURCHASED=>{ 'TRUE' | 'FALSE' })
  AS <query>
Copy

여기서:

  • SYSTEM$IS_LISTING_PURCHASED 는 유효성 검사 작업을 유료 컨슈머로서 할지, 평가판 또는 무료 컨슈머로서 할지 여부를 지정합니다. 유효한 값은 다음과 같습니다.

    • TRUE. 유료 컨슈머로서 공유의 유효성을 검사합니다.

    • FALSE. 평가판 또는 무료 컨슈머로서 공유의 유효성을 검사합니다.

  • <쿼리> 는 보안 뷰에 대해 실행하려는 SQL 쿼리입니다.

명령을 사용하여 쿼리를 실행하는 경우, 사용자가 컨슈머인 것처럼 공유에 대해 쿼리가 실행됩니다.

예를 들어 유효성을 검사하려는 공유가 있다고 가정하겠습니다. 공유에는 SHARE_TABLE 이라는 테이블의 모든 데이터를 보호하는 보안 뷰 PURCHASED_VIEW 가 포함되어 있습니다. 목록을 구매한 컨슈머만 데이터에 액세스할 수 있는지 검증하려고 합니다.

평가판 컨슈머가 보안 뷰의 데이터에 액세스할 수 없는지 확인하려면 다음 쿼리를 실행하십시오.

EXECUTE USING share_context(system$is_listing_purchased=>'FALSE')
  AS
    SELECT
      *
    FROM
      example_database.example_schema.PURCHASED_VIEW
Copy

보안 뷰가 예상대로 작동하고 평가판 컨슈머가 액세스할 수 있는 데이터가 없을 경우 쿼리가 다음 응답을 반환합니다.

Query produced no results
Copy

유료 컨슈머가 데이터에 액세스할 수 있는지 확인하려면 다음 쿼리를 실행하십시오.

EXECUTE USING share_context(system$is_listing_purchased=>'TRUE')
  AS
    SELECT
      *
    FROM
      example_database.example_schema.PURCHASED_VIEW
Copy

보안 뷰가 예상대로 작동할 경우 쿼리는 유료 컨슈머가 원하는 결과인 SHARE_TABLE 의 모든 열과 행을 반환합니다.

SYSTEM$IS_LISTING_PURCHASED

데이터를 쿼리하는 컨슈머 계정이 목록을 구매한 경우 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다. 어떤 계정에서 목록을 평가판으로 사용하는 경우 이 함수는 FALSE를 반환합니다. 보안 뷰에서 이 시스템 함수를 사용하여 공유의 데이터에 대한 액세스를 관리하고 유료 고객에게만 특정 데이터를 표시합니다.

이 함수는 뷰가 있는 데이터베이스와 연결된 목록을 유추하고 쿼리를 실행하는 계정이 목록을 구매했는지 여부를 결정합니다.

구문
SYSTEM$IS_LISTING_PURCHASED()
Copy
인자

없습니다.

테이블의 모든 열을 선택하는 보안 뷰를 만듭니다. 다음과 같이 뷰는 유료 목록을 구매한 컨슈머 계정 내에서 쿼리할 때만 행을 반환합니다.

CREATE SECURE VIEW paid_view
  AS
  SELECT
    *
  FROM
    paid_table
  WHERE
    SYSTEM$IS_LISTING_PURCHASED();
Copy

유료 목록을 평가판으로 사용하는 컨슈머에게는 이 뷰에 행이 표시되지 않습니다.

추가적인 예는 유료 목록을 위한 공유 준비하기 를 참조하십시오.

다른 리전에서 공유할 목록 준비하기

목록을 구성할 때 다른 리전에서 제공하도록 선택할 수 있습니다. 다른 리전에서 목록을 제공하려면 데이터를 복제해야 합니다.

데이터를 복제하는 데 걸리는 시간과 복제 관련 비용을 고려합니다.

Snowflake의 모든 리전 간 데이터 공유에서는 Snowflake의 데이터 복제 기능을 사용합니다. 리전 및 클라우드 플랫폼 전체에서 안전하게 데이터 공유하기 를 참조하십시오.