뷰 관리

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

뷰 복사

현재 데이터세트에서 다른 데이터세트로 뷰를 복사하기 위한 방법은 지원되지 않습니다. 타겟 데이터세트에서 뷰를 다시 만들어야 합니다.

뷰를 다시 만들기 위해 다음과 같이 기존 뷰에서 SQL 쿼리를 복사할 수 있습니다. 뷰를 정의하는 SQL 쿼리를 복사하려면 다음 안내를 따르세요.

기본 UI

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

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

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

명령줄

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

뷰 이름 바꾸기

현재 기존 뷰의 이름을 변경할 수 없습니다. 뷰 이름을 변경해야 하는 경우 새 이름으로 뷰를 다시 만들어야 합니다.

뷰 삭제

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

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

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

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

필수 권한

뷰 삭제에는 테이블 삭제와 동일한 권한이 필요합니다. 즉, 데이터세트 수준의 OWNER 액세스 권한이 있거나 bigquery.tables.delete 권한이 포함된 프로젝트 수준의 IAM 역할을 할당받아야 합니다. 아래의 사전 정의된 프로젝트 수준 IAM 역할에는 bigquery.tables.delete 권한이 있습니다.

사전 정의된 프로젝트 수준 역할이 할당된 사용자는 프로젝트의 모든 데이터세트에서 뷰를 삭제할 수 있습니다. 데이터세트 수준의 OWNER 권한이 할당된 사용자는 해당 데이터세트의 뷰만 삭제할 수 있습니다.

또한 bigquery.user 역할에는 bigquery.datasets.create 권한이 있으므로 bigquery.user 역할에 할당된 사용자는 사용자가 만드는 모든 데이터세트의 뷰를 삭제할 수 있습니다. bigquery.user 역할에 할당된 사용자가 데이터세트를 만들면 이 사용자에게 데이터세트 OWNER 액세스 권한이 부여됩니다. 데이터세트 OWNER 액세스 권한이 있으면 사용자는 해당 데이터세트와 데이터세트에 포함된 테이블 및 뷰를 완전히 제어할 수 있습니다.

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

뷰 삭제

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

기본 UI

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

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

명령줄

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 참조 문서를 참조하세요.

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

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

// Creates a client
const bigquery = new BigQuery({projectId});

// Deletes 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
# client = bigquery.Client()
# dataset_id = 'my_dataset'
# table_id = 'my_table'

table_ref = client.dataset(dataset_id).table(table_id)
client.delete_table(table_ref)  # API request

print('Table {}:{} deleted.'.format(dataset_id, 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

다음 단계

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

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

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