リスト用データを準備する

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

このトピックの内容:

リスト作成の準備

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

リストの所有者ロール:

リストに対する OWNERSHIP 権限。

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

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

ACCOUNTADMIN:

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

カスタムロール:

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

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

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

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

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

注釈

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

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

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

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

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

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

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

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

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

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

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

リスト用の共有の準備

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

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

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

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

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

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

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

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

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

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

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

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

  • ポリシーやセキュアビューの定義など、アカウントレベルのロールを使用してデータを保護しないでください。自動フルフィルメントでは、アカウントレベルのロールは複製されません。この制限の詳細については、 アカウントロールに依存するオブジェクトの自動フルフィルメント をご参照ください。代わりに、データベースロールと IS_DATABASE_ROLE_IN_SESSION システム関数を使用してください。詳細については、 ポリシーで保護されている共有データ をご参照ください。

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

限定トライアルリストでは、データ製品のサンプルを無料トライアルとして提供し、コンシューマーに完全なデータ製品で使用できる内容の洞察を提供することや、完全なデータ製品への期間限定アクセスを提供することができます。プロバイダーは、限定トライアルリストの可用性期間を1日から90日の間で設定することができます。限定トライアルリストについては、 限定トライアルリスト をご参照ください。

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

  • 同じ列を含む。

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

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

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

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

サンプルデータ製品の例

完全なデータ製品の例

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

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

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

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

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

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

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

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

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

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

トライアルコンシューマー向けにSnowflakeネイティブアプリ機能を制限

Snowflake Native App を限定トライアルリストとして Snowflake Marketplace で提供し、トライアルコンシューマーが利用できる機能を制限したい場合、セキュアビュー、セキュア UDFs、または Snowflake Native App に含まれるStreamlitアプリを作成する際に SYSTEM$IS_LISTING_TRIAL システム関数を使用してください。

データの可視性と UDF 出力を制御するためにシステム関数を使用すると、トライアルのコンシューマーへの機能を制限するために別のアプリケーションパッケージを維持する必要がありません。

以下の機能を制限することができます:

  • セキュアビュー

  • セキュアユーザー定義関数(UDF)

  • セットアップスクリプトやStreamlitアプリなどのアプリケーションロジック。

アプリケーションパッケージへのデータコンテンツまたは UDFs の追加についての詳細は、こちらをご参照ください:

例1: トライアル中のコンシューマーにビュー内の異なるデータを返す

Snowflake Native App のフルバージョンにアクセスできるコンシューマーのみにデータを返すセキュアビューを定義するには、次のようなコード例を使用します。

CREATE OR REPLACE SECURE VIEW limited_functionality_view
  AS
  SELECT *
    FROM db_name.schema_name.table_name
    WHERE SYSTEM$IS_LISTING_TRIAL() = false;
Copy

Snowflake Native App を試しているコンシューマーがビューをクエリしようとしても、結果は表示されません。

例2: 安全な SQL UDF の出力を、トライアルでないコンシューマーにのみ表示する

Snowflake Native App のフルバージョンにアクセスできるコンシューマーだけに結果を返す、安全な SQL UDF shared_function() を定義するには、次のようなコード例があります。

CREATE OR REPLACE SECURE FUNCTION schema_name.shared_function()
  RETURNS VARCHAR
  AS
  $$
    CASE
      WHEN SYSTEM$IS_LISTING_TRIAL() = FALSE
        THEN 'full product'
      ELSE 'trial'
    END
  $$;
Copy

この例では、コンシューマーがあなたの Snowflake Native App を試用している場合、安全な UDF を呼び出すと、出力 trial が表示されます。

例3: トライアルのコンシューマーに別のStreamlit UI を表示する

また、Streamlitアプリの内部でシステム関数を呼び出して、 Snowflake Native App でStreamlitアプリの機能を制限することもできます。たとえば、 Snowflake Native App を試用しているコンシューマーには UI にあるタイトルを表示し、 Snowflake Native App へのフルアクセスを持つコンシューマーには別のタイトルを表示することができます。

# Import python packages
import streamlit as st
from snowflake.snowpark.context import get_active_session

session = get_active_session()
# Here we assign result of our function to a variable
result = session.sql("SELECT SYSTEM$IS_LISTING__TRIAL()")

# Write directly to the app
if result:
  st.title("Enjoy your limited trial of this application!")
else:
  st.title("Welcome to the full version of this application!")
Copy

有料リストの提供の準備

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

  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 のすべての列と行を返します。これは、有料のコンシューマーにとって望ましい結果です。

他のリージョンで共有するためにリストを準備する

リストを構成する際は、さまざまなリージョンで提供する選択ができます。他のリージョンでリストを提供するには、データを複製する必要があります。

データの複製にかかる時間と複製にかかるコストを検討します。

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

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

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