Actualiza etiquetas

En esta página, se explica cómo actualizar las etiquetas en los recursos de BigQuery.

Actualiza las etiquetas de conjuntos de datos

Para actualizar una etiqueta de conjunto de datos, puedes realizar las siguientes acciones:

  • Usar GCP Console o la IU web clásica de BigQuery
  • Usar el comando bq update de la herramienta de línea de comandos
  • Llamar al método de API datasets.patch
  • Usar las bibliotecas cliente

Permisos necesarios

Como mínimo, para actualizar una etiqueta de conjunto de datos, debes tener permisos bigquery.datasets.update. Las siguientes funciones predefinidas de Cloud IAM incluyen los permisos bigquery.datasets.update:

  • bigquery.dataOwner
  • bigquery.admin

Además, si un usuario tiene permisos de bigquery.datasets.create, cuando crea un conjunto de datos, se le otorga el acceso de bigquery.dataOwner. El acceso de bigquery.dataOwner permite al usuario actualizar etiquetas en un conjunto de datos.

Para obtener más información sobre las funciones y permisos de IAM en BigQuery, consulta Control de acceso.

Actualiza una etiqueta de conjunto de datos

Para actualizar etiquetas en un conjunto de datos, debes hacer lo siguiente:

Console

  1. En GCP Console, selecciona el conjunto de datos.

  2. En la página de detalles del conjunto de datos, haz clic en el ícono de lápiz a la derecha de Etiquetas (Labels).

    Lápiz de etiqueta

  3. En el cuadro de diálogo Editar etiquetas (Edit Labels), haz lo siguiente:

    • Para aplicar etiquetas adicionales, haz clic en Agregar etiqueta (Add Label). Se puede usar cada clave solo una vez por conjunto de datos, pero puedes usar la misma clave en otros conjuntos de datos del mismo proyecto.
    • Modifica las claves o valores existentes para actualizar una etiqueta.
    • Haz clic en Actualizar para guardar los cambios.

IU clásica

  1. En la IU web, selecciona el conjunto de datos.

  2. En la página Detalles del conjunto de datos (Dataset Details), a la derecha de Etiquetas (Labels), haz clic en Editar (Edit).

    Editar etiquetas

  3. En el cuadro de diálogo Editar etiquetas (Edit Labels), haz lo siguiente:

    • Para aplicar etiquetas adicionales, haz clic en Agregar etiqueta (Add Label). Se puede usar cada clave solo una vez por conjunto de datos, pero puedes usar la misma clave en otros conjuntos de datos del mismo proyecto.
    • Modifica las claves o valores existentes para actualizar una etiqueta.
    • Haz clic en Aceptar (OK).

      Etiqueta nueva

CLI

Para agregar etiquetas adicionales o actualizar una etiqueta de un conjunto de datos, ejecuta el comando bq update con la marca set_label. Repite la marca para agregar o actualizar varias etiquetas.

Si el conjunto de datos se encuentra en un proyecto que no sea el predeterminado, agrega el ID del proyecto al conjunto de datos con el siguiente formato: [PROJECT_ID]:[DATASET].

bq update \
--set_label key:value \
project_id:dataset

Donde:

  • key:value corresponde a un par clave-valor para una etiqueta que desees agregar o actualizar. Si especificas la misma clave que usa una etiqueta existente, se actualiza el valor de esa etiqueta existente. La clave debe ser exclusiva.
  • project_id es el ID del proyecto.
  • dataset es el conjunto de datos que quieres actualizar.

Ejemplo:

Para actualizar la etiqueta department en mydataset, ingresa el comando bq update y especifica department como la clave de etiqueta. Por ejemplo, para actualizar la etiqueta department:shipping a department:logistics, debes ingresar el siguiente comando. mydataset está en myotherproject, no en tu proyecto predeterminado.

    bq update \
    --set_label department:logistics \
    myotherproject:mydataset

El resultado se verá de la siguiente manera.

Dataset 'myotherproject:mydataset' successfully updated.

API

Para agregar etiquetas adicionales o actualizar una etiqueta en un conjunto de datos existente, llama al método datasets.patch y agrega o actualiza la propiedad labels del recurso de conjunto de datos.

Dado que el método datasets.update reemplaza todo el recurso de conjunto de datos, es preferible usar el método datasets.patch.

Go

Antes de probar este ejemplo, sigue las instrucciones de configuración de Go incluidas en la guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.

// 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")
ds := client.Dataset(datasetID)
meta, err := ds.Metadata(ctx)
if err != nil {
	return err
}

update := bigquery.DatasetMetadataToUpdate{}
update.SetLabel("color", "green")
if _, err := ds.Update(ctx, update, meta.ETag); err != nil {
	return err
}

Java

En este ejemplo, se usa la biblioteca cliente HTTP de Google para Java a fin de enviar una solicitud a la API de BigQuery.

Antes de probar este ejemplo, sigue las instrucciones de configuración de Java incluidas en la guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
static final JsonFactory JSON_FACTORY = new JacksonFactory();

public static class Dataset {
  @Key private Map<String, String> labels;

  public Map<String, String> getLabels() {
    return this.labels;
  }

  public Dataset addLabel(String key, String value) {
    if (this.labels == null) {
      this.labels = new HashMap<>();
    }
    this.labels.put(key, value);
    return this;
  }
}

/**
 * Add or modify a label on a dataset.
 *
 * <p>See <a href="https://cloud.google.com/bigquery/docs/labeling-datasets">the BigQuery
 * documentation</a>.
 */
public static void labelDataset(
    String projectId, String datasetId, String labelKey, String labelValue) throws IOException {

  // Authenticate requests using Google Application Default credentials.
  GoogleCredential credential = GoogleCredential.getApplicationDefault();
  credential = credential.createScoped(Arrays.asList("https://www.googleapis.com/auth/bigquery"));

  // Get a new access token.
  // Note that access tokens have an expiration. You can reuse a token rather than requesting a
  // new one if it is not yet expired.
  credential.refreshToken();
  String accessToken = credential.getAccessToken();

  // Set the content of the request.
  Dataset dataset = new Dataset();
  dataset.addLabel(labelKey, labelValue);
  HttpContent content = new JsonHttpContent(JSON_FACTORY, dataset);

  // Send the request to the BigQuery API.
  String urlFormat =
      "https://www.googleapis.com/bigquery/v2/projects/%s/datasets/%s"
          + "?fields=labels&access_token=%s";
  GenericUrl url = new GenericUrl(String.format(urlFormat, projectId, datasetId, accessToken));
  HttpRequestFactory requestFactory = HTTP_TRANSPORT.createRequestFactory();
  HttpRequest request = requestFactory.buildPostRequest(url, content);
  request.setParser(JSON_FACTORY.createJsonObjectParser());

  // Workaround for transports which do not support PATCH requests.
  // See: http://stackoverflow.com/a/32503192/101923
  request.setHeaders(new HttpHeaders().set("X-HTTP-Method-Override", "PATCH"));
  HttpResponse response = request.execute();

  // Check for errors.
  if (response.getStatusCode() != 200) {
    throw new RuntimeException(response.getStatusMessage());
  }

  Dataset responseDataset = response.parseAs(Dataset.class);
  System.out.printf(
      "Updated label \"%s\" with value \"%s\"\n",
      labelKey, responseDataset.getLabels().get(labelKey));
}

Python

Antes de probar este ejemplo, sigue las instrucciones de configuración de Python incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la Documentación de referencia de la API de BigQuery para Python.

# from google.cloud import bigquery
# client = bigquery.Client()
# dataset_ref = client.dataset('my_dataset')
# dataset = client.get_dataset(dataset_ref)  # API request

assert dataset.labels == {}
labels = {"color": "green"}
dataset.labels = labels

dataset = client.update_dataset(dataset, ["labels"])  # API request

assert dataset.labels == labels

Actualiza etiquetas de tabla y vista

Después de crear una tabla o vista, se puede actualizar una etiqueta de las siguientes maneras:

  • Usando GCP Console o la IU web clásica de BigQuery
  • Usando el comando bq update de la herramienta de línea de comandos
  • Llamando al método de API tables.patch
    • Debido a que las vistas se tratan como recursos de tabla, debes usar el método tables.patch para modificar las vistas y las tablas.
  • Usando las bibliotecas cliente

Permisos necesarios

Como mínimo, para actualizar una tabla o ver una etiqueta, debes tener permisos bigquery.tables.update. Las siguientes funciones predefinidas de Cloud IAM incluyen los permisos bigquery.tables.update:

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

Además, si un usuario tiene permisos de bigquery.datasets.create, cuando crea un conjunto de datos, se le otorga el acceso de bigquery.dataOwner. El acceso de bigquery.dataOwner permite al usuario actualizar las etiquetas de sus conjuntos de datos y de las tablas y vistas de esos conjuntos de datos.

Para obtener más información sobre las funciones de Cloud IAM y los permisos en BigQuery, consulta Control de acceso.

Actualiza una etiqueta de vista o tabla

Sigue estos pasos para actualizar una etiqueta de vista o tabla:

Console

  1. En GCP Console, selecciona la tabla o la vista.

  2. Haz clic en la pestaña Detalles (Details) y, luego, en el ícono de lápiz a la derecha de Etiquetas (Labels).

  3. En el cuadro de diálogo Editar etiquetas (Edit Labels), haz lo siguiente:

    • Para aplicar etiquetas adicionales, haz clic en Agregar etiqueta (Add Label). Se puede usar cada clave solo una vez por tabla o vista, pero puedes usar la misma clave en tablas o vistas de otros conjuntos de datos.
    • Modifica las claves o valores existentes para actualizar una etiqueta.
    • Haz clic en Actualizar para guardar los cambios.

IU clásica

  1. En la IU web, selecciona la tabla o vista.

  2. En la página de detalles, a la derecha de Etiquetas (Labels), haz clic en Editar (Edit). En este ejemplo, se muestran los detalles de una tabla.

    Editar etiquetas

  3. En el cuadro de diálogo Editar etiquetas (Edit Labels), haz lo siguiente:

    • Para agregar etiquetas adicionales, haz clic en Agregar etiqueta (Add label). Se puede usar cada clave solo una vez por tabla o vista, pero puedes usar la misma clave en tablas o vistas de otros conjuntos de datos.
    • Modifica las claves o valores existentes para actualizar una etiqueta.
    • Haz clic en Aceptar (OK).

      Etiqueta nueva

CLI

Para agregar etiquetas adicionales o actualizar una etiqueta de vista o tabla, ejecuta el comando bq update con la marca set_label. Repite la marca para agregar o actualizar varias etiquetas.

Si la tabla o vista se encuentra en un proyecto que no sea el predeterminado, agrega el ID del proyecto al conjunto de datos con el siguiente formato: project_id:dataset.

bq update \
--set_label key:value \
project_id:dataset.table_or_view

Donde:

  • key:value corresponde a un par clave-valor para una etiqueta que desees agregar o actualizar. Si especificas la misma clave que usa una etiqueta existente, se actualiza el valor de esa etiqueta existente. La clave debe ser exclusiva.
  • project_id es el ID del proyecto.
  • dataset es el conjunto de datos que contiene la tabla o vista que quieres actualizar.
  • table_or_view es el nombre de la tabla o vista que quieres actualizar.

Ejemplo:

Si deseas actualizar la etiqueta department para mytable, ingresa el comando bq update y especifica department como la clave de etiqueta. Por ejemplo, a fin de actualizar la etiqueta department:shipping a department:logistics para mytable, ingresa el siguiente comando. mytable se encuentra en myotherproject, no en tu proyecto predeterminado.

    bq update \
    --set_label department:logistics \
    myotherproject:mydataset.mytable

El resultado se verá de la siguiente manera:

Table 'myotherproject:mydataset.mytable' successfully updated.

API

A fin de agregar etiquetas adicionales o actualizar una etiqueta para una tabla o vista existentes, llama al método tables.patch y agrega o actualiza la propiedad labels del recurso de tabla.

Debido a que las vistas se tratan como recursos de tabla, debes usar el método tables.patch para modificar las vistas y las tablas.

Debido a que el método tables.update reemplaza todo el recurso de conjunto de datos, el método tables.patch es preferible.

Go

Antes de probar este ejemplo, sigue las instrucciones de configuración de Go incluidas en la guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la Documentación de referencia de la API de BigQuery para Go.

// 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")
tbl := client.Dataset(datasetID).Table(tableID)
meta, err := tbl.Metadata(ctx)
if err != nil {
	return err
}

update := bigquery.TableMetadataToUpdate{}
update.SetLabel("color", "green")
if _, err := tbl.Update(ctx, update, meta.ETag); err != nil {
	return err
}

Java

En este ejemplo, se usa la biblioteca cliente HTTP de Google para Java a fin de enviar una solicitud a la API de BigQuery.

Antes de probar este ejemplo, sigue las instrucciones de configuración de Java incluidas en la guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

public static class Table {
  @Key private Map<String, String> labels;

  public Map<String, String> getLabels() {
    return this.labels;
  }

  public Table addLabel(String key, String value) {
    if (this.labels == null) {
      this.labels = new HashMap<>();
    }
    this.labels.put(key, value);
    return this;
  }
}

/**
 * Add or modify a label on a table.
 *
 * <p>See <a href="https://cloud.google.com/bigquery/docs/labeling-datasets">the BigQuery
 * documentation</a>.
 */
public static void labelTable(
    String projectId,
    String datasetId,
    String tableId,
    String labelKey,
    String labelValue)
    throws IOException {

  // Authenticate requests using Google Application Default credentials.
  GoogleCredential credential = GoogleCredential.getApplicationDefault();
  credential = credential.createScoped(Arrays.asList("https://www.googleapis.com/auth/bigquery"));

  // Get a new access token.
  // Note that access tokens have an expiration. You can reuse a token rather than requesting a
  // new one if it is not yet expired.
  credential.refreshToken();
  String accessToken = credential.getAccessToken();

  // Set the content of the request.
  Table table = new Table();
  table.addLabel(labelKey, labelValue);
  HttpContent content = new JsonHttpContent(JSON_FACTORY, table);

  // Send the request to the BigQuery API.
  String urlFormat =
      "https://www.googleapis.com/bigquery/v2/projects/%s/datasets/%s/tables/%s"
          + "?fields=labels&access_token=%s";
  GenericUrl url =
      new GenericUrl(String.format(urlFormat, projectId, datasetId, tableId, accessToken));
  HttpRequestFactory requestFactory = HTTP_TRANSPORT.createRequestFactory();
  HttpRequest request = requestFactory.buildPostRequest(url, content);
  request.setParser(JSON_FACTORY.createJsonObjectParser());

  // Workaround for transports which do not support PATCH requests.
  // See: http://stackoverflow.com/a/32503192/101923
  request.setHeaders(new HttpHeaders().set("X-HTTP-Method-Override", "PATCH"));
  HttpResponse response = request.execute();

  // Check for errors.
  if (response.getStatusCode() != 200) {
    throw new RuntimeException(response.getStatusMessage());
  }

  Table responseTable = response.parseAs(Table.class);
  System.out.printf(
      "Updated label \"%s\" with value \"%s\"\n",
      labelKey, responseTable.getLabels().get(labelKey));
}

Python

Antes de probar este ejemplo, sigue las instrucciones de configuración de Python incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la Documentación de referencia de la API de BigQuery para Python.

# 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.labels == {}
labels = {"color": "green"}
table.labels = labels

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

assert table.labels == labels

Cómo actualizar etiquetas de trabajo

Actualmente, no se admite la actualización de una etiqueta de trabajo. Para actualizar la etiqueta en un trabajo, vuelve a enviar el trabajo con una nueva etiqueta especificada.

Convierte etiquetas en rótulos identificadores

Una etiqueta que tiene una clave con un valor vacío se usa como un rótulo identificador. Puedes crear una etiqueta nueva sin valor o puedes convertir una etiqueta existente en un rótulo identificador en un conjunto de datos, tabla o vista. No puedes convertir la etiqueta de un trabajo en un rótulo identificador.

Los rótulos identificadores pueden ser útiles en situaciones en las que debes etiquetar un recurso, pero no necesitas el formato key:value. Por ejemplo, si tienes una tabla que contiene datos de prueba que varios grupos usan (asistencia, desarrollo, etc.), puedes agregar un rótulo identificador test_data a la tabla para identificarla.

Permisos necesarios

Como mínimo, los permisos necesarios para convertir una etiqueta en un rótulo identificador son los mismos que se necesitan a fin de actualizar las etiquetas.

  • bigquery.datasets.update para convertir una etiqueta de conjunto de datos
  • bigquery.tables.update para convertir una etiqueta de tabla o vista

Las siguientes funciones predefinidas de Cloud IAM incluyen los permisos bigquery.datasets.update:

  • bigquery.dataOwner
  • bigquery.admin

Las siguientes funciones predefinidas de Cloud IAM incluyen los permisos bigquery.tables.update:

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

Además, si un usuario tiene permisos de bigquery.datasets.create, cuando crea un conjunto de datos, se le otorga el acceso de bigquery.dataOwner. El acceso de bigquery.dataOwner permite al usuario actualizar las etiquetas de sus conjuntos de datos y de las tablas y vistas de esos conjuntos de datos.

Para obtener más información sobre las funciones de Cloud IAM y los permisos en BigQuery, consulta Control de acceso.

Convierte una etiqueta en un rótulo identificador

Sigue estos pasos para convertir una etiqueta en un rótulo identificador:

Console

  1. En GCP Console, selecciona el conjunto de datos, la tabla o la vista.

  2. Para los conjuntos de datos, la página Detalles de conjuntos de datos (Dataset Details) se abre de forma automática. Para las tablas y vistas, haz clic en Detalles (Details) a fin de abrir la página de detalles.

    Detalles de la tabla

  3. En la página de detalles, haz clic en el ícono de lápiz a la derecha de Etiquetas (Labels).

    Lápiz de etiqueta

  4. En el cuadro de diálogo Editar etiquetas (Edit labels), haz lo siguiente:

    • Borra el valor de una etiqueta existente.
    • Haz clic en Actualizar (Update).

IU clásica

  1. En la IU web, selecciona el conjunto de datos, la tabla o la vista.

  2. Para los conjuntos de datos, la página Detalles de conjuntos de datos (Dataset Details) se abre de forma automática. Para las tablas y vistas, haz clic en Detalles (Details) a fin de abrir la página de detalles.

  3. En la página de detalles, a la derecha de Etiquetas (Labels), haz clic en Editar (Edit).

  4. En el cuadro de diálogo Editar etiquetas (Edit Labels), haz lo siguiente:

    • Borra el valor de una etiqueta existente.
    • Haz clic en Aceptar (OK).

      Agregar etiqueta

CLI

Para convertir una etiqueta en un rótulo identificador, usa el comando bq update con la marca set_label. Especifica la clave, seguida de dos puntos, pero no especifiques el valor. Esto actualiza una etiqueta existente en un rótulo identificador.

bq update \
--set_label key: \
resource_id

En el que:

  • key: es la clave de la etiqueta que deseas convertir en un rótulo identificador.
  • resource_id es un nombre válido de conjunto de datos, tabla o vista. Si el recurso se encuentra en un proyecto que no sea el predeterminado, debes agregar el ID del proyecto con el siguiente formato: project_id:dataset.

Ejemplos:

Ingresa el siguiente comando para cambiar la etiqueta test_data:development existente en mydataset a un rótulo identificador. mydataset está en myotherproject, no en tu proyecto predeterminado.

bq update --set_label test_data: myotherproject:mydataset

El resultado se verá de la siguiente manera:

Dataset 'myotherproject:mydataset' successfully updated.

API

Para convertir una etiqueta existente en un rótulo identificador, llama al método datasets.patch o tables.patch, y reemplaza los valores de la etiqueta por la string vacía ("") en el recurso de conjunto de datos o el recurso de tabla.

Debido a que las vistas se tratan como recursos de tabla, debes usar el método tables.patch para modificar las vistas y las tablas. Además, debido a que el método tables.update reemplaza todo el recurso de conjunto de datos, el método tables.patch es preferible.

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.