Administra vistas

En este documento, se describe cómo administrar vistas en BigQuery. Puedes administrar tus vistas de BigQuery a través de las operaciones siguientes:

Antes de comenzar

Otorga roles de Identity and Access Management (IAM) que les brindan a los usuarios los permisos necesarios para realizar cada tarea de este documento. Los permisos necesarios para realizar una tarea (si existen) se enumeran en la sección “Permisos necesarios” de la tarea.

Copia vistas

En la actualidad, solo puedes copiar vistas con Cloud Console.

No puedes copiar vistas con la herramienta de línea de comandos de bq, la API de REST ni las bibliotecas cliente. En su lugar, debes volver a crear la vista en el conjunto de datos de destino. Para ayudarte a volver a crear la vista, puedes usar la herramienta de línea de comandos de bq a fin de copiar la consulta de SQL de la vista.

Permisos necesarios

Para copiar una vista en Cloud Console, necesitas permisos de IAM en los conjuntos de datos de origen y de destino.

  • En el conjunto de datos de origen, necesitas lo siguiente:

    • bigquery.tables.get
    • bigquery.tables.getData (obligatorio para acceder a las tablas a las que hace referencia la consulta de SQL de la vista)
  • En el conjunto de datos de destino, necesitas lo siguiente:

    • bigquery.tables.create (te permite crear una copia de la vista en el conjunto de datos de destino)

Cada una de las siguientes funciones predefinidas de IAM incluye los permisos que necesitas para copiar una vista:

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

Además, si tienes el permiso bigquery.datasets.create, puedes copiar vistas en los conjuntos de datos que crees. También necesitas acceso al conjunto de datos de destino, a menos que tú lo hayas creado.

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

Copiado de una vista

Para copiar una vista, sigue estos pasos:

Console

  1. En el panel Explorador, expande tu proyecto y conjunto de datos y, luego, selecciona la vista.

  2. En el panel de detalles, haz clic en Copiar vista.

  3. En el cuadro de diálogo Copiar vista (Copy view), sigue estos pasos:

    • En la sección Fuente (Source), verifica que el Nombre de proyecto (Project name), el Nombre del conjunto de datos (Dataset name) y el Nombre de la tabla (Table name) sean correctos.
    • En la sección Destino (Destination) sigue estos pasos:

      • En Nombre del proyecto (Project name), elige el proyecto en el que copiarás la vista.
      • En Nombre del conjunto de datos (Dataset name), elige el conjunto de datos que contendrá la vista copiada.
      • En Nombre de la tabla (Table name), ingresa el nombre de la vista. Puedes renombrar la vista si ingresas un nombre de vista nuevo en el cuadro. Si ingresas un nombre nuevo, debes seguir las reglas de nombres de las vistas.

      Cuadro de diálogo Copiar vista

    • Haz clic en Copiar.

bq

La herramienta de línea de comandos de bq no admite la copia de vistas. En su lugar, debes volver a crear la vista en el conjunto de datos de destino. A fin de ayudarte a volver a crear la vista, puedes copiar la consulta de SQL que usaste para definir la vista.

Para copiar la consulta de SQL que define una vista, emite el comando bq show. La marca --format se puede usar para controlar el resultado. Si obtienes información sobre una vista en un proyecto que no sea tu proyecto predeterminado, agrega el ID del proyecto al conjunto de datos en el formato siguiente: project_id:dataset. Para escribir las propiedades de la vista en un archivo, agrega > path_to_file al comando.

bq show \
--format=prettyjson \
project_id:dataset.view > path_to_file

En el ejemplo anterior, se ilustra lo siguiente:

  • project_id es el ID del proyecto.
  • dataset es el nombre del conjunto de datos.
  • view es el nombre de la vista.
  • path_to_file es la ruta al archivo de salida en tu máquina local.

Ejemplos:

Ingresa el siguiente comando para mostrar información sobre myview en mydataset. mydataset está en tu proyecto predeterminado.

bq show --format=prettyjson mydataset.myview

Ingresa el siguiente comando para mostrar información sobre myview en mydataset. mydataset está en myotherproject, no en tu proyecto predeterminado. Las propiedades de la vista se escriben en un archivo local: /tmp/myview.json.

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

API

La API de REST no admite la copia de vistas. En su lugar, debes volver a crear la vista en el conjunto de datos de destino. Para obtener información sobre cómo crear una vista con la API de REST, consulta Crea vistas.

Cambio de nombre una vista

En la actualidad, puedes cambiar el nombre de una vista solo cuando usas Cloud Console para copiar vistas. Si deseas obtener instrucciones para renombrar una vista cuando la copias, consulta Copia una vista.

No se puede cambiar el nombre de una vista existente con la herramienta de línea de comandos de bq, la API ni las bibliotecas cliente. En su lugar, debes volver a crear la vista con el nombre nuevo.

Borra vistas

Puedes eliminar una vista mediante:

  • Usa Cloud Console
  • Usar el comando bq rm de la herramienta de línea de comandos de bq
  • Con una llamada al método tables.delete de la API

Actualmente, con cualquiera de los métodos disponibles, solo puedes borrar una vista a la vez.

Para borrar vistas de manera automática tras un período especificado, debes configurar la fecha de vencimiento predeterminada a nivel de conjunto de datos o configurarla cuando crees la vista.

Cuando borras una vista autorizada, la eliminación de la vista borrada de la vista autorizada de este conjunto de datos puede tardar hasta 24 horas.

Permisos necesarios

Para borrar una tabla, necesitas los siguientes permisos de IAM:

  • bigquery.tables.delete
  • bigquery.tables.get

Cada una de las siguientes funciones predefinidas de IAM incluye los permisos que necesitas para borrar una tabla:

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

Además, si tienes el permiso bigquery.datasets.create, puedes borrar vistas en los conjuntos de datos que crees.

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

Borrar una vista

Para borrar una vista, haz lo siguiente:

Console

  1. En Cloud Console, ve a la página de BigQuery.

    Ir a BigQuery

  2. En el panel Explorador, expande tu proyecto y conjunto de datos y, luego, selecciona la vista.

  3. En el panel de detalles, haz clic en Borrar vista.

  4. Escribe "delete" en el diálogo y haz clic en Borrar para confirmar.

SQL

Usa la instrucción DROP VIEW para borrar una vista:

Puedes ejecutar la instrucción de SQL en Cloud Console. En la página de BigQuery, ingresa la instrucción en el editor de consultas.

Ir a BigQuery

DROP VIEW mydataset.myview

Si deseas obtener más información sobre cómo ejecutar consultas, visita Ejecuta consultas interactivas.

bq

Usa el comando bq rm con la marca --table (o la combinación de teclas -t) para borrar una vista. Cuando usas la herramienta de línea de comandos de bq para quitar una vista, debes confirmar la acción. Puedes usar la marca --force (o la combinación de teclas -f) para omitir la confirmación.

Si la vista se encuentra en un conjunto de datos de un proyecto distinto a tu proyecto predeterminado, debes agregar el ID del proyecto al nombre del conjunto de datos en el siguiente formato: project_id:dataset.

bq rm \
-f \
-t \
project_id:dataset.view

En el ejemplo anterior, se ilustra lo siguiente:

  • project_id es el ID del proyecto.
  • dataset es el nombre del conjunto de datos que contiene la tabla.
  • view es el nombre de la vista que vas a borrar.

Ejemplos:

Puedes usar la herramienta de línea de comandos de bq para ejecutar los comandos de bq.

En Cloud Console, activa Cloud Shell.

Activa Cloud Shell.

Ingresa el siguiente comando para borrar myview de mydataset. mydataset está en tu proyecto predeterminado.

bq rm -t mydataset.myview

Ingresa el siguiente comando para borrar myview de mydataset. mydataset está en myotherproject, no en tu proyecto predeterminado.

bq rm -t myotherproject:mydataset.myview

Ingresa el siguiente comando para borrar myview de mydataset. mydataset está en tu proyecto predeterminado. El comando usa la combinación de teclas -f para omitir la confirmación.

bq rm -f -t mydataset.myview

API

Llama al método tables.delete de la API y especifica la vista que deseas borrar con el parámetro tableId.

C#

Antes de probar este ejemplo, sigue las instrucciones de configuración para C# incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de C# de BigQuery.


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

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

import (
	"context"
	"fmt"

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

// deleteTable demonstrates deletion of a BigQuery table.
func deleteTable(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()

	table := client.Dataset(datasetID).Table(tableID)
	if err := table.Delete(ctx); err != nil {
		return err
	}
	return nil
}

Java

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

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

Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la Documentación de referencia de la API de Node.js de BigQuery.

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

async function deleteTable() {
  // Deletes "my_table" from "my_dataset".

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

  // Delete the table
  await bigquery
    .dataset(datasetId)
    .table(tableId)
    .delete();

  console.log(`Table ${tableId} deleted.`);
}

PHP

Antes de probar este ejemplo, sigue las instrucciones de configuración para PHP que se encuentran en la Guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de PHP de BigQuery.

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

Antes de probar esta muestra, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de Python de BigQuery.


from google.cloud import bigquery

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

# TODO(developer): Set table_id to the ID of the table to fetch.
# table_id = 'your-project.your_dataset.your_table'

# If the table does not exist, delete_table raises
# google.api_core.exceptions.NotFound unless not_found_ok is True.
client.delete_table(table_id, not_found_ok=True)  # Make an API request.
print("Deleted table '{}'.".format(table_id))

Ruby

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

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

Ver la seguridad

Para controlar el acceso a las vistas de BigQuery, consulta Controla el acceso a las vistas.

¿Qué sigue?