Como gerenciar visualizações

Neste documento, descrevemos como gerenciar visualizações no BigQuery. Gerencie as visualizações do BigQuery das seguintes maneiras:

Antes de começar

Atribua papéis do Identity and Access Management (IAM) que concedam aos usuários as permissões necessárias para realizar cada tarefa deste documento. As permissões necessárias para executar uma tarefa (se houver) são listadas na seção "Permissões necessárias".

Como copiar visualizações

Atualmente, é possível copiar uma visualização apenas usando o Console do Cloud.

Não é possível copiar uma visualização usando a ferramenta de linha de comando bq, a API REST ou as bibliotecas de cliente. Em vez disso, é necessário recriar a visualização no conjunto de dados de destino. Para ajudá-lo a recriar a visualização, você pode usar a ferramenta de linha de comando bq para copiar a consulta SQL da visualização.

Permissões necessárias

Para copiar uma visualização no Console do Cloud, você precisa de permissões do IAM nos conjuntos de dados de origem e destino.

  • No conjunto de dados de origem, você precisa de:

    • bigquery.tables.get
    • bigquery.tables.getData (obrigatório para acessar as tabelas referenciadas pela consulta SQL da visualização)
  • No conjunto de dados de destino, você precisa de:

    • bigquery.tables.create (permite criar uma cópia da visualização no conjunto de dados de destino)

Cada um dos seguintes papéis predefinidos do IAM inclui as permissões necessárias para copiar uma visualização:

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

Além disso, se você tiver a permissão bigquery.datasets.create, é possível criar visualizações nos conjuntos de dados que você criou. Você também precisa ter acesso ao conjunto de dados de destino, a menos que o tenha criado.

Para mais informações sobre papéis e permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.

Como copiar uma visualização

Para copiar uma visualização:

Console

  1. No painel Explorador, expanda o projeto e o conjunto de dados e selecione a visualização.

  2. No painel de detalhes, clique em Copiar visualização.

  3. Na caixa de diálogo Copiar visualização:

    • Na seção Origem, verifique se o Nome do projeto, o Nome do conjunto de dados e o Nome da tabela estão corretos.
    • Na seção Destino:

      • Em Nome do projeto, escolha o projeto para o qual você está copiando a visualização.
      • Em Nome do conjunto de dados, escolha o conjunto de dados que conterá a visualização copiada.
      • Em Nome da tabela, insira o nome da visualização. É possível renomear a visualização inserindo um novo nome de visualização na caixa. Se você inserir um novo nome, ele terá que seguir as regras de nomenclatura da visualização.

      Caixa de diálogo "Copiar visualização"

    • Clique em Copiar.

bq

A ferramenta de linha de comando bq não dá suporte à cópia de visualização. Em vez disso, é necessário recriar a visualização no conjunto de dados de destino. Para ajudá-lo a recriar a visualização, é possível copiar a consulta SQL usada para definir a visualização.

Para copiar a consulta SQL que define uma visualização, emita o código bq show. A sinalização --format pode ser usada para controlar a saída. Se você estiver recebendo informações sobre uma visualização em um projeto diferente do projeto padrão, adicione o ID do projeto ao conjunto de dados no seguinte formato: project_id:dataset. Para gravar as propriedades de visualização em um arquivo, adicione > path_to_file ao comando.

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

Onde:

  • project_id é o ID do projeto;
  • dataset é o nome do conjunto de dados.
  • view é o nome da visualização;
  • path_to_file é o caminho para o arquivo de saída na máquina local.

Exemplos:

Digite o comando a seguir para exibir as informações sobre myview em mydataset. mydataset está em seu projeto padrão.

bq show --format=prettyjson mydataset.myview

Digite o comando a seguir para exibir as informações sobre myview em mydataset. mydataset está em myotherproject, e não no seu projeto padrão. As propriedades da visualização são gravadas em um arquivo local (/tmp/myview.json).

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

API

A API REST não é compatível com a cópia de uma visualização. Em vez disso, é necessário recriar a visualização no conjunto de dados de destino. Para informações sobre como criar uma visualização usando a API REST, consulte Como criar uma visualização.

Como renomear uma visualização

Atualmente, é possível renomear uma visualização apenas usando o Console do Cloud para copiá-la. Para instruções sobre como renomear uma visualização ao copiá-la, consulte Como copiar uma visualização.

Não é possível alterar o nome de uma visualização existente usando a ferramenta de linha de comando bq, a API ou as bibliotecas de cliente. Em vez disso, é necessário recriar a visualização com o novo nome.

Como excluir visualizações

Use estes métodos para excluir uma visualização:

  • Como usar o Console do Cloud
  • Use o comando bq rm da ferramenta de linha de comando bq.
  • chame o método da API tables.delete;

Atualmente, os métodos disponíveis permitem excluir apenas uma visualização por vez.

Para excluir automaticamente as visualizações após um período de tempo determinado, defina o prazo de validade padrão no nível do conjunto de dados ou ao criar a visualização.

Permissões necessárias

Para excluir uma visualização, você precisa das seguintes permissões do IAM:

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

Cada um dos papéis predefinidos do IAM a seguir inclui as permissões necessárias para excluir uma tabela:

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

Além disso, se você tiver a permissão bigquery.datasets.create, é possível criar visualizações nos conjuntos de dados que criar.

Para mais informações sobre papéis e permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.

Como excluir uma visualização

Para excluir uma visualização:

Console

  1. No Console do Cloud, acesse a página do BigQuery.

    Ir para o BigQuery

  2. No painel Explorador, expanda o projeto e o conjunto de dados e selecione a visualização.

  3. No painel de detalhes, clique em Excluir visualização.

  4. Digite "delete" na caixa de diálogo e clique em Excluir para confirmar.

SQL

Use a instrução DROP VIEW para excluir uma visualização:

É possível executar a instrução SQL no Console do Cloud. Na página do BigQuery, insira a instrução no editor de consultas.

Ir para o BigQuery

DROP VIEW mydataset.myview

Para informações sobre como executar consultas, consulte Como executar consultas interativas.

bq

Use o comando bq rm com a sinalização --table (ou atalho -t) para excluir uma visualização. Quando você usa a ferramenta de linha de comando bq para remover uma visualização, é necessário confirmar a ação. É possível usar a sinalização --force (ou atalho -f) para pular a confirmação.

Se a visualização estiver em um conjunto de dados de um projeto diferente do padrão, adicione o ID do projeto ao nome do conjunto no seguinte formato: project_id:dataset.

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

Onde:

  • project_id é o ID do projeto;
  • dataset é o nome do conjunto de dados que contém a tabela;
  • view é o nome da visualização que você está excluindo.

Exemplos:

Use a ferramenta de linha de comando bq para executar comandos bq.

No Console do Cloud, ative o Cloud Shell.

Ativar o Cloud Shell

Digite o seguinte comando para excluir myview de mydataset. mydataset está em seu projeto padrão.

bq rm -t mydataset.myview

Digite o seguinte comando para excluir myview de mydataset. mydataset está em myotherproject, e não no seu projeto padrão.

bq rm -t myotherproject:mydataset.myview

Digite o seguinte comando para excluir myview de mydataset. mydataset está em seu projeto padrão. O comando usa o atalho -f para ignorar a confirmação.

bq rm -f -t mydataset.myview

API

Chame o método de API tables.delete e especifique a visualização a ser excluída usando o parâmetro tableId.

C#

Antes de testar esta amostra, siga as instruções de configuração do C# no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em 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 testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em 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 testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em 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 testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery 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 testar esta amostra, siga as instruções de configuração do PHP no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery 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 testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em 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 testar esta amostra, siga as instruções de configuração do Ruby no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de Referência da API BigQuery 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

Segurança das visualizações

Para controlar o acesso às visualizações no BigQuery, consulte Como controlar o acesso às visualizações.

Próximas etapas