リスト用のデータの準備

このトピックには、さまざまな種類のリスト用のデータ製品を準備する方法など、リストを作成するための準備に関するガイダンスが含まれています

このトピックの内容:

リスト作成の準備

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

  1. データ製品を提供する方法を決定します。 リスト候補オプション、および リストのアクセスオプション をご参照ください。

  2. ロールと権限を設定して、リストの作成を簡素化します。 リストのロールと権限を設定する をご参照ください。

  3. 共有するオブジェクトを特定します。 リストに何を入れるかを決める をご参照ください。

  4. 他のユーザーと共有するオブジェクトを準備します。 リスト用の共有の準備 をご参照ください。

  5. データ製品へのアクセスを管理する方法を決定します。

    • 制限なく、無料でアクセスを提供します。

    • 有料リストを作成して、リストの料金を請求します。 有料リストの提供の準備 をご参照ください。

    • 無料トライアルとしてデータ製品への限定的なアクセスを提供し、その後リクエストに応じてデータ製品への無制限のアクセスを提供します。 限定トライアルリストの準備 をご参照ください。

  6. リストを提供するクラウドリージョンを選択します。 他のリージョンで共有するためにリストを準備する をご参照ください。

リストとデータ共有は、Snowflake プロバイダーポリシー に準拠している必要があります。

リストのロールと権限を設定する

リストを作成するときは、データまたはアプリケーションパッケージが含まれているアカウントから作成します。データ製品をリストに添付し、リストを公開するロールは、アプリケーションパッケージまたは共有を作成したロールと同じロールである必要があり、したがってアプリケーションパッケージまたは共有を所有しています。共有の OWNERSHIP 権限を譲渡することはできません。

別のロールを使用してリストを作成および管理する場合は、アプリケーションパッケージまたは共有を所有するロールにリストの MODIFY 権限を付与します。例:

共有またはアプリケーションパッケージの所有者ロール:

共有またはアプリケーションパッケージに対する OWNERSHIP 権限。リストに対する MODIFY 権限。

リストの所有者ロール:

リストに対する OWNERSHIP 権限。CREATE DATA EXCHANGE LISTING グローバル権限。

プロバイダーアカウント内で、次のいずれかを使用してリストを作成および管理できます。

ACCOUNTADMIN

ACCOUNTADMIN ロールを使用してリストの作成と管理を行う場合、 ORGADMIN ロールはまず 自動複製を設定する権限を委任する 必要があります。

カスタムロール

カスタムロールを使用する場合、 ORGADMIN ロールはまず ACCOUNTADMIN ロールに 自動複製を設定する権限を委任 します。その後、関連する権限をカスタムロールに付与できます。

Snowsight を使用してのみ付与できる権限もあれば、 SQL または Snowsight を使用して付与できる権限もあります。

タスク

必要な権限

使用する付与

プロバイダープロファイルの作成

CREATE DATA EXCHANGE LISTING グローバル権限。

SQL または Snowsight

プロバイダープロファイルの管理または更新

プロファイルに対する OWNERSHIP または MODIFY 権限。

Snowsight

リストの機能とプロパティの変更

リストに対する OWNERSHIP または MODIFY 権限。

Snowsight

リストを表示する

リストに対する OWNERSHIP、 MODIFY、または USAGE 権限。

Snowsight

リストへの共有の添付

共有の OWNERSHIP、およびリストに対する OWNERSHIP または MODIFY 権限。

Snowsight

リストの自動複製の設定

委任された権限 のある ACCOUNTADMIN によって付与されたアカウントレベルの MANAGE LISTING AUTOFULFILLMENT 権限、およびリストに対する OWNERSHIP または MODIFY 権限。

SQL

リストリクエストの履行

リストに対する OWNERSHIP または MODIFY 権限。

Snowsight

共有権限の付与の詳細については、 他のロールへの権限付与 をご参照ください。

リストに何を入れるかを決める

アカウントのデータをリストと共有する準備をする際に、リストに何を入れるかを決定します。

まず、共有するデータがSnowflakeにあり、データを共有する法的および契約上の権利があることを確認します。必要に応じて、共有するデータをSnowflakeにロードします。 データのロードの概要 をご参照ください。

注釈

リストまたはデータセット内のデータに対する法的または契約上の義務が適用される範囲で、そうしたデータを共有する法的および契約上の権利があることを確認する必要があります。たとえば、保護された医療情報(PHI)は、パーソナライズされたリストを介してのみ共有できます。そのためには、(1)ユーザーとSnowflake、およびユーザーと PHI を受け取るコンシューマーとの間に署名済みのビジネスアソシエイト契約(BAA)があること、(2)コンシューマーはSnowflakeとの BAA に署名していることを確認する必要があります。また、無料リストまたはパーソナライズされたリストの両方を介して個人データを共有できますが、データが一般公開されていない場合は、適用される法的および契約上の権利を有している必要があります。

次に、リストとして持っているデータをどのように提供するかを決定します。 Snowflake Marketplace にリストを提供する予定がある場合や、特定の顧客に直接プライベートリストとしてのみ提供する予定の場合は、リスト内に何を入れるかについて異なる決定がなされる可能性があります。

  • データの可用性を検討します。

  • リストにアクセスすると予想されるコンシューマーを検討します。

  • テーブル、ビュー、セキュアビュー、その他のデータベースオブジェクトなど、共有に選択するデータの形式を検討します。

たとえば、犬のグルーミングに関するリストを提供する場合は、次のような決定を下すことができます。

  • Snowflake Marketplace で、犬種と毛の長さに関する情報を公開する無料リストを提供します。

  • スタンダードプードルのグルーミングにかかる時間に関するデータのサンプルデータ製品を含む、限定トライアルリストを Snowflake Marketplace に提供します。コンシューマーは、必要に応じてより多くの犬種のグルーミングの洞察に関する完全なデータ製品をリクエストできます。

  • あらゆる犬種のグルーミングにかかる時間に関するデータのデータ製品を含む、限定トライアルリストを Snowflake Marketplace に提供します。コンシューマーは、必要に応じてデータ製品への無制限のアクセスをリクエストできます。

  • さまざまな犬のグルーミングにかかる時間の長さと、さまざまな犬種のグルーミング予約の一般的な頻度に関する洞察について、パートナー組織にプライベートリストを提供します。

この例では、 Snowflake Marketplace で貴重なデータが提供されていますが、すでに信頼できる取引関係を築いている組織にはさらに具体的な洞察を提供します。

リスト用の共有の準備

リスト作成前に共有を作成するか、リスト作成時にデータ製品を構成するデータベース、テーブル、ビューを選択することができます。 共有の操作 をご参照ください。

多数のリストを提供する予定がある場合は、データ製品をより簡単に管理できるように、リストとは別に共有を作成します。同じ共有から複数のリストを提供することはできません。

共有を最新状態に保つ方法を検討する

共有内のデータのメンテナンスを検討します。時間が経つにつれて、リストに提供する情報が変更されるため、データ共有に変更を加える必要が生じることがあります。

また、共有内のデータを最新状態に保つ方法を検討し、共有のコンテンツがコンシューマーにとって有用であることを確認する必要があります。

共有内のオブジェクトがドロップされ、後で再作成された場合は、再作成されたオブジェクトを共有に追加して、コンシューマーが引き続き使用できるようにする必要があります。たとえば、データベース内のテーブルをドロップして再作成することにより共有内の一部のデータを更新する場合は、再作成されたテーブルを含めるように共有を更新する必要があります。

共有するデータを準備する

リストで共有するデータを準備して、他のユーザーと共有します。

  • テーブル、列、および共有名には、引用符で囲まれていないオブジェクト識別子を使用します。オブジェクト名には大文字と英数字のみを使用して、リストのコンシューマーが識別子を二重引用符で囲まずに共有データオブジェクトを使用できるようにします。 識別子の要件 をご参照ください。

  • 共有データベースの機密データを保護します。セキュアビューを作成し、セキュアオブジェクトを使用してデータへのアクセスを制御します。 セキュアオブジェクトを使用したデータアクセスの制御 をご参照ください。

  • 直接共有など、すでにコンシューマーアカウントと共有されている共有をリストに追加できます。

  • 共有は1つのリストのみに添付できます。共有がすでにリストに添付されている場合は、そのリストが削除されていても、その共有を別のリストに添付することはできません。

限定トライアルリストの準備

限定トライアルリストでは、データ製品のサンプルを無料トライアルとして提供し、コンシューマーに完全なデータ製品で使用できる内容の洞察を提供することや、完全なデータ製品への期間限定アクセスを提供することができます。コンシューマーは、その後完全なデータ製品への無制限アクセスをリクエストできます。詳細については、 限定トライアルリスト をご参照ください。

完全なデータ製品の製品のサンプルを提供することを選択した場合、サンプルデータ製品では、完全なデータ製品に含まれる実際のデータのサブセットが提供され、次の点で完全なデータ製品を表するものであることが理想的です。

  • 同じ列を含む。

  • データに含まれる値の範囲や分布が同じか類似している。

限定トライアルリストにはデータディクショナリが含まれているため、提供するサンプルデータ製品から完全なデータ製品のデータの一般的な形状がわかるはずです。

たとえば、犬のトレーニングやグルーミングの会社であれば、次のようなサンプルデータを限定トライアルリストで提供することを検討してみてください。

サンプルデータ製品の推奨

サンプルデータ製品の例

完全なデータ製品の例

データの特定の完全な属性の完全なデータセットを含みます。

スタンダードプードルのグルーミングに関する最新の洞察を含みます。

すべての犬種のグルーミングに関する最新の洞察を含みます。

特定の古い期間の完全なデータセットを含みます。

2021年5月以降のすべての犬種のグルーミングに関する洞察と価格を含みます。

すべての犬種の最新のグルーミングに関する洞察と価格を含みます。

完全なデータ製品を表す合成データを含みます。

架空の犬種、アケイディアンハウンドのトレーニングに関する最新の洞察と価格を含みます。

すべての犬種のトレーニングに関する最新の洞察と価格を含みます。

完全なデータ製品に関連性のある完全なサブセットを限定トライアルリストのサンプルデータとして提供することで、コンシューマーは完全なデータ製品の価値を理解し、完全なデータ製品をリクエストする可能性が高くなります。

有料リストの提供の準備

リストの料金を請求する場合は、次を実行する必要があります。

  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のデータ複製機能を使用します。 リージョンとクラウドプラットフォーム間におけるデータの安全な共有 をご参照ください。