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:

Copia vistas

En la actualidad, solo puedes copiar vistas con GCP 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 GCP 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 requieran 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, cuando cree un conjunto de datos, se le otorgará acceso bigquery.dataOwner. El acceso bigquery.dataOwner ofrece al usuario la capacidad de copiar vistas desde el conjunto de datos de origen, pero el acceso al conjunto de datos de destino aún es necesario, a menos que este también lo haya creado el usuario.

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 (Copy).

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 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 quieres obtener información sobre una vista en un proyecto que no sea el proyecto predeterminado, debes agregar 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 que:

  • 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 toda la información sobre myview en mydataset. mydataset está en tu proyecto predeterminado.

bq show --format=prettyjson mydataset.myview

Ingresa el siguiente comando para mostrar la 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.

Renombra una vista

En la actualidad, puedes renombrar una vista solo cuando usas GCP Console para copiar vistas. Si deseas obtener instrucciones para renombrar una vista cuando la copias, consulta Copia una vista.

No puedes 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 eliminar una vista mediante:

  • El uso de GCP Console o la IU web de BigQuery.
  • El uso del comando bq rm de la herramienta de línea de comandos
  • La realización de una llamada al método tables.delete de la API

Por el momento, solo se puede borrar una vista por vez con cualquiera de los métodos disponibles.

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 configurar la fecha de vencimiento 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 de bigquery.tables.delete y bigquery.tables.get:

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

Además, si un usuario tiene permisos bigquery.datasets.create, cuando cree un conjunto de datos, se le otorgará acceso bigquery.dataOwner. El acceso bigquery.dataOwner ofrece al usuario la capacidad de borrar 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 formato siguiente: project_id:dataset.

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

En el que:

  • 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 comando siguiente para borrar myview de mydataset. mydataset está en tu proyecto predeterminado.

bq rm -t mydataset.myview

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

bq rm -t myotherproject:mydataset.myview

Ingresa el comando siguiente 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 se debe borrar mediante el parámetro tableId.

C#

Antes de probar esta muestra, sigue las instrucciones de configuración para C# que se encuentran en la Guía de inicio rápido de BigQuery con bibliotecas cliente. Si necesitas 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 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 Go de BigQuery.

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

Java

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.

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

// 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 esta muestra, sigue las instrucciones de configuración de PHP 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 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 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 Python de BigQuery.

from google.cloud import bigquery

# TODO(developer): 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)
print("Deleted table '{}'.".format(table_id))

Ruby

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

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

Enviar comentarios sobre...

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