INFORMATION_SCHEMA를 사용하여 데이터세트 메타데이터 가져오기

INFORMATION_SCHEMA는 데이터세트, 테이블, 뷰의 메타데이터에 액세스할 수 있는 일련의 뷰입니다.

INFORMATION_SCHEMA.SCHEMATAINFORMATION_SCHEMA.SCHEMATA_OPTIONS 뷰를 쿼리하여 프로젝트의 데이터세트에 대한 메타데이터를 검색할 수 있습니다.

필수 권한

데이터세트에 대한 정보 또는 메타데이터를 가져오려면 최소한 bigquery.datasets.get 권한이 부여되어 있어야 합니다. 사전 정의된 다음 Cloud IAM 역할에는 bigquery.datasets.get 권한이 포함되어 있습니다.

  • bigquery.user
  • bigquery.metadataViewer
  • bigquery.dataViewer
  • bigquery.dataOwner
  • bigquery.dataEditor
  • bigquery.admin

BigQuery의 Cloud IAM 역할 및 권한에 대한 자세한 내용은 액세스 제어를 참조하세요.

SCHEMATA

INFORMATION_SCHEMA.SCHEMATA 뷰를 쿼리하면 쿼리 결과에 현재 사용자가 액세스할 수 있는 프로젝트의 각 데이터세트에 대한 하나의 행이 포함됩니다.

INFORMATION_SCHEMA.SCHEMATA 뷰에는 다음과 같은 스키마가 있습니다.

열 이름 데이터 유형
CATALOG_NAME STRING 데이터세트가 포함된 프로젝트 이름
SCHEMA_NAME STRING 데이터세트 이름(또는 datasetId라고 함)
SCHEMA_OWNER STRING 값이 항상 NULL
CREATION_TIME TIMESTAMP 데이터세트의 생성 시간
LAST_MODIFIED_TIME TIMESTAMP 데이터세트의 마지막 수정 시간
LOCATION STRING 데이터세트의 지리적 위치

데이터세트 속성에 대한 자세한 내용은 REST API 문서의 데이터세트 리소스 페이지를 참조하세요.

예시

나중에 사용할 수 있도록 예약된 schema_owner를 제외하고 INFORMATION_SCHEMA.SCHEMATA 뷰에서 모든 열을 검색합니다. 반환된 메타데이터는 기본 프로젝트 myproject에 있는 모든 데이터세트의 메타데이터입니다.

기본 프로젝트가 아닌 프로젝트에 쿼리를 실행하려면 프로젝트 ID를 `project_id`..INFORMATION_SCHEMA.view 형식으로 추가합니다(예: `myproject`.INFORMATION_SCHEMA.SCHEMATA).

쿼리를 실행하려면 다음 안내를 따르세요.

Console

  1. GCP Console에서 BigQuery 웹 UI를 엽니다.

    GCP Console로 이동

  2. 쿼리 편집기 상자에 다음과 같은 표준 SQL 쿼리를 입력합니다. INFORMATION_SCHEMA에는 표준 SQL 구문이 필요합니다. 표준 SQL은 GCP Console의 기본 구문입니다.

    SELECT
     * EXCEPT(schema_owner)
    FROM
     INFORMATION_SCHEMA.SCHEMATA
    
  3. 실행을 클릭합니다.

CLI

query 명령어를 사용하고 --nouse_legacy_sql 또는 --use_legacy_sql=false 플래그를 사용하여 표준 SQL 구문을 지정합니다. INFORMATION_SCHEMA 쿼리에는 표준 SQL 구문이 필요합니다.

쿼리를 실행하려면 다음 명령어를 입력합니다.

bq query --nouse_legacy_sql \
'SELECT
   * EXCEPT(schema_owner)
 FROM
   INFORMATION_SCHEMA.SCHEMATA'

다음과 같은 결과가 표시됩니다.

  +----------------+---------------+---------------------+---------------------+-----------------+
  |  catalog_name  |  schema_name  |    creation_time    | last_modified_time  |    location     |
  +----------------+---------------+---------------------+---------------------+-----------------+
  | myproject      | mydataset1    | 2018-11-07 19:50:24 | 2018-11-07 19:50:24 | US              |
  | myproject      | mydataset2    | 2018-07-16 04:24:22 | 2018-07-16 04:24:22 | US              |
  | myproject      | mydataset3    | 2018-02-07 21:08:45 | 2018-05-01 23:32:53 | asia-northeast1 |
  +----------------+---------------+---------------------+---------------------+-----------------+
  

SCHEMATA_OPTIONS

INFORMATION_SCHEMA.SCHEMATA_OPTIONS 뷰를 쿼리하면 쿼리 결과에 현재 사용자가 액세스한 프로젝트의 각 데이터세트별로 행 한 개가 포함됩니다.

INFORMATION_SCHEMA.SCHEMATA_OPTIONS 뷰에는 다음과 같은 스키마가 있습니다.

열 이름 데이터 유형
CATALOG_NAME STRING 데이터세트가 포함된 프로젝트 이름
SCHEMA_NAME STRING 데이터세트 이름(또는 datasetId라고 함)
OPTION_NAME STRING 옵션 표의 이름 값 중 하나
OPTION_TYPE STRING 옵션 표의 데이터 유형 값 중 하나
OPTION_VALUE STRING 옵션 표의 값 옵션 중 하나
옵션 표
OPTION_NAME OPTION_TYPE OPTION_VALUE
default_table_expiration_days FLOAT64 데이터세트의 모든 테이블의 기본 수명(일)
friendly_name STRING 데이터세트를 설명하는 이름
description STRING 데이터세트에 대한 설명
labels ARRAY<STRUCT<STRING, STRING>> 데이터세트의 라벨을 나타내는 STRUCT의 배열

데이터세트 속성에 대한 자세한 내용은 REST API 문서의 데이터세트 리소스 페이지를 참조하세요.

예시

예시 1:

다음 예시는 INFORMATION_SCHEMATA.SCHEMATA_OPTIONS 뷰를 쿼리하여 기본 프로젝트(myproject)의 모든 데이터세트에 대한 기본 테이블 만료 시간을 검색합니다.

기본 프로젝트가 아닌 프로젝트에 쿼리를 실행하려면 프로젝트 ID를 `project_id`..INFORMATION_SCHEMA.view 형식으로 추가합니다(예: `myproject`.INFORMATION_SCHEMA.SCHEMATA_OPTIONS).

쿼리를 실행하려면 다음 안내를 따르세요.

Console

  1. GCP Console에서 BigQuery 웹 UI를 엽니다.

    GCP Console로 이동

  2. 쿼리 편집기 상자에 다음과 같은 표준 SQL 쿼리를 입력합니다. INFORMATION_SCHEMA에는 표준 SQL 구문이 필요합니다. 표준 SQL은 GCP Console의 기본 구문입니다.

    SELECT
     *
    FROM
     INFORMATION_SCHEMA.SCHEMATA_OPTIONS
    WHERE
     option_name="default_table_expiration_days"
    
  3. 실행을 클릭합니다.

CLI

query 명령어를 사용하고 --nouse_legacy_sql 또는 --use_legacy_sql=false 플래그를 사용하여 표준 SQL 구문을 지정합니다. INFORMATION_SCHEMA 쿼리에는 표준 SQL 구문이 필요합니다.

쿼리를 실행하려면 다음 명령어를 입력합니다.

bq query --nouse_legacy_sql \
'SELECT
   *
 FROM
   INFORMATION_SCHEMA.SCHEMATA_OPTIONS
 WHERE
   option_name="default_table_expiration_days"'

다음과 같은 결과가 표시됩니다.

  +----------------+---------------+-------------------------------+-------------+---------------------+
  |  catalog_name  |  schema_name  |          option_name          | option_type |    option_value     |
  +----------------+---------------+-------------------------------+-------------+---------------------+
  | myproject      | mydataset3    | default_table_expiration_days | FLOAT64     | 0.08333333333333333 |
  | myproject      | mydataset2    | default_table_expiration_days | FLOAT64     | 90.0                |
  | myproject      | mydataset1    | default_table_expiration_days | FLOAT64     | 30.0                |
  +----------------+---------------+-------------------------------+-------------+---------------------+
  

예 2:

다음 예시는 INFORMATION_SCHEMATA.SCHEMATA_OPTIONS 뷰를 쿼리하여 기본 프로젝트(myproject)에 있는 모든 데이터세트의 라벨을 검색합니다.

기본 프로젝트가 아닌 프로젝트에 쿼리를 실행하려면 프로젝트 ID를 `project_id`..INFORMATION_SCHEMA.view 형식으로 추가합니다(예: `myproject`.INFORMATION_SCHEMA.SCHEMATA_OPTIONS).

쿼리를 실행하려면 다음 안내를 따르세요.

Console

  1. GCP Console에서 BigQuery 웹 UI를 엽니다.

    GCP Console로 이동

  2. 쿼리 편집기 상자에 다음과 같은 표준 SQL 쿼리를 입력합니다. INFORMATION_SCHEMA에는 표준 SQL 구문이 필요합니다. 표준 SQL은 GCP Console의 기본 구문입니다.

    SELECT
     *
    FROM
     INFORMATION_SCHEMA.SCHEMATA_OPTIONS
    WHERE
     option_name="labels"
    
  3. 실행을 클릭합니다.

CLI

query 명령어를 사용하고 --nouse_legacy_sql 또는 --use_legacy_sql=false 플래그를 사용하여 표준 SQL 구문을 지정합니다. INFORMATION_SCHEMA 쿼리에는 표준 SQL 구문이 필요합니다.

쿼리를 실행하려면 다음 명령어를 입력합니다.

bq query --nouse_legacy_sql \
'SELECT
   *
 FROM
   INFORMATION_SCHEMA.SCHEMATA_OPTIONS
 WHERE
   option_name="labels"'

다음과 같은 결과가 표시됩니다.

  +----------------+---------------+-------------+---------------------------------+------------------------+
  |  catalog_name  |  schema_name  | option_name |          option_type            |      option_value      |
  +----------------+---------------+-------------+---------------------------------+------------------------+
  | myproject      | mydataset1    | labels      | ARRAY<STRUCT<STRING, STRING>>   | [STRUCT("org", "dev")] |
  | myproject      | mydataset2    | labels      | ARRAY<STRUCT<STRING, STRING>>   | [STRUCT("org", "dev")] |
  +----------------+---------------+-------------+---------------------------------+------------------------+
  

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.