リスト用のデータの準備

このトピックには、リストの共有を準備する方法など、リストを作成するための準備に関するガイダンスが含まれています。

このトピックの内容:

リスト作成の準備

リストを作成する前に、次を実行します。

  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 クエリです。

コマンドを使用してクエリを実行すると、コンシューマーであるかのように、共有に対してクエリが実行されます。

たとえば、検証する共有があるとします。共有には PURCHASED_VIEW という名前のセキュアビューが含まれており、 SHARE_TABLE という名前のテーブルからのデータすべてを保護します。リストを購入したコンシューマーのみがデータにアクセスできることを検証するとします。

試用版のコンシューマーがセキュアビューのデータにアクセスできないことを確認するには、次のクエリを実行します。

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 Marketplace のリストについては、リストを利用可能にするリージョンを選択できます。その場合は、データを手動で複製するか、自動複製を使用して、リストを入手したコンシューマーに対して製品を利用可能にすることができます.詳細については、 リストのリクエストを複製する前に手動でデータを複製 または クロスクラウド自動複製の構成 をご参照ください。

  • プライベートリストの場合は、コンシューマーのアカウントがあるリージョンに対してリストを共有する必要があります。自動複製を使用して、リストを入手したコンシューマーに製品を複製します。詳細については、 クロスクラウド自動複製の構成 をご参照ください。

Snowflakeでのクロスリージョンデータ共有すべては、Snowflakeのデータ複製機能を使用します。 リージョンとクラウドプラットフォーム間におけるデータの安全な共有 をご参照ください。