Cómo actualizar las propiedades de los conjunto de datos

Este documento describe cómo actualizar las propiedades del conjunto de datos en BigQuery. Después de crear un conjunto de datos, puedes actualizar las siguientes propiedades del conjunto de datos:

Permisos necesarios

Para actualizar las propiedades de un conjunto de datos, debes tener acceso de OWNER a nivel de conjunto de datos o tener asignada una función de IAM a nivel de proyecto que incluya permisos bigquery.datasets.update. En las funciones de IAM a nivel de proyecto predefinidas siguientes, se incluyen los permisos bigquery.datasets.update:

Además, debido a que la función bigquery.user tiene los permisos bigquery.datasets.create, un usuario asignado a la función bigquery.user puede actualizar cualquier conjunto de datos que cree el usuario. Cuando un usuario asignado a la función bigquery.user crea un conjunto de datos, se le otorga acceso de OWNER al conjunto de datos. El acceso OWNER a un conjunto de datos otorga al usuario un control total sobre este.

Para obtener más información sobre las funciones de IAM y los permisos en BigQuery, consulta Control de acceso. Para obtener más información sobre las funciones a nivel de conjunto de datos, consulta Funciones básicas para conjuntos de datos.

Actualiza las descripciones de los conjuntos de datos

Puedes actualizar la descripción de un conjunto de datos de las siguientes maneras:

  • Usar GCP Console o la IU web clásica de BigQuery
  • Usar el comando bq update de la CLI
  • Llamar al método de API datasets.patch

Para actualizar la descripción de un conjunto de datos, haz lo siguiente:

Console

  1. Selecciona tu conjunto de datos en el panel Recursos (Resources).

  2. En la página Detalles (Details), haz clic en el ícono de lápiz junto a Descripción (Description) para editar el texto de la descripción.

    Configuración de consulta

  3. En el diálogo, ingresa una descripción en la casilla o edita la descripción existente. Haz clic en Actualizar (Update) para guardar el nuevo texto de la descripción.

IU clásica

  1. Selecciona tu conjunto de datos en el panel de navegación.

  2. En la página Dataset Details (Detalles del conjunto de datos), en la sección Description (Descripción), haz clic en Describe this dataset (Describir este conjunto de datos) para abrir la casilla de descripción si el conjunto de datos no tiene descripción. De lo contrario, haz clic en el texto de descripción existente.

  3. Ingresa una descripción en la casilla o edita la descripción existente. Cuando haces clic fuera del cuadro, el texto se guarda.

    Descripción del conjunto de datos

CLI

Ejecuta el comando bq update con la marca --description. Si actualizas un conjunto de datos en un proyecto que no es el predeterminado, agrega el ID del proyecto al nombre del conjunto de datos con el siguiente formato: [PROJECT_ID]:[DATASET].

bq update --description "[STRING]" [PROJECT_ID]:[DATASET]

Donde:

  • [STRING] es el texto que describe el conjunto de datos entre comillas.
  • [PROJECT_ID] es el ID del proyecto.
  • [DATASET] es el nombre del conjunto de datos que vas a actualizar.

Ejemplos:

Ingresa el siguiente comando para cambiar la descripción de mydataset a "Description of mydataset". mydataset está en tu proyecto predeterminado.

bq update --description "Description of mydataset" mydataset

Ingresa el siguiente comando para cambiar la descripción de mydataset a "Description of mydataset". El conjunto de datos está en myotherproject, no en tu proyecto predeterminado.

bq update --description "Description of mydataset" myotherproject:mydataset

API

Llama a datasets.patch y actualiza la propiedad description 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 esta muestra, sigue las instrucciones de configuración para Go de 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.

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

Java

Antes de probar esta muestra, sigue las instrucciones de configuración de Java que se encuentran en la Guía de inicio rápido de BigQuery con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

Crea una instancia Dataset.Builder a partir de una instancia Dataset existente con el método Dataset.toBuilder(). Configura el objeto compilador de datos. Compila el conjunto de datos actualizado con el método Dataset.Builder.build() y llama al método Dataset.update() para enviar la actualización a la API.
Dataset oldDataset = bigquery.getDataset(datasetName);
DatasetInfo datasetInfo = oldDataset.toBuilder().setDescription(newDescription).build();
Dataset newDataset = bigquery.update(datasetInfo);

Python

Python

Antes de probar esta muestra, sigue las instrucciones de configuración para Python que se encuentran 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.

Configura la propiedad Dataset.description y llama a Client.update_dataset() para enviar la actualización a la API.
from google.cloud import bigquery

# TODO(developer): 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)
dataset.description = "Updated description."
dataset = client.update_dataset(dataset, ["description"])

full_dataset_id = "{}.{}".format(dataset.project, dataset.dataset_id)
print(
    "Updated dataset '{}' with description '{}'.".format(
        full_dataset_id, dataset.description
    )
)

Actualiza la fecha y hora de vencimiento predeterminada de las tablas

Puedes actualizar la fecha y hora de vencimiento predeterminada de las tablas de un conjunto de datos de las siguientes maneras:

  • Usar GCP Console o la IU web clásica de BigQuery
  • Usar el comando bq update de la CLI
  • Llamar al método de API datasets.patch

Puedes configurar una fecha y hora de vencimiento predeterminada para las tablas a nivel del conjunto de datos o puedes establecer la fecha y hora de vencimiento cuando se crea la tabla. Si configuras la caducidad cuando creas la tabla, se ignora la caducidad predeterminada de la tabla del conjunto de datos. Si no configuras una caducidad predeterminada para la tabla a nivel de conjunto de datos ni una caducidad para la tabla cuando la creas, la tabla nunca caducará y deberás borrarla de forma manual.

Ten en cuenta lo siguiente cuando actualizas la configuración predeterminada de caducidad de la tabla de un conjunto de datos:

  • Si cambias el valor de Never a un tiempo de caducidad definido, cualquier tabla que ya exista en el conjunto de datos no caducará a menos que se haya configurado el tiempo de caducidad en la tabla cuando se creó.
  • Si cambias el valor de la caducidad predeterminada de la tabla, cualquier tabla que ya exista caducará según la configuración de caducidad de la tabla original. A todas las tablas nuevas creadas en el conjunto de datos se les aplica la nueva configuración de caducidad de la tabla, a menos que especifiques una caducidad diferente en la tabla cuando la creas.

El valor para la caducidad predeterminada de la tabla se expresa de manera diferente según dónde se configure el valor. Usa el método que te dé el nivel de detalle apropiado:

  • En GCP Console y la IU web clásica de BigQuery, el vencimiento se expresa en días.
  • En la herramienta de línea de comandos, el vencimiento se expresa en segundos.
  • En la API, la caducidad se expresa en milisegundos.

Para actualizar la fecha y hora de vencimiento predeterminada de un conjunto de datos, haz lo siguiente:

Console

  1. Selecciona tu conjunto de datos en el panel Recursos (Resources).

  2. En la página Detalles (Details), haz clic en el ícono de lápiz junto a Información del conjunto de datos (Dataset info) para editar el vencimiento.

  3. En la sección Vencimiento predeterminado de la tabla (Default table expiration) del diálogo Información del conjunto de datos (Dataset info), ingresa un valor para Cantidad de días después de la creación de la tabla (Number of days after table creation).

  4. Haz clic en Guardar (Save).

IU clásica

  1. Selecciona tu conjunto de datos en el panel de navegación.

  2. En la página Dataset Details (Detalles del conjunto de datos), en la sección Description (Descripción) a la derecha de Default Table Expiration (Caducidad predeterminada de la tabla), haz clic en Edit (Editar).

    Vencimiento de la tabla

  3. En el diálogo Update Expiration (Actualizar caducidad), para Data expiration (Caducidad de los datos), haz clic en In (En) y luego ingresa el tiempo de caducidad en días. El valor predeterminado es Nunca (Never).

CLI

Para actualizar la fecha y hora de vencimiento predeterminada de las tablas nuevas que se creen en un conjunto de datos, ingresa el comando bq update con la marca --default_table_expiration. Si actualizas un conjunto de datos en un proyecto que no es el predeterminado, agrega el ID del proyecto al nombre del conjunto de datos con el siguiente formato: [PROJECT_ID]:[DATASET].

bq update --default_table_expiration [INTEGER] [PROJECT_ID]:[DATASET]

Donde:

  • [INTEGER] es el tiempo de vida predeterminado (en segundos) para las tablas recién creadas. El valor mínimo es 3,600 segundos (una hora). La fecha y hora de vencimiento se evalúa según la suma de la hora actual en formato UTC más el valor del número entero. Especifica 0 para quitar la fecha y hora de vencimiento existente. Cualquier tabla que se cree en el conjunto de datos se borrará al cabo de [INTEGER] segundos luego del momento de su creación. Este valor se aplica si no especificas un vencimiento durante la creación de la tabla.
  • [PROJECT_ID] es el ID del proyecto.
  • [DATASET] es el nombre del conjunto de datos que vas a actualizar.

Ejemplos:

Ingresa el siguiente comando para configurar la caducidad predeterminada de la tabla para las tablas nuevas creadas en mydataset a dos horas (7,200 segundos) a partir de la hora actual. El conjunto de datos se encuentra en tu proyecto predeterminado.

bq update --default_table_expiration 7200 mydataset

Ingresa el siguiente comando para configurar la caducidad predeterminada de la tabla para las tablas nuevas creadas en mydataset a dos horas (7,200 segundos) a partir de la hora actual. El conjunto de datos se encuentra en myotherproject, no en tu proyecto predeterminado.

bq update --default_table_expiration 7200 myotherproject:mydataset

API

Llama a datasets.patch y actualiza la propiedad defaultTableExpirationMs del recurso de conjunto de datos. El vencimiento se expresa en milisegundos en la API. 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 esta muestra, sigue las instrucciones de configuración para Go de 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.

ds := client.Dataset(datasetID)
meta, err := ds.Metadata(ctx)
if err != nil {
	return err
}
update := bigquery.DatasetMetadataToUpdate{
	DefaultTableExpiration: 24 * time.Hour,
}
if _, err := client.Dataset(datasetID).Update(ctx, update, meta.ETag); err != nil {
	return err
}

Java

Antes de probar esta muestra, sigue las instrucciones de configuración de Java que se encuentran en la Guía de inicio rápido de BigQuery con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

Crea una instancia Dataset.Builder a partir de una instancia Dataset existente con el método Dataset.toBuilder(). Configura el objeto compilador de datos. Compila el conjunto de datos actualizado con el método Dataset.Builder.build() y llama al método Dataset.update() para enviar la actualización a la API.

Configura la fecha y hora de vencimiento predeterminada con el método Dataset.Builder.setDefaultTableLifetime().

Long beforeExpiration = dataset.getDefaultTableLifetime();

Long oneDayMilliseconds = 24 * 60 * 60 * 1000L;
DatasetInfo.Builder builder = dataset.toBuilder();
builder.setDefaultTableLifetime(oneDayMilliseconds);
bigquery.update(builder.build());  // API request.

Python

Python

Antes de probar esta muestra, sigue las instrucciones de configuración para Python que se encuentran 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.

Configura la propiedad Dataset.default_table_expiration_ms y llama a Client.update_dataset() para enviar la actualización a la API.
from google.cloud import bigquery

# TODO(developer): 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)
dataset.default_table_expiration_ms = 24 * 60 * 60 * 1000  # in milliseconds

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

full_dataset_id = "{}.{}".format(dataset.project, dataset.dataset_id)
print(
    "Updated dataset {} with new expiration {}".format(
        full_dataset_id, dataset.default_table_expiration_ms
    )
)

Actualiza la fecha y hora de vencimiento predeterminada de las particiones

Puedes actualizar la fecha y hora de vencimiento predeterminadas de las particiones de un conjunto de datos de las siguientes maneras:

  • Usar el comando bq update de la CLI
  • Llamar al método de API datasets.patch

Actualmente, ni GCP Console ni la IU web clásica de BigQuery permiten configurar o actualizar del vencimiento predeterminado de las particiones de un conjunto de datos.

Puedes configurar una fecha y hora de vencimiento predeterminada para las particiones a nivel del conjunto de datos, que se aplicarán a todas las tablas particionadas nuevas, o puedes configurar una fecha y hora de vencimiento de la partición para tablas individuales en el momento en que se creen las tablas particionadas. Si configuras la caducidad predeterminada de la partición a nivel de conjunto de datos y configuras la caducidad predeterminada de la tabla a nivel de conjunto de datos, las nuevas tablas particionadas solo tendrán una caducidad de partición. Si se configuran ambas opciones, la caducidad predeterminada de la partición anula la caducidad predeterminada de la tabla.

Si configuras el tiempo de caducidad de la partición cuando se crea la tabla particionada, ese valor anula la caducidad predeterminada de la partición a nivel de conjunto de datos, si existe.

Si no configuras una caducidad predeterminada para la partición a nivel de conjunto de datos ni una caducidad para la partición cuando creas la tabla, las particiones nunca caducarán y deberás borrarlas de forma manual.

Cuando configuras una caducidad predeterminada para la partición en un conjunto de datos, la caducidad se aplica a todas las particiones en todas las tablas particionadas creadas en el conjunto de datos. Cuando configuras la caducidad de la partición en una tabla, la caducidad se aplica a todas las particiones creadas en la tabla especificada. Actualmente, no puedes aplicar diferentes tiempos de caducidad a distintas particiones en la misma tabla.

Ten en cuenta lo siguiente cuando actualizas la configuración predeterminada de caducidad de la partición de un conjunto de datos:

  • Si cambias el valor de "never" a un tiempo de caducidad definido, cualquier partición que ya exista en las tablas particionadas del conjunto de datos no caducará a menos que se haya configurado el tiempo de caducidad de la partición en la tabla cuando se creó.
  • Si cambias el valor para la caducidad predeterminada de la partición, cualquier partición en las tablas particionadas existentes caducará según la caducidad predeterminada de la partición original. Todas las tablas particionadas nuevas creadas en el conjunto de datos tienen la configuración de caducidad nueva de la partición, a menos que especifiques una caducidad diferente para la partición en la tabla cuando la creas.

El valor para la caducidad predeterminada de la partición se expresa de manera diferente dependiendo de dónde se configura el valor. Usa el método que te dé el nivel de detalle apropiado:

  • En la herramienta de línea de comandos, el vencimiento se expresa en segundos.
  • En la API, la caducidad se expresa en milisegundos.

Para actualizar la fecha y hora de vencimiento predeterminada de una partición en un conjunto de datos, haz lo siguiente:

Console

Actualmente, GCP Console no permite actualizar el vencimiento predeterminado de las particiones de un conjunto de datos.

IU clásica

Actualmente, la IU web clásica de BigQuery no permite actualizar el vencimiento predeterminado de las particiones de un conjunto de datos.

CLI

Para actualizar la fecha y hora de vencimiento predeterminada de un conjunto de datos, ingresa el comando bq update con la marca --default_partition_expiration. Si actualizas un conjunto de datos en un proyecto que no es el predeterminado, agrega el ID del proyecto al nombre del conjunto de datos con el siguiente formato: [PROJECT_ID]:[DATASET].

bq update --default_partition_expiration [INTEGER] [PROJECT_ID]:[DATASET]

Donde:

  • [INTEGER] es el tiempo de vida predeterminado (en segundos) para las particiones en tablas particionadas recién creadas. Esta marca no tiene valor mínimo. Especifica 0 para quitar la fecha y hora de vencimiento existente. Todas las particiones de las tablas particionadas nuevas se borrarán al cabo de [INTEGER] segundos después de la fecha de la partición en formato UTC. Este valor se aplica si no especificas un vencimiento para las particiones durante la creación de la tabla.
  • [PROJECT_ID] es el ID del proyecto.
  • [DATASET] es el nombre del conjunto de datos que vas a actualizar.

Ejemplos:

Ingresa el siguiente comando para configurar la caducidad predeterminada de la partición para las tablas particionadas nuevas creadas en mydataset en 26 horas (93,600 segundos). El conjunto de datos se encuentra en tu proyecto predeterminado.

bq update --default_partition_expiration 93600 mydataset

Ingresa el siguiente comando para configurar la caducidad predeterminada de la partición para las tablas particionadas nuevas creadas en mydataset en 26 horas (93,600 segundos). El conjunto de datos se encuentra en myotherproject, no en tu proyecto predeterminado.

bq update --default_partition_expiration 7200 myotherproject:mydataset

API

Llama a datasets.patch y actualiza la propiedad defaultPartitionExpirationMs del recurso de conjunto de datos. El vencimiento se expresa en milisegundos. Dado que el método datasets.update reemplaza todo el recurso de conjunto de datos, es preferible usar el método datasets.patch.

Actualiza los controles de acceso al conjunto de datos

El proceso para actualizar los controles de acceso a un conjunto de datos es muy similar al proceso para asignar controles de acceso a un conjunto de datos. No se pueden aplicar controles de acceso durante la creación del conjunto de datos en GCP Console, en la IU web clásica de BigQuery ni en la herramienta de línea de comandos. Primero debes crear el conjunto de datos y, luego, actualizar los controles de acceso correspondientes. La API te permite actualizar los controles de acceso del conjunto de datos mediante una llamada al método datasets.patch.

Cuando actualizas los controles de acceso a un conjunto de datos, puedes modificar el acceso para los siguientes usuarios y grupos:

  • Usuario por correo electrónico: otorga a una Cuenta de Google individual acceso al conjunto de datos
  • Grupo por correo electrónico: otorga a todos los miembros de un grupo de Google acceso al conjunto de datos.
  • Dominio: otorga acceso al conjunto de datos a todos los usuarios y grupos de un dominio de Google.
  • Todos los usuarios autenticados: otorga a todos los titulares de la Cuenta de Google acceso al conjunto de datos (hace que el conjunto de datos sea público).
  • Propietarios del proyecto: otorga a todos los propietarios del proyecto acceso al conjunto de datos.
  • Lectores del proyecto: otorga a todos los lectores del proyecto acceso al conjunto de datos.
  • Editores del proyecto: otorga a todos los editores del proyecto acceso al conjunto de datos.
  • Vista autorizada: otorga acceso al conjunto de datos a una vista.

Para actualizar los controles de acceso en un conjunto de datos, haz lo siguiente:

Console

  1. En la navegación de la IU, en la sección Recursos, haz clic en tu conjunto de datos.

  2. Haz clic en Compartir conjunto de datos.

  3. Para borrar las entradas existentes, en el diálogo Compartir conjunto de datos, expande la entrada y haz clic en el ícono de borrar (papelera).

  4. Para agregar entradas nuevas en el diálogo Compartir conjunto de datos, haz lo siguiente:

    1. Ingresa la dirección de correo electrónico de un usuario, grupo o cuenta de servicio en la casilla Agregar miembros.

    2. Para Seleccionar una función, elige una función de BigQuery apropiada de la lista. Para obtener más información sobre los permisos asignados a cada función de BigQuery predeterminada, consulta la sección Funciones de la página de control de acceso.

    3. Haz clic en Agregar.

  5. Cuando hayas terminado de agregar o borrar tus controles de acceso, haz clic en Listo.

IU clásica

  1. Haz clic en la flecha desplegable a la derecha del conjunto de datos y elige Compartir conjunto de datos.

  2. Para modificar las entradas existente en el cuadro de diálogo Compartir conjunto de datos, haz lo siguiente:

    • Elimina las entradas existentes haciendo clic en el ícono X a la derecha del usuario, grupo o cuenta de servicio.
    • Cambia los permisos para un usuario, grupo o cuenta de servicio haciendo clic en el botón de permisos y seleccionando el nivel de acceso correspondiente: Is owner (OWNER), Can edit (WRITER) o Can view (READER). Para obtener más información sobre las funciones a nivel de conjunto de datos, consulta Funciones básicas para conjuntos de datos.
  3. Para agregar entradas nuevas en el diálogo Compartir conjunto de datos, haz lo siguiente:

    1. Haz clic en el menú desplegable a la izquierda del campo Agregar personas y selecciona la opción correspondiente.

    2. Escribe un valor en el cuadro de texto. Por ejemplo, si seleccionaste Usuario por correo electrónico, escribe la dirección de correo electrónico del usuario.

    3. A la derecha del campo Add People (Agregar personas), haz clic en Can view (Puede ver) y selecciona la función correspondiente de la lista.

      Agregar personas a un conjunto de datos

      • "Puede ver" (Can view) (READER) otorga el acceso bigquery.dataViewer al conjunto de datos.
      • "Puede editar" (Can edit) (WRITER) otorga el acceso bigquery.dataEditor al conjunto de datos.
      • "Es propietario" (Is owner) (OWNER) otorga el acceso bigquery.dataOwner al conjunto de datos.
    4. Haz clic en Add (Agregar).

  4. Cuando hayas terminado de agregar, eliminar o modificar tus controles de acceso, haz clic en Guardar cambios.

  5. Verifica tus controles de acceso haciendo clic en la flecha desplegable a la derecha del conjunto de datos y seleccionando Compartir conjunto de datos. Puedes confirmar la configuración en el cuadro de diálogo Compartir conjunto de datos.

Línea de comandos

  1. Escribe la información del conjunto de datos existente (incluidos los controles de acceso) en un archivo JSON con el comando show. Si el conjunto de datos se encuentra en otro proyecto que no sea el predeterminado, agrega el ID del proyecto al nombre del conjunto de datos en el formato siguiente: [PROJECT_ID]:[DATASET].

    bq show --format=prettyjson [PROJECT_ID]:[DATASET] > [PATH_TO_FILE]
    

    Donde:

    • [PROJECT_ID] es el ID del proyecto.
    • [DATASET] es el nombre de tu conjunto de datos.
    • [PATH_TO_FILE] es la ruta al archivo JSON en tu máquina local.

      Ejemplos:

      Ingresa el comando siguiente a fin de escribir los controles de acceso para mydataset en un archivo JSON. mydataset se encuentra en tu proyecto predeterminado.

      bq show --format=prettyjson mydataset > /tmp/mydataset.json

      Ingresa el comando siguiente a fin de escribir los controles de acceso para mydataset en un archivo JSON. mydataset se encuentra en myotherproject.

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

  2. Realiza los cambios a la sección "access" del archivo JSON. Puedes agregar o quitar cualquiera de las entradas specialGroup: projectOwners, projectWriters, projectReaders, y allAuthenticatedUsers. También puede agregar, quitar o modificar cualquiera de los siguientes: userByEmail, groupByEmail, y domain.

    Por ejemplo, la sección de acceso del archivo JSON de un conjunto de datos se vería de la manera siguiente:

    {
     "access": [
      {
       "role": "READER",
       "specialGroup": "projectReaders"
      },
      {
       "role": "WRITER",
       "specialGroup": "projectWriters"
      },
      {
       "role": "OWNER",
       "specialGroup": "projectOwners"
      }
      {
       "role": "READER",
       "specialGroup": "allAuthenticatedUsers"
      }
      {
       "role": "READER",
       "domain": "[DOMAIN_NAME]"
      }
      {
       "role": "WRITER",
       "userByEmail": "[USER_EMAIL]"
      }
      {
       "role": "READER",
       "groupByEmail": "[GROUP_EMAIL]"
      }
     ],
    }
    

  3. Cuando tus ediciones estén completas, usa el comando update y también incluye el archivo JSON con la marca --source. Si el conjunto de datos se encuentra en otro proyecto que no sea el predeterminado, agrega el ID del proyecto al nombre del conjunto de datos en el formato siguiente: [PROJECT_ID]:[DATASET].

    bq update --source [PATH_TO_FILE] [PROJECT_ID]:[DATASET]
    

    Donde:

    • [PATH_TO_FILE] es la ruta al archivo JSON en tu máquina local.
    • [PROJECT_ID] es el ID del proyecto.
    • [DATASET] es el nombre de tu conjunto de datos.

      Ejemplos:

      Ingresa el comando siguiente a fin de actualizar los controles de acceso para mydataset. mydataset se encuentra en tu proyecto predeterminado.

      bq update --source /tmp/mydataset.json mydataset

      Ingresa el comando siguiente a fin de actualizar los controles de acceso para mydataset. mydataset se encuentra en myotherproject.

      bq update --source /tmp/mydataset.json myotherproject:mydataset

  4. Para verificar los cambios del control de acceso, ingresa otra vez el comando show sin escribir la información en un archivo.

    bq show --format=prettyjson [DATASET]

    o

    bq show --format=prettyjson [PROJECT_ID]:[DATASET]

API

Llama a datasets.patch y actualiza la propiedad access en el 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 para actualizar los controles de acceso.

Go

Antes de probar esta muestra, sigue las instrucciones de configuración para Go de 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.

ds := client.Dataset(datasetID)
meta, err := ds.Metadata(ctx)
if err != nil {
	return err
}
// Append a new access control entry to the existing access list.
update := bigquery.DatasetMetadataToUpdate{
	Access: append(meta.Access, &bigquery.AccessEntry{
		Role:       bigquery.ReaderRole,
		EntityType: bigquery.UserEmailEntity,
		Entity:     "sample.bigquery.dev@gmail.com"},
	),
}

// Leverage the ETag for the update to assert there's been no modifications to the
// dataset since the metadata was originally read.
if _, err := ds.Update(ctx, update, meta.ETag); err != nil {
	return err
}

Java

Antes de probar esta muestra, sigue las instrucciones de configuración de Java que se encuentran en la Guía de inicio rápido de BigQuery con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

Crea una instancia Dataset.Builder a partir de una instancia Dataset existente con el método Dataset.toBuilder(). Configura el objeto compilador de datos. Compila el conjunto de datos actualizado con el método Dataset.Builder.build() y llama al método Dataset.update() para enviar la actualización a la API.

Configura los controles de acceso con el método Dataset.Builder.setAcl().

List<Acl> beforeAcls = dataset.getAcl();

// Make a copy of the ACLs so that they can be modified.
ArrayList<Acl> acls = new ArrayList<>(beforeAcls);
acls.add(Acl.of(new Acl.User("sample.bigquery.dev@gmail.com"), Acl.Role.READER));
DatasetInfo.Builder builder = dataset.toBuilder();
builder.setAcl(acls);

bigquery.update(builder.build());  // API request.

Python

Antes de probar esta muestra, sigue las instrucciones de configuración para Python que se encuentran 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.

Establece la propiedad dataset.access_entries con los controles de acceso para un conjunto de datos. Luego, llama a la función client.update_dataset() para actualizar la propiedad.
from google.cloud import bigquery

# TODO(developer): 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)

entry = bigquery.AccessEntry(
    role="READER",
    entity_type="userByEmail",
    entity_id="sample.bigquery.dev@gmail.com",
)

entries = list(dataset.access_entries)
entries.append(entry)
dataset.access_entries = entries

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

full_dataset_id = "{}.{}".format(dataset.project, dataset.dataset_id)
print(
    "Updated dataset '{}' with modified user permissions.".format(full_dataset_id)
)

Pasos siguientes

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.