컨슈머로서 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