Administra vistas

En este documento, se describe cómo administrar vistas en BigQuery. Puedes administrar las vistas de BigQuery de las siguientes formas:

Copia vistas

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

No puedes copiar vistas mediante la IU web clásica ni la CLI, 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 CLI o la IU web clásica a fin de copiar la consulta de SQL de la vista.

Permisos necesarios

Como mínimo, para copiar vistas en Cloud Console, debes tener los permisos siguientes.

En el conjunto de datos de origen:

  • bigquery.tables.get para copiar los metadatos de la vista
  • bigquery.tables.getData para copiar la consulta de SQL de la vista

Es posible que se necesiten permisos adicionales, como bigquery.tables.getData, para acceder a las tablas a las que hace referencia la consulta de SQL de la vista.

En el conjunto de datos de destino:

  • bigquery.tables.create para crear la copia de la vista en el conjunto de datos de destino

Las siguientes funciones predefinidas de Cloud IAM incluyen los permisos bigquery.tables.create, bigquery.tables.get y bigquery.tables.getData:

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

Además, si un usuario tiene permisos bigquery.datasets.create, se le otorga el acceso bigquery.dataOwner cuando crea un conjunto de datos. El acceso bigquery.dataOwner da al usuario la capacidad de copiar vistas desde el conjunto de datos de origen, pero aún se requiere acceso al conjunto de datos de destino, a menos que sea el usuario quien creó el conjunto de datos de destino.

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

Copia una vista

Para copiar una vista, sigue estos pasos:

Console

  1. Selecciona la vista en el panel de navegación.

  2. En el lado derecho de la ventana, haz clic en Copiar vista (Copy View).

  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.

IU clásica

La IU web clásica 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, haz lo siguiente:

  1. Selecciona la vista en el panel de navegación de la IU.

  2. En el panel Ver detalles, haz clic en Detalles.

  3. Copia el texto en la casilla Consulta.

CLI

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 de acceso 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 una vista.

Cambia el nombre de 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 cambiar el nombre de una vista cuando la copias, consulta Copia una vista.

No se puede cambiar el nombre de una vista existente con la IU web clásica ni con la CLI, la API ni las bibliotecas cliente. En su lugar, debes volver a crear la vista con el nombre nuevo.

Borra vistas

Puedes borrar una vista mediante uno de los métodos siguientes:

  • Usar Cloud Console o la IU web clásica de BigQuery
  • Con el comando bq rm de la herramienta de línea de comandos
  • Mediante una llamada al método de la API tables.delete

Por el momento, 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.

Permisos necesarios

Como mínimo, para borrar una vista, debes tener los permisos bigquery.tables.delete y bigquery.tables.get. Las siguientes funciones predefinidas de Cloud IAM incluyen los permisos bigquery.tables.delete y bigquery.tables.get:

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

Además, si un usuario tiene permisos bigquery.datasets.create, se le otorga el acceso bigquery.dataOwner cuando crea un conjunto de datos. El acceso bigquery.dataOwner ofrece al usuario la capacidad de crear vistas en el conjunto de datos.

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

Borra una vista

Para borrar una vista, haz lo siguiente:

Console

  1. Selecciona tu vista en el panel Recursos. Haz clic en Borrar vista en el lado derecho de la ventana.

  2. Escribe el nombre de la vista en el cuadro de diálogo y haz clic en Borrar para confirmar.

IU clásica

  1. Haz clic en el ícono de flecha hacia abajo ícono de flecha hacia abajo junto al nombre de la vista en la barra de navegación y haz clic en Borrar vista.

  2. Cuando se te solicite, haz clic en Aceptar para confirmar.

CLI

Usa el comando bq rm con la marca --table (o la combinación de teclas -t) para borrar una vista. Cuando uses la CLI 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 deseas borrar.

Ejemplos:

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# 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 BigQuery para C#.


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 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 BigQuery para Go.

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 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 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 que se encuentran 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 Go 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 BigQuery para PHP.

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 BigQuery para Python.


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 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 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

Próximos pasos