데이터세트 관리

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

데이터세트 이름 바꾸기

현재는 기존 데이터세트의 이름을 변경할 수 없지만 데이터세트는 복사할 수 있습니다. 데이터세트 복사를 참조하세요.

데이터세트 복사

리전 간 복사를 비롯해 데이터 세트를 복사하는 단계를 알아보려면 데이터 세트 복사를 참조하세요.

데이터 세트 이동

데이터세트를 수동으로 한 위치에서 다른 위치로 옮기려면 다음 절차를 따르세요.

  1. 데이터세트와 같은 위치 내 리전 또는 멀티 리전 Cloud Storage 버킷으로 BigQuery 테이블의 데이터를 내보냅니다. 예를 들어 데이터세트가 EU 멀티 리전 위치에 있는 경우 EU 내 리전 또는 멀티 리전 버킷으로 데이터를 내보냅니다.

    BigQuery에서 데이터를 내보내는 경우에는 요금이 청구되지 않지만 Cloud Storage에 내보낸 데이터를 저장하는 경우에는 요금이 청구됩니다. BigQuery 내보내기를 사용하는 경우 내보내기 작업의 제한사항이 적용됩니다.

  2. Cloud Storage 버킷의 데이터를 새 위치 내 리전 또는 멀티 리전 버킷으로 복사하거나 옮깁니다. 예를 들어 US 멀티 리전 위치의 데이터를 도쿄 리전 위치로 이동하는 경우 데이터를 도쿄 내 리전 버킷으로 전송합니다. Cloud Storage 객체 전송에 대한 자세한 내용은 Cloud Storage 문서의 객체 이름 변경, 복사, 이동을 참조하세요.

    리전 간에 데이터를 전송하면 Cloud Storage에 네트워크 이그레스 요금이 청구됩니다.

  3. 새 위치의 Cloud Storage 버킷으로 데이터를 전송한 후 새 위치에서 새로운 BigQuery 데이터세트를 만듭니다. 그런 다음 Cloud Storage 버킷의 데이터를 BigQuery로 로드합니다.

    BigQuery로 데이터를 로드하는 경우에는 요금이 청구되지 않지만 데이터 또는 버킷을 삭제하기 전에 데이터를 Cloud Storage에 저장하면 요금이 청구됩니다. 데이터를 로드한 후 BigQuery에 데이터를 저장하는 경우에도 요금이 청구됩니다. BigQuery로 데이터를 로드하는 경우 로드 작업의 제한사항이 적용됩니다.

Cloud Storage를 사용하여 대규모 데이터세트를 저장 및 이동하는 방법에 대한 자세한 내용은 빅데이터에 Cloud Storage 사용을 참조하세요.

데이터세트 삭제

다음 방법을 사용하여 데이터세트를 삭제할 수 있습니다.

  • Cloud Console 또는 기본 BigQuery 웹 UI 사용
  • bq 명령줄 도구에서 bq rm 명령어 사용
  • datasets.delete API 메서드 호출
  • 클라이언트 라이브러리 사용

필수 권한

데이터세트를 삭제하려면 최소한 bigquery.datasets.delete 권한이 부여되어 있어야 합니다. 데이터세트에 테이블 또는 뷰가 포함된 경우 bigquery.tables.delete도 필요합니다. 다음과 같은 사전 정의된 Cloud IAM 역할에는 bigquery.datasets.deletebigquery.tables.delete 권한이 모두 포함되어 있습니다.

  • bigquery.dataOwner
  • bigquery.admin

또한 bigquery.datasets.create 권한이 있는 사용자는 데이터세트를 만들 때 해당 데이터세트에 대한 bigquery.dataOwner 액세스 권한을 부여받습니다. bigquery.dataOwner 액세스 권한이 있으면 사용자가 생성한 데이터세트 및 테이블을 삭제할 수 있습니다.

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

데이터세트 삭제

Cloud Console 또는 기본 웹 UI를 사용하여 데이터세트를 삭제하면 데이터세트의 테이블과 뷰, 그리고 이에 포함된 데이터가 삭제됩니다. bq 명령줄 도구를 사용하여 데이터 세트를 삭제하는 경우 -r 플래그를 사용하여 데이터 세트의 테이블과 뷰를 삭제해야 합니다.

데이터세트를 삭제하려면 다음 안내를 따르세요.

Console

  1. 리소스 창에서 데이터세트를 선택한 후 창 오른쪽에서 데이터세트 삭제를 클릭합니다.

    데이터세트 삭제

  2. 데이터세트 삭제 대화상자의 입력란에 데이터세트의 이름을 입력한 후 삭제를 클릭합니다.

기본 UI

  1. 탐색창에서 데이터세트 이름 옆에 있는 아래쪽 화살표 아이콘(아래쪽 화살표 아이콘)을 클릭한 후 데이터세트 삭제를 클릭합니다.

  2. 데이터세트 삭제 대화상자에서 다음을 수행합니다.

    • 데이터세트 ID에 삭제할 데이터세트의 이름을 입력합니다.
    • 확인을 클릭합니다.

bq

bq rm 명령어를 --dataset 또는 -d 바로가기 플래그와 함께 사용하여 데이터세트를 삭제합니다. bq 명령줄 도구를 사용하여 데이터 세트를 삭제할 때는 명령어를 확인해야 합니다. -f 플래그를 사용하면 확인을 건너뛸 수 있습니다.

또한 데이터세트에 테이블이 포함된 경우 -r 플래그를 사용하여 데이터세트에서 모든 테이블을 삭제해야 합니다. 기본 프로젝트가 아닌 다른 프로젝트의 테이블을 삭제하려면 프로젝트 ID를 project_id:dataset 형식으로 데이터세트 이름에 추가합니다.

bq rm -r -f -d <var>project_id:dataset</var>

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

  • project_id는 프로젝트 ID입니다.
  • dataset는 삭제하려는 데이터 세트의 이름입니다.

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

다음 명령어를 입력하여 기본 프로젝트에서 mydataset 및 여기에 포함된 모든 테이블을 삭제합니다. 이 명령어는 선택적인 -d 단축키를 사용합니다.

bq rm -r -d mydataset

메시지가 표시되면 y를 입력하고 Enter 키를 누릅니다.

다음 명령어를 입력하여 myotherproject에서 mydataset 및 이에 포함된 모든 테이블을 삭제합니다. 이 명령어는 선택적인 -d 단축키를 사용하지 않습니다. -f 플래그는 확인을 건너뛰기 위해 사용됩니다.

bq rm -r -f myotherproject:mydataset

API

datasets.delete 메서드를 호출하여 데이터세트를 삭제하고 deleteContents 매개변수를 true로 설정하여 그 안의 테이블을 삭제합니다.

C#

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


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

public class BigQueryDeleteDataset
{
    public void DeleteDataset(
        string projectId = "your-project-id",
        string datasetId = "your_empty_dataset"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        // Delete a dataset that does not contain any tables
        client.DeleteDataset(datasetId: datasetId);
        Console.WriteLine($"Dataset {datasetId} deleted.");
    }
}

Go

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

import (
	"context"
	"fmt"

	"cloud.google.com/go/bigquery"
)

// deleteDataset demonstrates the deletion of an empty dataset.
func deleteDataset(projectID, datasetID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	ctx := context.Background()

	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	// To recursively delete a dataset and contents, use DeleteWithContents.
	if err := client.Dataset(datasetID).Delete(ctx); err != nil {
		return fmt.Errorf("Delete: %v", err)
	}
	return nil
}

자바

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

DatasetId datasetId = DatasetId.of(projectId, datasetName);
boolean deleted = bigquery.delete(datasetId, DatasetDeleteOption.deleteContents());
if (deleted) {
  // the dataset was deleted
} else {
  // the dataset 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 deleteDataset() {
  // Deletes a dataset named "my_dataset".

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

  // Create a reference to the existing dataset
  const dataset = bigquery.dataset(datasetId);

  // Delete the dataset and its contents
  await dataset.delete({force: true});
  console.log(`Dataset ${dataset.id} 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';

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

Python

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


from google.cloud import bigquery

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

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

# Use the delete_contents parameter to delete a dataset and its contents.
# Use the not_found_ok parameter to not receive an error if the dataset has already been deleted.
client.delete_dataset(
    dataset_id, delete_contents=True, not_found_ok=True
)  # Make an API request.

print("Deleted dataset '{}'.".format(dataset_id))

Ruby

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

require "google/cloud/bigquery"

def delete_dataset dataset_id = "my_empty_dataset"
  bigquery = Google::Cloud::Bigquery.new

  # Delete a dataset that does not contain any tables
  dataset = bigquery.dataset dataset_id
  dataset.delete
  puts "Dataset #{dataset_id} deleted."
end

다음 단계