消費者として SQL でリストを管理する - 例

以下は、コンシューマーが SQL コマンドを使用してプログラムで実行できる一般的なタスクの例です。

利用可能なリストを表示する

コマンドを実行しているコンシューマーが使用できるリストを表示します。SHOW AVAILABLE LISTINGS コマンドの詳細については、 SHOW AVAILABLE LISTINGS を参照してください。

説明

注意

利用可能なリストを表示します。

コマンドを実行しているコンシューマーと非公開で共有されているリストのみを表示するには、 IS_SHARED_WITH_ME = TRUE を使用します。インポートされたリストだけを表示するには、 IS_IMPORTED = TRUE を使用します。

SHOW AVAILABLE LISTINGS
Copy

利用可能なリストについて説明する

コンシューマーは SHOW AVAILABLE LISTINGS を実行して利用可能なリストとグローバルリスト名を識別した後に、 DESCRIBE AVAILABLE LISTING を実行して利用可能なリストの列の説明を取得できます。DESCRIBE AVAILABLE LISTING コマンドの詳細については、 DESCRIBE AVAILABLE LISTING を参照してください。

説明

注意

リストの列について説明します。

listing_global_name を使用して、説明するグローバルリストを識別します。 is_ready_for_import 列が TRUE の場合、データはすでにリージョンに存在するため、コンシューマーはすぐにインポートすることができます。

DESCRIBE AVAILABLE LISTING < listing_global_name >
Copy

リストをリクエストし、可用性を自動的にポーリングする

コンシューマーは SHOW AVAILABLE LISTINGS を実行して利用可能なリストを識別した後に、 SYSTEM$REQUEST_LISTING_AND_WAIT ストアドプロシージャを使用してリストをリクエストし、可用性を自動的にポーリングすることができます。コンシューマーは、 is_ready_for_import 列が FALSE である場合にも、このストアドプロシージャを使用できます。 SYSTEM$REQUEST_LISTING_AND_WAIT ストアドプロシージャの詳細については、 SYSTEM$REQUEST_LISTING_AND_WAIT をご参照ください。

説明

注意

リストをリクエストし、可用性をポーリングします。

<timeout_mins> には、リストのフルフィルメントの待機期間を分単位で指定します。デフォルトは240分または4時間です。

リクエストされたリストが利用可能になるか、すでに利用可能な場合は、 Success: Listing <listing_global_name> is ready to be imported というメッセージが返されます。

タイムアウト時間を超えると、 Error: Timed out waiting for the listing to be available after <timeout_mins> min(s) というメッセージが返されます。

リストのフルフィルメントを待たずにリストをリクエストするには、 <timeout_mins> の値に0(ゼロ)を入力します。値が0の場合、 Success: Listing <listing_global_name> requested successfully, but not waiting to confirm fulfillment というメッセージが返されます。

CALL SYSTEM$REQUEST_LISTING_AND_WAIT( ' <listing_global_name> ' [ , <timeout_mins>. ] );
Copy

リストからデータベースを作成する

コンシューマーはリストをリクエストした後に、 CREATE DATABASE ... FROM LISTING ... コマンドを使用して、リストからデータベースを作成できます。CREATE DATABASE ... FROM LISTING ... コマンドの詳細については、 CREATE DATABASE ... FROM LISTING ... をご参照ください。

説明

注意

リストからデータベースを作成する

<name> にはデータベース識別子を指定します。アカウントに対して一意である必要があります。識別子はアルファベットで始まる必要があり、識別子の文字列全体が二重引用符で囲まれている場合を除き、スペースや特殊文字を含めることはできません。例: "My object"。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

CREATE DATABASE <name> FROM LISTING '<listing_global_name>';
Copy

エンド・ツー・エンドの例

次の例では、上記の SQL コマンドを使用して、コンシューマーとしてリストを管理する方法を示します。この例では、コンシューマーが GZ1MXZFTF1 という名前の COVID-19 データのリストへのアクセスを既に付与されており、そのリストがコンシューマーのリージョンで利用可能 だと仮定しています。この例では、コンシューマーに sysadmin ロールが付与されていることも想定しています。これは、リストからデータベースを作成するために必要です。

-- Switch to sysadmin role
USE ROLE sysadmin;

-- Show available listings with a filter for shared listings
-- Note that you can optionally filter for private shared listings using IS_SHARED_WITH_ME = TRUE
-- The example assumes that the response returns a listing with a listing_global_name of GZ1MXZFTF1
SHOW AVAILABLE LISTINGS;

-- Get the global name and title of listings and filter on the title
SELECT "global_name", "title"
  FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
  WHERE "is_imported" = false
    AND "title" LIKE '%COVID-19%';

-- Request the listing returned in `SHOW AVAILABLE LISTINGS` and wait for completion
CALL SYSTEM$REQUEST_LISTING_AND_WAIT('GZ1MXZFTF1');

-- Accept legal terms for the listing. Email verification is required to create the database from listing GZ1MXZFTF1
CALL SYSTEM$ACCEPT_LEGAL_TERMS('DATA_EXCHANGE_LISTING', 'GZ1MXZFTF1');

-- Create database from the listing
CREATE DATABASE test_california_covid_import
  FROM LISTING 'GZ1MXZFTF1';

-- Use the new database
USE DATABASE test_california_covid_import;

-- Query the 'COVID.CASES' table and limit the results to 100 rows
SELECT * FROM COVID.CASES LIMIT 100;
Copy