뷰 속성 업데이트

이 문서는 뷰 속성 또는 메타데이터를 업데이트하는 방법을 설명합니다. 뷰를 만든 후에 다음과 같은 뷰 속성을 업데이트할 수 있습니다.

필수 권한

뷰를 업데이트하려면 최소한 bigquery.tables.updatebigquery.tables.get 권한이 부여되어 있어야 합니다. 뷰의 SQL 쿼리를 업데이트하는 경우 뷰의 SQL 쿼리에서 참조하는 모든 테이블을 쿼리할 권한도 필요합니다.

사전 정의된 다음 Cloud IAM 역할에는 bigquery.tables.updatebigquery.tables.get 권한이 포함됩니다.

  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.admin

또한 사용자에게 bigquery.datasets.create 권한이 있으면 해당 사용자가 데이터세트를 만들 때 이에 대한 bigquery.dataOwner 액세스 권한이 부여됩니다. bigquery.dataOwner 액세스 권한이 있으면 사용자가 데이터세트에서 테이블과 뷰를 업데이트할 수 있습니다.

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

뷰의 SQL 쿼리 업데이트

뷰를 정의하는 데 사용되는 SQL 쿼리를 다음과 같은 방법으로 업데이트할 수 있습니다.

  • GCP Console 또는 기본 BigQuery 웹 UI 사용
  • 명령줄 도구의 bq update 명령어 사용
  • tables.patch API 메서드 호출
  • 클라이언트 라이브러리 사용

CLI 또는 API에서 SQL 언어를 legacy SQL에서 표준 SQL로 변경할 수 있습니다. GCP Console 또는 기존 BigQuery 웹 UI에서는 legacy SQL 뷰를 표준 SQL로 업데이트할 수 없습니다.

뷰의 SQL 쿼리를 업데이트하려면 다음 안내를 따르세요.

Console

  1. 리소스 패널에서 프로젝트와 데이터세트를 확장하고 뷰를 선택합니다.

  2. 세부정보 탭을 클릭합니다.

    뷰 세부정보

  3. 쿼리 상자 위에 있는 쿼리 수정 버튼을 클릭합니다. 나타나는 대화상자에서 열기를 클릭합니다.

    쿼리 수정

  4. 쿼리 편집기 상자에서 SQL 쿼리를 수정한 후 뷰 저장을 클릭합니다.

    뷰 저장

  5. 뷰 저장 대화상자에서 모든 필드가 올바른지 확인한 후 저장을 클릭합니다.

기본 UI

  1. 뷰를 선택합니다.

  2. 뷰 세부정보 창에서 세부정보를 클릭합니다.

  3. 쿼리 상자 아래에서 쿼리 편집으로 클릭합니다.

  4. 쿼리 상자에서 SQL 쿼리를 편집한 다음 뷰 저장을 클릭합니다.

    뷰 업데이트

CLI

bq update 명령어를 --view 플래그와 함께 실행합니다. 표준 SQL을 사용하거나 legacy SQL의 쿼리 언어를 표준 SQL로 업데이트하려면 --use_legacy_sql 플래그를 포함하고 이 플래그를 false로 설정합니다.

쿼리에서 Google Cloud Storage 또는 로컬 파일에 저장된 외부 사용자 정의 함수 리소스를 참조하는 경우 --view_udf_resource 플래그를 사용하여 해당 리소스를 지정합니다. --view_udf_resource 플래그는 여기서 설명하지 않습니다. UDF 사용에 대한 자세한 내용은 표준 SQL 사용자 정의 함수를 참조하세요.

기본 프로젝트가 아닌 다른 프로젝트에서 뷰를 업데이트하는 경우 데이터세트 이름에 프로젝트 ID를 추가합니다(형식: project_id:dataset).

bq update \
--use_legacy_sql=false \
--view_udf_resource=path_to_file \
--view='query' \
project_id:dataset.view

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

  • path_to_file은 뷰에 사용되는 사용자 정의 함수 리소스이며, 바로 로드 및 평가될 코드 파일의 URI 또는 로컬 파일 시스템 경로입니다. 여러 파일을 지정하려면 플래그를 반복합니다.
  • query는 유효한 표준 SQL 쿼리입니다.
  • project_id는 프로젝트 ID입니다.
  • dataset는 뷰가 포함된 데이터세트입니다.
  • view는 업데이트하려는 뷰의 이름입니다.

예:

mydataset에 있는 myview 뷰의 SQL 쿼리를 업데이트하려면 다음 명령어를 입력합니다. mydataset는 기본 프로젝트에 있습니다. 뷰를 업데이트하는 데 사용되는 쿼리 예는 미국 이름 데이터 공개 데이터세트의 데이터를 쿼리합니다.

bq update \
--use_legacy_sql=false \
--view \
'SELECT
  name,
  number
FROM
  `bigquery-public-data.usa_names.usa_1910_current`
WHERE
  gender = "M"
ORDER BY
  number DESC' \
mydataset.myview

mydataset에 있는 myview 뷰의 SQL 쿼리를 업데이트하려면 다음 명령어를 입력합니다. mydataset는 기본 프로젝트가 아닌 myotherproject에 있습니다. 뷰를 업데이트하는 데 사용되는 쿼리 예는 미국 이름 데이터 공개 데이터세트의 데이터를 쿼리합니다.

bq update \
--use_legacy_sql=false \
--view \
'SELECT
  name,
  number
FROM
  `bigquery-public-data.usa_names.usa_1910_current`
WHERE
  gender = "M"
ORDER BY
  number DESC' \
myotherproject:mydataset.myview

API

업데이트된 view 속성이 포함된 테이블 리소스tables.patch 메서드를 호출하여 뷰를 업데이트할 수 있습니다. tables.update 메서드는 전체 테이블 리소스를 대체하므로 tables.patch 메서드를 사용하는 것이 좋습니다.

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
}

newMeta := bigquery.TableMetadataToUpdate{
	// This example updates a view into the shakespeare dataset to exclude works named after kings.
	ViewQuery: "SELECT word, word_count, corpus, corpus_date FROM `bigquery-public-data.samples.shakespeare` WHERE corpus NOT LIKE '%king%'",
}

if _, err := view.Update(ctx, newMeta, meta.ETag); err != nil {
	return err
}

Python

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

# from google.cloud import bigquery
# client = bigquery.Client()
# project = 'my-project'
# source_dataset_id = 'my_source_dataset'
# source_table_id = 'us_states'
# shared_dataset_ref = client.dataset('my_shared_dataset')

# This example shows how to update a shared view of a source table of
# US States. The view's query will be updated to contain only states with
# names starting with 'M'.
view_ref = shared_dataset_ref.table("my_shared_view")
view = bigquery.Table(view_ref)
sql_template = 'SELECT name, post_abbr FROM `{}.{}.{}` WHERE name LIKE "M%"'
view.view_query = sql_template.format(project, source_dataset_id, source_table_id)
view = client.update_table(view, ["view_query"])  # API request

뷰의 만료 시간 업데이트

데이터세트 수준에서 기본 테이블 만료 시간을 설정하거나(테이블과 뷰에 모두 영향을 미침) 뷰를 만들 때 뷰의 만료 시간을 설정할 수 있습니다. 뷰를 만들 때 만료 시간을 설정하면 데이터세트의 기본 테이블 만료 시간은 무시됩니다. 데이터세트 수준에서 기본 테이블 만료 시간을 설정하지 않고 뷰를 만들 때 만료 시간을 설정하지 않으면 뷰가 만료되지 않으며 수동으로 삭제해야 합니다.

뷰가 생성된 후 언제든지 다음과 같은 방법으로 뷰의 만료 시간을 업데이트할 수 있습니다.

  • 기본 BigQuery 웹 UI 사용
    • 뷰 만료 시간 수정은 현재 GCP Console에서 지원되지 않음
  • CLI의 bq update 명령어 사용
  • tables.patch API 메서드 호출
  • 클라이언트 라이브러리 사용

뷰의 만료 시간을 업데이트하려면 다음 안내를 따르세요.

Console

  1. 탐색창에서 뷰를 선택합니다.

  2. 뷰 세부정보 페이지에서 세부정보 탭을 클릭합니다.

  3. 뷰 정보 오른쪽의 수정 아이콘(연필)을 클릭합니다.

  4. 뷰 정보 대화상자의 뷰 만료에서 날짜 지정을 클릭합니다.

  5. 날짜 선택도구에서 만료 날짜 및 시간을 입력한 다음 확인을 클릭합니다.

  6. 업데이트를 클릭합니다. 업데이트된 만료 시간이 뷰 정보 섹션에 나타납니다.

DDL

데이터 정의 언어(DDL) 문을 사용하면 표준 SQL 쿼리 구문으로 테이블과 뷰를 만들고 수정할 수 있습니다.

자세한 내용은 데이터 정의 언어 문 사용을 참조하세요.

GCP Console에서 DDL 문을 사용하려면 다음 안내를 따르세요.

  1. 새 쿼리 작성을 클릭합니다.

  2. 쿼리 편집기 텍스트 영역에 DDL 문을 입력합니다.

    ALTER VIEW mydataset.myview
    SET OPTIONS (
    -- Sets view expiration to timestamp 2025-02-03 12:34:56 in the America/Los Angeles time zone
    expiration_timestamp=TIMESTAMP("2025-02-03 12:34:56", "America/Los Angeles")
    );
    
  3. 쿼리 실행을 클릭합니다.

기본 UI

  1. 탐색창에서 뷰를 선택합니다.

  2. 뷰 세부정보 페이지에서 세부정보를 클릭합니다.

  3. 만료 시간에서 편집을 클릭합니다.

  4. 만료 업데이트 대화상자에서 남은 시간을 클릭하고 만료 시간을 일 단위로 입력합니다.

  5. 확인을 클릭합니다. 업데이트된 만료 시간은 세부정보 페이지에 나타납니다.

    뷰 만료

CLI

bq update 명령어를 --expiration 플래그와 함께 실행합니다. 기본 프로젝트가 아닌 다른 프로젝트에서 뷰를 업데이트하는 경우 데이터세트 이름에 프로젝트 ID를 추가합니다(형식: project_id:dataset).

bq update \
--expiration integer \
project_id:dataset.view

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

  • integer는 테이블의 기본 수명(단위: 초)입니다. 최솟값은 3,600초(1시간)입니다. 만료 시간은 현재 시간과 정수 값을 더한 값으로 계산됩니다.
  • project_id는 프로젝트 ID입니다.
  • dataset는 업데이트할 뷰가 포함된 데이터세트의 이름입니다.
  • view는 업데이트할 뷰의 이름입니다.

예:

다음 명령어를 입력하여 mydataset에 있는 myview의 만료 시간을 5일(43200초)로 업데이트합니다 mydataset는 기본 프로젝트에 있습니다.

bq update --expiration 432000 mydataset.myview

다음 명령어를 입력하여 mydataset에 있는 myview의 만료 시간을 5일(43200초)로 업데이트합니다. mydataset는 기본 프로젝트가 아닌 myotherproject에 있습니다.

bq update --expiration 432000 myotherproject:mydataset.myview

API

tables.patch 메서드를 호출하고 테이블 리소스expirationTime 속성을 사용합니다. tables.update 메서드는 전체 테이블 리소스를 대체하므로 tables.patch 메서드를 사용하는 것이 좋습니다. REST 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")
tableRef := client.Dataset(datasetID).Table(tableID)
meta, err := tableRef.Metadata(ctx)
if err != nil {
	return err
}
update := bigquery.TableMetadataToUpdate{
	ExpirationTime: time.Now().Add(time.Duration(5*24) * time.Hour), // table expiration in 5 days.
}
if _, err = tableRef.Update(ctx, update, meta.ETag); err != nil {
	return err
}

Python

뷰의 만료 시간을 업데이트하려면 테이블의 만료 시간을 업데이트하는 것과 동일한 프로세스를 사용하면 됩니다.

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

import datetime
import pytz

# from google.cloud import bigquery
# client = bigquery.Client()
# table_ref = client.dataset('my_dataset').table('my_table')
# table = client.get_table(table_ref)  # API request

assert table.expires is None

# set table to expire 5 days from now
expiration = datetime.datetime.now(pytz.utc) + datetime.timedelta(days=5)
table.expires = expiration
table = client.update_table(table, ["expires"])  # API request

# expiration is stored in milliseconds
margin = datetime.timedelta(microseconds=1000)
assert expiration - margin <= table.expires <= expiration + margin

뷰의 설명 업데이트

다음과 같은 방법으로 뷰의 설명을 업데이트할 수 있습니다.

  • GCP Console 또는 기본 BigQuery 웹 UI 사용
  • bq update CLI 명령어 사용
  • tables.patch API 메서드 호출
  • 클라이언트 라이브러리 사용

뷰 설명을 업데이트하려면 다음 안내를 따르세요.

Console

BigQuery 웹 UI를 사용하여 뷰를 만들 때는 설명을 추가할 수 없습니다. 뷰가 생성된 후 세부정보 페이지에 설명을 추가할 수 있습니다.

  1. 리소스 목록에서 뷰를 선택합니다.

  2. 세부정보 탭을 클릭합니다.

    뷰 세부정보

  3. 설명 옆에 있는 연필 아이콘을 클릭합니다.

    뷰 설명 수정

  4. 대화상자에 설명을 입력합니다. 업데이트를 클릭하여 새 설명을 저장합니다.

DDL

데이터 정의 언어(DDL) 문을 사용하면 표준 SQL 쿼리 구문으로 테이블과 뷰를 만들고 수정할 수 있습니다.

자세한 내용은 데이터 정의 언어 문 사용을 참조하세요.

GCP Console에서 DDL 문을 사용하려면 다음 안내를 따르세요.

  1. 새 쿼리 작성을 클릭합니다.

  2. 쿼리 편집기 텍스트 영역에 DDL 문을 입력합니다.

     ALTER VIEW mydataset.myview
     SET OPTIONS (
       description="Description of myview"
     );
     

  3. 쿼리 실행을 클릭합니다.

기본 UI

  1. 탐색창에서 뷰를 선택합니다.

  2. 뷰 세부정보 페이지에서 세부정보를 클릭합니다.

  3. 설명 섹션에서 이 뷰 설명하기를 클릭하여 설명 상자를 엽니다.

  4. 상자에 설명을 입력합니다. 상자 바깥을 클릭하면 텍스트가 저장됩니다.

    테이블 설명

CLI

bq update 명령어를 --description 플래그와 함께 실행합니다. 기본 프로젝트가 아닌 다른 프로젝트에서 뷰를 업데이트하는 경우 데이터세트 이름에 프로젝트 ID를 추가합니다(형식: [PROJECT_ID]:[DATASET]).

bq update \
--description "description" \
project_id:dataset.view

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

  • description은 따옴표 안의 뷰를 설명하는 텍스트입니다.
  • project_id는 프로젝트 ID입니다.
  • dataset는 업데이트할 뷰가 포함된 데이터세트의 이름입니다.
  • view는 업데이트할 뷰의 이름입니다.

예:

다음 명령어를 입력하여 mydataset에 있는 myview의 설명을 'Description of myview'로 변경합니다. mydataset는 기본 프로젝트에 있습니다.

bq update --description "Description of myview" mydataset.myview

다음 명령어를 입력하여 mydataset에 있는 myview의 설명을 'Description of myview'로 변경합니다. mydataset는 기본 프로젝트가 아닌 myotherproject에 있습니다.

bq update \
--description "Description of myview" \
myotherproject:mydataset.myview

API

tables.patch 메서드를 호출하고 description 속성을 사용하여 테이블 리소스의 뷰 설명을 업데이트합니다. tables.update 메서드는 전체 테이블 리소스를 대체하므로 tables.patch 메서드를 사용하는 것이 좋습니다.

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")
tableRef := client.Dataset(datasetID).Table(tableID)
meta, err := tableRef.Metadata(ctx)
if err != nil {
	return err
}
update := bigquery.TableMetadataToUpdate{
	Description: "Updated description.",
}
if _, err = tableRef.Update(ctx, update, meta.ETag); err != nil {
	return err
}

자바

뷰의 설명을 업데이트하려면 테이블의 설명을 업데이트하는 것과 동일한 프로세스를 사용하면 됩니다.

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

// String datasetName = "my_dataset_name";
// String tableName = "my_table_name";
// String newDescription = "new_description";

Table beforeTable = bigquery.getTable(datasetName, tableName);
TableInfo tableInfo = beforeTable.toBuilder()
    .setDescription(newDescription)
    .build();
Table afterTable = bigquery.update(tableInfo);

Python

뷰의 설명을 업데이트하려면 테이블의 설명을 업데이트하는 것과 동일한 프로세스를 사용하면 됩니다.

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

# from google.cloud import bigquery
# client = bigquery.Client()
# table_ref = client.dataset('my_dataset').table('my_table')
# table = client.get_table(table_ref)  # API request

assert table.description == "Original description."
table.description = "Updated description."

table = client.update_table(table, ["description"])  # API request

assert table.description == "Updated description."

다음 단계

  • 뷰 복사와 뷰 삭제를 포함한 뷰 관리에 대한 자세한 내용은 뷰 관리를 참조하세요.
  • 뷰 만들기에 대한 자세한 내용은 뷰 만들기를 참조하세요.
  • 승인된 뷰 만들기에 대한 자세한 내용은 승인된 뷰 만들기를 참조하세요.
  • 뷰 나열에 대한 자세한 내용은 뷰 나열을 참조하세요.
  • 뷰 메타데이터 가져오기에 대한 자세한 내용은 뷰 정보 가져오기를 참조하세요.
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

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

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