뷰 정보 가져오기

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

다음과 같은 방법으로 뷰 메타데이터를 가져올 수 있습니다.

  • GCP Console 또는 기본 BigQuery 웹 UI 사용
  • bq show CLI 명령어 사용
  • tables.get API 메서드 호출
  • 클라이언트 라이브러리 사용
  • INFORMATION_SCHEMA 뷰 쿼리(베타)

필수 권한

뷰에 대한 정보를 가져오려면 최소한 bigquery.tables.get 권한이 부여되어 있어야 합니다. 사전 정의된 다음 Cloud IAM 역할에는 bigquery.tables.get 권한이 포함됩니다.

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

또한 사용자에게 bigquery.datasets.create 권한이 있으면 해당 사용자가 데이터세트를 만들 때 이에 대한 bigquery.dataOwner 액세스 권한이 부여됩니다. bigquery.dataOwner 액세스 권한은 사용자에게 데이터세트의 뷰에 대한 정보를 가져올 수 있는 권한을 제공합니다.

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

뷰 정보 가져오기

뷰 정보 가져오기는 테이블 정보 가져오기 프로세스와 동일합니다.

뷰 정보를 가져오려면 다음 안내를 따르세요.

Console

  1. 데이터세트를 확장합니다.

  2. 뷰 이름을 클릭합니다.

  3. 세부정보를 클릭하면 세부정보 탭에 뷰 설명, 뷰 정보, 뷰를 정의하는 SQL 쿼리가 표시됩니다.

    뷰 세부정보

기본 UI

  1. 데이터세트를 확장합니다.

  2. 뷰 이름을 클릭합니다.

  3. 세부정보를 클릭하면 세부정보 뷰 페이지에는 뷰 설명, 뷰 정보, 뷰를 정의하는 SQL 쿼리가 표시됩니다.

    뷰 세부정보

CLI

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

bq show \
--format=prettyjson \
project_id:dataset.view

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

  • project_id는 프로젝트 ID입니다.
  • dataset는 데이터세트 이름입니다.
  • view는 뷰 이름입니다.

예:

다음 명령어를 입력하면 기본 프로젝트의 데이터세트 mydataset에서 myview에 대한 정보를 표시합니다.

bq show --format=prettyjson mydataset.myview

다음 명령어를 입력하면 myotherproject에서 데이터세트 mydatasetmyview에 대한 정보를 표시합니다.

bq show --format=prettyjson myotherproject:mydataset.myview

API

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

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")
view := client.Dataset(datasetID).Table(viewID)
meta, err := view.Metadata(ctx)
if err != nil {
	return err
}
fmt.Printf("View %s, query: %s\n", view.FullyQualifiedName(), meta.ViewQuery)

Python

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

# from google.cloud import bigquery
# client = bigquery.Client()
# shared_dataset_id = 'my_shared_dataset'

view_ref = client.dataset(shared_dataset_id).table("my_shared_view")
view = client.get_table(view_ref)  # API Request

# Display view properties
print("View at {}".format(view.full_table_id))
print("View Query:\n{}".format(view.view_query))

INFORMATION_SCHEMA(베타)

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

VIEWS

INFORMATION_SCHEMA.VIEWS 뷰를 쿼리하면 쿼리 결과에 데이터세트의 각 뷰에 대한 행이 하나씩 포함됩니다.

INFORMATION_SCHEMA.VIEWS 뷰에 대한 쿼리에는 데이터세트 한정자가 있어야 합니다. 쿼리를 제출하는 사용자는 뷰가 포함된 데이터세트에 액세스할 수 있어야 합니다.

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

열 이름 데이터 유형
TABLE_CATALOG STRING 데이터세트가 포함된 프로젝트 이름
TABLE_SCHEMA STRING 뷰가 포함된 데이터세트 이름(또는 데이터세트 id라고 함)
TABLE_NAME STRING 뷰 이름(또는 테이블 id라고 함)
VIEW_DEFINITION STRING 뷰를 정의하는 SQL 쿼리
CHECK_OPTION STRING 반환되는 값은 항상 NULL
USE_STANDARD_SQL STRING 뷰가 표준 SQL 쿼리를 사용하여 생성된 경우 YES, useLegacySqltrue로 설정된 경우 NO

테이블 및 뷰 속성에 대한 자세한 내용은 REST API 문서의 테이블 리소스 페이지를 참조하세요.

예 1:

다음 예시에서는 나중에 사용할 수 있도록 예약된 check_option을 제외하고 INFORMATION_SCHEMA.VIEWS 뷰에서 모든 열을 검색합니다. 반환되는 메타데이터는 기본 프로젝트인 myprojectmydataset에 있는 모든 뷰의 메타데이터입니다.

INFORMATION_SCHEMA.VIEWS 뷰에 대한 쿼리에는 데이터세트 한정자가 있어야 합니다. 쿼리를 제출하는 사용자는 뷰가 포함된 데이터세트에 액세스할 수 있어야 합니다.

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

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

Console

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

    GCP Console로 이동

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

    SELECT
     * EXCEPT(check_option)
    FROM
     mydataset.INFORMATION_SCHEMA.VIEWS
    
  3. 실행을 클릭합니다.

CLI

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

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

bq query --nouse_legacy_sql \
'SELECT
   * EXCEPT(check_option)
 FROM
   mydataset.INFORMATION_SCHEMA.VIEWS'

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

  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | table_catalog  | table_schema  |  table_name   |                        view_definition                              | use_standard_sql |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | myproject      | mydataset     | myview        | SELECT column1, column2 FROM [myproject:mydataset.mytable] LIMIT 10 | NO               |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  

결과는 이 뷰가 legacy SQL 쿼리를 사용하여 생성되었음을 보여줍니다.

예 2:

다음 예에서는 기본 프로젝트 myproject에서 mydatasetmyview를 정의하는 데 사용되는 SQL 쿼리와 쿼리 구문을 검색합니다.

INFORMATION_SCHEMA.VIEWS 뷰에 대한 쿼리에는 데이터세트 한정자가 있어야 합니다. 쿼리를 제출하는 사용자는 뷰가 포함된 데이터세트에 액세스할 수 있어야 합니다.

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

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

Console

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

    GCP Console로 이동

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

    SELECT
     table_name, view_definition, use_standard_sql
    FROM
     mydataset.INFORMATION_SCHEMA.VIEWS
    WHERE
     table_name="myview"
    
  3. 실행을 클릭합니다.

CLI

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

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

bq query --nouse_legacy_sql \
'SELECT
   table_name, view_definition, use_standard_sql
 FROM
   mydataset.INFORMATION_SCHEMA.VIEWS
 WHERE
   table_name="myview"'

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

  +---------------+---------------------------------------------------------------+------------------+
  |  table_name   |                        view_definition                        | use_standard_sql |
  +---------------+---------------------------------------------------------------+------------------+
  | myview        | SELECT column1, column2, column3 FROM mydataset.mytable       | YES              |
  +---------------+---------------------------------------------------------------+------------------+
  

결과는 이 뷰가 표준 SQL 쿼리를 사용하여 생성되었음을 보여줍니다.

다음 단계

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

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

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