라벨 삭제

다음과 같은 방법으로 데이터 세트, 테이블, 뷰에서 라벨을 삭제할 수 있습니다.

  • Google Cloud 콘솔 사용
  • SQL DDL 문 사용
  • bq 명령줄 도구의 bq update 명령어 사용
  • datasets.patch 또는 tables.patch API 메서드 호출하기
  • 클라이언트 라이브러리 사용

시작하기 전에

사용자에게 이 문서의 각 작업을 수행하는 데 필요한 권한을 부여하는 Identity and Access Management(IAM) 역할을 부여합니다. 태스크를 수행하는 데 필요한 권한(있는 경우)이 태스크의 '필요한 권한' 섹션에 나열됩니다.

데이터 세트 라벨 삭제

다음 섹션에서는 데이터 세트 라벨을 삭제하는 권한과 단계를 지정합니다.

필수 권한

데이터 세트 라벨을 삭제하려면 다음 IAM 권한이 필요합니다.

  • bigquery.datasets.get
  • bigquery.datasets.update

다음과 같은 사전 정의된 각 IAM 역할에는 데이터 세트를 삭제하는 데 필요한 권한이 포함되어 있습니다.

  • roles/bigquery.dataOwner
  • roles/bigquery.admin

또한 bigquery.datasets.create 권한이 있으면 만드는 데이터 세트의 라벨을 삭제할 수 있습니다.

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

데이터세트 라벨 삭제

데이터 세트에서 라벨을 삭제하려면 다음 옵션 중 하나를 선택합니다.

Console

  1. Google Cloud 콘솔에서 데이터 세트를 선택합니다.

  2. 데이터세트 세부정보 페이지에서 라벨 오른쪽에 있는 연필 아이콘을 클릭합니다.

    라벨 연필

  3. 라벨 수정 대화상자에서 다음을 수행합니다.

    • 삭제하려는 각 라벨에 삭제(X)를 클릭합니다.
    • 변경사항을 저장하려면 업데이트를 클릭합니다.

SQL

기존 데이터 세트의 라벨을 설정하려면 ALTER SCHEMA SET OPTIONS DDL 문을 사용합니다. 라벨을 설정하면 데이터 세트의 기존 라벨을 덮어씁니다. 다음 예시에서는 mydataset 데이터 세트에서 모든 라벨을 삭제합니다.

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 문을 입력합니다.

    ALTER SCHEMA mydataset
    SET OPTIONS (labels = []);
    

  3. 실행을 클릭합니다.

쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.

bq

데이터 세트 라벨을 삭제하려면 bq update 명령어를 clear_label 플래그와 함께 실행합니다. 여러 라벨을 삭제하려면 플래그를 반복합니다.

데이터 세트가 기본 프로젝트 이외의 프로젝트에 있으면 project_id:dataset 형식으로 데이터 세트에 프로젝트 ID를 추가합니다.

bq update \
--clear_label key \
project_id:dataset

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

  • key는 삭제할 라벨의 키입니다.
  • project_id는 프로젝트 ID입니다.
  • dataset는 업데이트하는 데이터 세트입니다.

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

mydataset에서 department:shipping 라벨을 삭제하려면 --clear_label 플래그를 사용하여 bq update 명령어를 입력합니다. mydataset는 기본 프로젝트에 있습니다.

    bq update --clear_label department mydataset

myotherprojectmydataset에서 department:shipping 라벨을 삭제하려면 --clear_label 플래그를 사용하여 bq update 명령어를 입력합니다.

    bq update --clear_label department myotherproject:mydataset

데이터 세트에서 여러 라벨을 삭제하려면 clear_label 플래그를 반복하고 각 라벨의 키를 지정합니다. 예를 들어 기본 프로젝트의 mydataset에서 department:shipping 라벨 및 cost_center:logistics 라벨을 삭제하려면 다음을 입력합니다.

    bq update \
    --clear_label department \
    --clear_label cost_center \
    mydataset

이러한 각 예시에서 출력은 다음과 같이 표시됩니다.

Dataset 'myproject:mydataset' successfully updated.

API

기존 데이터 세트의 특정 라벨을 삭제하려면 datasets.patch 메서드를 호출하고 라벨의 키 값을 null로 설정하여 데이터 세트 리소스labels 속성을 업데이트합니다.

데이터 세트에서 모든 라벨을 삭제하려면 datasets.patch 메서드를 호출하고 labels 속성을 삭제합니다.

datasets.update 메서드는 전체 데이터 세트 리소스를 바꾸므로 datasets.patch 메서드를 사용하는 것이 좋습니다.

Go

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

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

import (
	"context"
	"fmt"

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

// deleteDatasetLabel demonstrates removing a specific label from a dataset's metadata.
func deleteDatasetLabel(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()

	ds := client.Dataset(datasetID)
	meta, err := ds.Metadata(ctx)
	if err != nil {
		return err
	}
	update := bigquery.DatasetMetadataToUpdate{}
	update.DeleteLabel("color")
	if _, err := ds.Update(ctx, update, meta.ETag); err != nil {
		return err
	}
	return nil
}

Java

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

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Dataset;
import java.util.HashMap;
import java.util.Map;

// Sample tp deletes a label on a dataset.
public class DeleteLabelDataset {

  public static void runDeleteLabelDataset() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    deleteLabelDataset(datasetName);
  }

  public static void deleteLabelDataset(String datasetName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      // This example dataset starts with existing label { color: 'green' }
      Dataset dataset = bigquery.getDataset(datasetName);
      // Add label to dataset
      Map<String, String> labels = new HashMap<>();
      labels.put("color", null);

      dataset.toBuilder().setLabels(labels).build().update();
      System.out.println("Dataset label deleted successfully");
    } catch (BigQueryException e) {
      System.out.println("Dataset label was not deleted. \n" + e.toString());
    }
  }
}

Node.js

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

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

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

async function deleteLabelDataset() {
  // Deletes a label on a dataset.
  // This example dataset starts with existing label { color: 'green' }

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

  // Retrieve current dataset metadata.
  const dataset = bigquery.dataset(datasetId);
  const [metadata] = await dataset.getMetadata();

  // Add label to dataset metadata
  metadata.labels = {color: null};
  const [apiResponse] = await dataset.setMetadata(metadata);

  console.log(`${datasetId} labels:`);
  console.log(apiResponse.labels);
}

Python

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

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.


from google.cloud import bigquery

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

# TODO(developer): Set dataset_id to the ID of the dataset to fetch.
# dataset_id = "your-project.your_dataset"

dataset = client.get_dataset(dataset_id)  # Make an API request.

# To delete a label from a dataset, set its value to None.
dataset.labels["color"] = None

dataset = client.update_dataset(dataset, ["labels"])  # Make an API request.
print("Labels deleted from {}".format(dataset_id))

테이블 또는 뷰 라벨 삭제

다음 방법으로 테이블 또는 뷰 라벨을 삭제할 수 있습니다.

  • Google Cloud 콘솔 사용
  • SQL DDL 문 사용
  • bq 명령줄 도구의 bq update 명령어 사용
  • tables.patch API 메서드 호출
    • 뷰는 테이블 리소스와 같이 취급되므로 tables.patch를 사용하여 뷰와 테이블을 모두 수정합니다.
  • 클라이언트 라이브러리 사용

필수 권한

테이블 또는 뷰 라벨을 삭제하려면 다음 IAM 권한이 필요합니다.

  • bigquery.tables.get
  • bigquery.tables.update

다음과 같은 사전 정의된 IAM 역할에는 테이블 또는 뷰 라벨을 삭제하는 데 필요한 권한이 포함되어 있습니다.

  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.admin

또한 bigquery.datasets.create 권한이 있으면 만드는 데이터 세트에서 테이블 및 뷰의 라벨을 삭제할 수 있습니다.

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

테이블 또는 뷰 라벨 삭제

테이블 또는 뷰에서 라벨을 삭제하려면 다음 옵션 중 하나를 선택합니다.

Console

  1. Google Cloud 콘솔에서 데이터 세트를 선택합니다.

  2. 세부정보 탭을 클릭한 후 라벨 오른쪽에 있는 연필 아이콘을 클릭합니다.

    라벨 연필

  3. 라벨 수정 대화상자에서 다음을 수행합니다.

    • 삭제하려는 각 라벨에 삭제(X)를 클릭합니다.

      라벨 삭제

    • 변경사항을 저장하려면 업데이트를 클릭합니다.

SQL

ALTER TABLE SET OPTIONS DDL 문을 사용하여 기존 테이블에 라벨을 설정하거나 ALTER VIEW SET OPTIONS DDL 문을 사용하여 기존 뷰에 라벨을 설정합니다. 라벨을 설정하면 테이블 또는 뷰의 기존 라벨을 덮어씁니다. 다음 예시에서는 mytable 테이블에서 모든 라벨을 삭제합니다.

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 문을 입력합니다.

    ALTER TABLE mydataset.mytable
    SET OPTIONS (labels = []);
    

  3. 실행을 클릭합니다.

쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.

bq

테이블 또는 뷰에서 라벨을 삭제하려면 bq update 명령어를 clear_label 플래그와 함께 실행합니다. 여러 라벨을 삭제하려면 플래그를 반복합니다.

테이블 또는 뷰가 기본 프로젝트 이외의 프로젝트에 있으면 프로젝트 ID를 project_id:dataset 형식으로 데이터 세트에 추가합니다.

bq update \
--clear_label key \
project_id:dataset.table_or_view

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

  • key는 삭제할 라벨의 키입니다.
  • project_id는 프로젝트 ID입니다.
  • dataset는 업데이트하는 데이터 세트입니다.
  • table_or_view는 업데이트하는 테이블 또는 뷰의 이름입니다.

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

mydataset.mytable에서 department:shipping 라벨을 삭제하려면 --clear_label 플래그를 사용하여 bq update 명령어를 입력합니다. mydataset는 기본 프로젝트에 있습니다.

    bq update --clear_label department mydataset.mytable

myotherprojectmydataset.myview에서 department:shipping 라벨을 삭제하려면 --clear_label 플래그를 사용하여 bq update 명령어를 입력합니다.

    bq update --clear_label department myotherproject:mydataset.myview

테이블 또는 뷰에서 여러 라벨을 삭제하려면 clear_label 플래그를 반복하고 각 라벨의 키를 지정합니다. 예를 들어 기본 프로젝트의 mydataset.mytable에서 department:shipping 라벨 및 cost_center:logistics 라벨을 삭제하려면 다음을 입력합니다.

    bq update \
    --clear_label department \
    --clear_label cost_center \
    mydataset.mytable

이러한 각 예시에서 출력은 다음과 같이 표시됩니다.

Table 'myproject:mydataset.mytable' successfully updated.

API

기존 테이블 또는 뷰의 특정 라벨을 삭제하려면 tables.patch 메서드를 호출하고 라벨의 키 값을 null로 설정하여 테이블 리소스labels 속성을 업데이트합니다.

테이블 또는 뷰에서 모든 라벨을 삭제하려면 tables.patch 메서드를 호출하고 labels 속성을 삭제합니다.

뷰는 테이블 리소스와 같이 취급되므로 tables.patch 메서드를 사용하여 뷰와 테이블을 모두 수정합니다. 또한 tables.update 메서드는 전체 데이터 세트 리소스를 바꾸므로 tables.patch 메서드를 사용하는 것이 좋습니다.

Go

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

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

import (
	"context"
	"fmt"

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

// deleteTableLabel demonstrates how to remove a specific metadata Label from a BigQuery table.
func deleteTableLabel(projectID, datasetID, tableID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// tableID := "mytable"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	tbl := client.Dataset(datasetID).Table(tableID)
	meta, err := tbl.Metadata(ctx)
	if err != nil {
		return err
	}
	update := bigquery.TableMetadataToUpdate{}
	update.DeleteLabel("color")
	if _, err := tbl.Update(ctx, update, meta.ETag); err != nil {
		return err
	}
	return nil
}

Java

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

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Table;
import com.google.cloud.bigquery.TableId;
import java.util.HashMap;
import java.util.Map;

// Sample tp deletes a label on a table.
public class DeleteLabelTable {

  public static void runDeleteLabelTable() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String tableName = "MY_TABLE_NAME";
    deleteLabelTable(datasetName, tableName);
  }

  public static void deleteLabelTable(String datasetName, String tableName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      // This example table starts with existing label { color: 'green' }
      Table table = bigquery.getTable(TableId.of(datasetName, tableName));
      // Add label to table
      Map<String, String> labels = new HashMap<>();
      labels.put("color", null);

      table.toBuilder().setLabels(labels).build().update();
      System.out.println("Table label deleted successfully");
    } catch (BigQueryException e) {
      System.out.println("Table label was not deleted. \n" + e.toString());
    }
  }
}

Node.js

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

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

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

async function deleteLabelTable() {
  // Deletes a label from an existing table.
  // This example dataset starts with existing label { color: 'green' }

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

  const dataset = bigquery.dataset(datasetId);
  const [table] = await dataset.table(tableId).get();

  // Retrieve current table metadata
  const [metadata] = await table.getMetadata();

  // Add label to table metadata
  metadata.labels = {color: null};
  const [apiResponse] = await table.setMetadata(metadata);

  console.log(`${tableId} labels:`);
  console.log(apiResponse.labels);
}

Python

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

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

from google.cloud import bigquery

client = bigquery.Client()

# TODO(dev): Change table_id to the full name of the table you wish to delete from.
table_id = "your-project.your_dataset.your_table_name"
# TODO(dev): Change label_key to the name of the label you want to remove.
label_key = "color"
table = client.get_table(table_id)  # API request

# To delete a label from a table, set its value to None
table.labels[label_key] = None

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

print(f"Deleted label '{label_key}' from {table_id}.")

작업 라벨 삭제

현재 기존 작업의 라벨 삭제는 지원되지 않습니다.

다음 단계