뷰 관리

이 문서에서는 BigQuery에서 뷰를 관리하는 방법을 설명합니다. 다음과 같은 방법으로 BigQuery 뷰를 관리할 수 있습니다.

뷰 복사

현재는 GCP Console을 사용해서만 뷰를 복사할 수 있습니다.

기본 웹 UI, CLI, REST API, 클라이언트 라이브러리를 사용해서는 뷰를 복사할 수 없습니다. 대신 대상 데이터세트에서 뷰를 다시 만들어야 합니다. 뷰를 다시 만들기 위해 CLI 또는 기본 웹 UI를 사용해서 뷰의 SQL 쿼리를 복사할 수 있습니다.

필수 권한

GCP Console에서 뷰를 복사하려면 최소한 다음 권한이 부여되어 있어야 합니다.

소스 데이터세트에 대한 권한:

  • 뷰의 메타데이터를 보기 위한 bigquery.tables.get
  • 뷰의 SQL 쿼리를 복사하기 위한 bigquery.tables.getData

뷰의 SQL 쿼리에서 참조되는 테이블에 액세스하기 위해서는 bigquery.tables.getData와 같은 추가 권한이 필요할 수 있습니다.

대상 데이터세트에 대한 권한:

  • 대상 데이터세트에서 뷰의 사본을 만들기 위한 bigquery.tables.create

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

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

또한 사용자에게 bigquery.datasets.create 권한이 있으면 해당 사용자가 데이터세트를 만들 때 이에 대한 bigquery.dataOwner 액세스 권한이 부여됩니다. bigquery.dataOwner 액세스 권한이 있으면 사용자가 소스 데이터세트에서 뷰를 복사할 수 있지만, 사용자가 대상 데이터세트를 만든 것이 아니라면 여전히 대상 데이터세트에 대한 액세스 권한이 필요합니다.

BigQuery의 Cloud IAM 역할 및 권한에 대한 자세한 내용은 사전 정의된 역할 및 권한을 참조하세요.

뷰 복사

뷰를 복사하려면 다음 안내를 따르세요.

Console

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

  2. 창 오른쪽에서 뷰 복사를 클릭합니다.

  3. 뷰 복사 대화상자에서 다음을 수행합니다.

    • 소스 섹션에서 프로젝트 이름, 데이터세트 이름, 테이블 이름이 올바른지 확인합니다.
    • 대상 섹션에서 다음을 수행합니다.

      • 프로젝트 이름에서 뷰를 복사하려는 프로젝트를 선택합니다.
      • 데이터세트 이름에서 복사된 뷰를 포함할 데이터세트를 선택합니다.
      • 테이블 이름에 뷰 이름을 입력합니다. 상자에 새 뷰 이름을 입력하여 뷰 이름을 바꿀 수 있습니다. 새 이름을 입력할 때는 뷰 이름 지정 규칙을 따라야 합니다.

      뷰 복사 대화상자

    • 복사를 클릭합니다.

기본 UI

기본 웹 UI는 뷰 복사를 지원하지 않습니다. 대신 대상 데이터세트에서 뷰를 다시 만들어야 합니다. 뷰를 다시 만들기 위해 뷰 정의에 사용되는 SQL 쿼리를 복사할 수 있습니다.

뷰를 정의하는 SQL 쿼리를 복사하려면 다음 안내를 따르세요.

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

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

  3. 쿼리 상자의 텍스트를 복사합니다.

CLI

bq 명령줄 도구는 뷰 복사를 지원하지 않습니다. 대신 대상 데이터세트에서 뷰를 다시 만들어야 합니다. 뷰를 다시 만들기 위해 뷰 정의에 사용되는 SQL 쿼리를 복사할 수 있습니다.

뷰를 정의하는 SQL 쿼리를 복사하려면 bq show 명령어를 실행하세요. --format 플래그를 사용하면 출력을 제어할 수 있습니다. 기본 프로젝트가 아닌 다른 프로젝트의 뷰 정보를 가져오는 경우, 프로젝트 ID를 project_id:dataset 형식으로 데이터세트에 추가합니다. 파일에 뷰 속성을 쓰려면 명령어에 > path_to_file을 추가합니다.

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

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

  • project_id는 프로젝트 ID입니다.
  • dataset는 데이터세트 이름입니다.
  • view는 뷰 이름입니다.
  • path_to_file은 로컬 머신의 출력 파일 경로입니다.

예를 들면 다음과 같습니다.

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

bq show --format=prettyjson mydataset.myview

다음 명령어를 입력하여 mydatasetmyview에 대한 정보를 표시합니다. mydataset는 기본 프로젝트가 아닌 myotherproject에 있습니다. 뷰 속성이 로컬 파일 /tmp/myview.json에 기록됩니다.

bq show \
--format=prettyjson \
myotherproject:mydataset.myview > /tmp/myview.json

API

REST API는 뷰 복사를 지원하지 않습니다. 대신 대상 데이터세트에서 뷰를 다시 만들어야 합니다. REST API를 사용하여 뷰를 만드는 방법에 대한 자세한 내용은 뷰 만들기를 참조하세요.

뷰 이름 바꾸기

현재는 뷰를 복사하기 위해 GCP Console을 사용할 때만 뷰 이름을 바꿀 수 있습니다. 뷰를 복사할 때 이름을 바꾸는 방법에 대한 안내는 뷰 복사를 참조하세요.

기본 웹 UI, CLI, API, 클라이언트 라이브러리를 사용해서는 기존 뷰의 이름을 변경할 수 없습니다. 대신 새 이름으로 뷰를 다시 만들어야 합니다.

뷰 삭제

뷰는 다음 방법으로 삭제할 수 있습니다.

  • GCP Console 또는 기본 BigQuery 웹 UI 사용
  • 명령줄 도구의 bq rm 명령어 사용
  • tables.delete API 메서드 호출

현재까지는 사용 가능한 방법을 사용해서 뷰를 한 번에 하나만 삭제할 수 있습니다.

지정된 시간이 지난 후 자동으로 뷰를 삭제하려면 데이터세트 수준의 기본 만료 시간을 설정하거나 뷰를 생성할 때 만료 시간을 설정하세요.

필수 권한

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

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

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

BigQuery의 Cloud IAM 역할 및 권한에 대한 자세한 내용은 사전 정의된 역할 및 권한을 참조하세요.

뷰 삭제

뷰를 삭제하려면 다음 안내를 따르세요.

Console

  1. 리소스 패널에서 뷰를 선택합니다. 창의 오른쪽에 있는 뷰 삭제를 클릭합니다.

  2. 대화상자에 뷰 이름을 입력하고 삭제를 클릭하여 확인합니다.

기본 UI

  1. 탐색 메뉴의 뷰 이름 옆에 있는 아래쪽 화살표 아이콘(아래쪽 화살표 아이콘)을 클릭하고 뷰 삭제를 클릭합니다.

  2. 메시지가 나타나면 확인을 클릭합니다.

CLI

bq rm 명령어를 --table 플래그(또는 -t 단축키)와 함께 사용하여 뷰를 삭제합니다. CLI를 사용하여 뷰를 제거하는 경우 작업을 확인해야 합니다. --force 플래그(또는 -f 단축키)를 사용하면 확인을 건너뛸 수 있습니다.

뷰가 기본 프로젝트가 아닌 다른 프로젝트의 데이터세트에 있는 경우, 프로젝트 ID를 project_id:dataset 형식으로 데이터세트 이름에 추가합니다.

bq rm \
-f \
-t \
project_id:dataset.view

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

  • project_id는 프로젝트 ID입니다.
  • dataset는 테이블이 들어 있는 데이터세트의 이름입니다.
  • view은 삭제할 뷰의 이름입니다.

예를 들면 다음과 같습니다.

다음 명령어를 입력하여 myviewmydataset에서 삭제합니다. mydataset는 기본 프로젝트에 있습니다.

bq rm -t mydataset.myview

다음 명령어를 입력하여 myviewmydataset에서 삭제합니다. mydataset는 기본 프로젝트가 아닌 myotherproject에 있습니다.

bq rm -t myotherproject:mydataset.myview

다음 명령어를 입력하여 myviewmydataset에서 삭제합니다. mydataset는 기본 프로젝트에 있습니다. 이 명령어는 -f 단축키를 사용하여 확인을 건너뜁니다.

bq rm -f -t mydataset.myview

API

tables.delete API 메서드를 호출하고 tableId 매개변수를 사용하여 삭제할 뷰를 지정합니다.

C#

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


using Google.Cloud.BigQuery.V2;
using System;

public class BigQueryDeleteTable
{
    public void DeleteTable(
        string projectId = "your-project-id",
        string datasetId = "your_dataset_id",
        string tableId = "your_table_id"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        client.DeleteTable(datasetId, tableId);
        Console.WriteLine($"Table {tableId} deleted.");
    }
}

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")
table := client.Dataset(datasetID).Table(tableID)
if err := table.Delete(ctx); err != nil {
	return err
}

자바

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

TableId tableId = TableId.of(projectId, datasetName, tableName);
boolean deleted = bigquery.delete(tableId);
if (deleted) {
  // the table was deleted
} else {
  // the table was not found
}

Node.js

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

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function deleteTable() {
  // Deletes "my_table" from "my_dataset".

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = "my_dataset";
  // const tableId = "my_table";

  // Delete the table
  await bigquery
    .dataset(datasetId)
    .table(tableId)
    .delete();

  console.log(`Table ${tableId} deleted.`);
}

PHP

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

use Google\Cloud\BigQuery\BigQueryClient;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $datasetId = 'The BigQuery dataset ID';
// $tableId = 'The BigQuery table ID';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$table = $dataset->table($tableId);
$table->delete();
printf('Deleted table %s.%s' . PHP_EOL, $datasetId, $tableId);

Python

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

from google.cloud import bigquery

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

# TODO(developer): Set table_id to the ID of the table to fetch.
# table_id = 'your-project.your_dataset.your_table'

# If the table does not exist, delete_table raises
# google.api_core.exceptions.NotFound unless not_found_ok is True
client.delete_table(table_id, not_found_ok=True)
print("Deleted table '{}'.".format(table_id))

Ruby

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

require "google/cloud/bigquery"

def delete_table dataset_id = "my_dataset_id", table_id = "my_table_id"
  bigquery = Google::Cloud::Bigquery.new
  dataset  = bigquery.dataset dataset_id
  table    = dataset.table table_id

  table.delete

  puts "Table #{table_id} deleted."
end

다음 단계

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

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

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