데이터세트 정보 가져오기

이 문서에서는 BigQuery의 데이터세트에 대한 정보 또는 메타데이터를 가져오는 방법에 대해 설명합니다.

다음을 통해 데이터세트 정보를 가져올 수 있습니다.

  • GCP Console 또는 기본 BigQuery 웹 UI 사용
  • bq show CLI 명령어 사용
  • datasets.get API 메소드 호출
  • INFORMATION_SCHEMA 뷰 쿼리(베타)

필수 권한

데이터세트의 정보 또는 메타데이터를 가져오려면 데이터세트 수준의 READER 역할을 할당받거나 bigquery.datasets.get 권한이 있는 프로젝트 수준 IAM 역할을 할당받아야 합니다. 사전 정의된 프로젝트 수준의 모든 IAM 역할에는 bigquery.jobUser제외bigquery.datasets.get 권한이 포함되어 있습니다.

BigQuery의 IAM 역할과 권한에 대한 자세한 내용은 액세스 제어를 참조하세요. 데이터세트 수준 역할에 대한 자세한 내용은 데이터세트의 기본 역할을 참조하세요.

데이터세트 정보 가져오기

프로젝트에서 데이터세트 정보를 가져오려면 다음 안내를 따르세요.

Console

리소스 패널에서 데이터세트 이름을 클릭합니다. 쿼리 편집기 아래에 데이터세트의 설명과 세부정보가 표시됩니다. 데이터세트의 테이블은 리소스 패널의 테이블 아래에 중첩되어 있습니다.

데이터세트 보기

기본적으로 익명 데이터세트는 BigQuery 웹 UI에 표시되지 않습니다. 익명 데이터세트 정보를 표시하려면 CLI나 API를 사용합니다.

기본 UI

데이터세트 이름을 클릭합니다. 데이터세트 세부정보 페이지에 데이터세트 설명, 세부정보, 테이블이 표시됩니다.

데이터세트 보기

기본적으로 익명 데이터세트는 BigQuery 웹 UI에 표시되지 않습니다. 익명 데이터세트에 대한 정보를 표시하려면 CLI나 API를 사용해야 합니다.

명령줄

bq show 명령어를 실행합니다. --format 플래그를 이용하면 출력을 제어할 수 있습니다. 기본 프로젝트가 아닌 프로젝트의 데이터세트 정보를 가져오려면 프로젝트 ID를 [PROJECT_ID]:[DATASET] 형식으로 데이터세트 이름에 추가합니다.

익명 데이터세트 정보를 표시하려면 bq ls --all 명령어를 사용하여 모든 데이터세트를 나열한 후 bq show 명령어에 익명 데이터세트 이름을 사용합니다.

bq show --format=prettyjson [PROJECT_ID]:[DATASET]

각 항목의 의미는 다음과 같습니다.

  • [PROJECT_ID]는 프로젝트의 이름입니다.
  • [DATASET]는 데이터세트의 이름입니다.

예시:

다음 명령어를 입력하면 기본 프로젝트에 있는 mydataset에 대한 정보를 표시할 수 있습니다.

bq show --format=prettyjson mydataset

다음 명령어를 입력하면 myotherproject에 있는 mydataset에 대한 정보를 표시할 수 있습니다.

bq show --format=prettyjson myotherproject:mydataset

다음 명령어를 입력하면 기본 프로젝트에 있는 익명 데이터세트 _1234abcd56efgh78ijkl1234에 대한 정보를 표시할 수 있습니다.

bq show --format=prettyjson _1234abcd56efgh78ijkl1234

API

datasets.get API 메소드를 호출하고 관련 매개변수를 제공합니다.

Go

이 샘플을 시도하기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 Go 설정 안내를 따르세요. 자세한 내용은 BigQuery Go API 참조 문서를 확인하세요.

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
meta, err := client.Dataset(datasetID).Metadata(ctx)
if err != nil {
	return err
}

fmt.Printf("Dataset ID: %s\n", datasetID)
fmt.Printf("Description: %s\n", meta.Description)
fmt.Println("Labels:")
for k, v := range meta.Labels {
	fmt.Printf("\t%s: %s", k, v)
}
fmt.Println("Tables:")
it := client.Dataset(datasetID).Tables(ctx)

cnt := 0
for {
	t, err := it.Next()
	if err == iterator.Done {
		break
	}
	cnt++
	fmt.Printf("\t%s\n", t.TableID)
}
if cnt == 0 {
	fmt.Println("\tThis dataset does not contain any tables.")
}

자바

이 샘플을 시도해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 자바 설정 안내를 따르세요. 자세한 내용은 BigQuery 자바 API 참조 문서를 확인하세요.

DatasetId datasetId = DatasetId.of(projectId, datasetName);
Dataset dataset = bigquery.getDataset(datasetId);

Python

이 샘플을 시도해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 BigQuery Python API 참조 문서를 확인하세요.

from google.cloud import bigquery

# TODO(developer): Construct a BigQuery client object.
# client = bigquery.Client()

# TODO(developer): Set dataset_id to the ID of the dataset to fetch.
# dataset_id = 'your-project.your_dataset'

dataset = client.get_dataset(dataset_id)

full_dataset_id = "{}.{}".format(dataset.project, dataset.dataset_id)
friendly_name = dataset.friendly_name
print(
    "Got dataset '{}' with friendly_name '{}'.".format(
        full_dataset_id, friendly_name
    )
)

# View dataset properties
print("Description: {}".format(dataset.description))
print("Labels:")
labels = dataset.labels
if labels:
    for label, value in labels.items():
        print("\t{}: {}".format(label, value))
else:
    print("\tDataset has no labels defined.")

# View tables in dataset
print("Tables:")
tables = list(client.list_tables(dataset))  # API request(s)
if tables:
    for table in tables:
        print("\t{}".format(table.table_id))
else:
    print("\tThis dataset does not contain any tables.")

INFORMATION_SCHEMA(베타)

INFORMATION_SCHEMA는 데이터세트, 테이블, 뷰에 관한 메타데이터의 액세스를 제공하는 일련의 뷰입니다.

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 데이터세트의 지리적 위치

예시

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

기본 프로젝트가 아닌 프로젝트에 쿼리를 실행하려면 프로젝트 ID를 `[PROJECT_ID]`.INFORMATION_SCHEMA.[VIEW] 형식으로 데이터세트에 추가합니다(예: `myproject`.INFORMATION_SCHEMA.SCHEMATA).

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

콘솔

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

    BigQuery 웹 UI로 이동

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

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

명령줄

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의 배열

예시

예시 1:

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

기본 프로젝트가 아닌 프로젝트에 쿼리를 실행하려면 프로젝트 ID를 `[PROJECT_ID]`.INFORMATION_SCHEMA.[VIEW] 형식으로 데이터세트에 추가합니다(예: `myproject`.INFORMATION_SCHEMA.SCHEMATA_OPTIONS).

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

Console

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

    BigQuery 웹 UI로 이동

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

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

명령줄

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를 엽니다.

    BigQuery 웹 UI로 이동

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

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

명령줄

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")] |
  +----------------+---------------+-------------+---------------------------------+------------------------+
  

다음 단계

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

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

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