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

Atualizar uma visualização

Depois de criar uma visualização, é possível atualizar as propriedades a seguir:

Permissões necessárias

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

  • bigquery.tables.update
  • bigquery.tables.get

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

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

Além disso, se você tiver a permissão bigquery.datasets.create, poderá atualizar tabelas e visualizações nos conjuntos de dados que criar.

Se você for atualizar a consulta SQL da visualização, precisará também ter permissões para consultar as tabelas referenciadas pela consulta.

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

Como atualizar a consulta SQL de uma visualização

Para atualizar a consulta SQL usada para definir uma visualização:

  • Use o console do Google Cloud
  • use o comando bq update da ferramenta de linha de comando bq;
  • chame o tables.patch método de API;
  • Como usar bibliotecas de cliente

É possível alterar o dialeto SQL legado para GoogleSQL na API ou na ferramenta de linha de comando bq. Não é possível atualizar uma visualização de SQL legado para o GoogleSQL no console do Google Cloud.

Para atualizar a consulta SQL de uma visualização:

Console

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

  2. Clique na guia Details.

  3. Acima da caixa Consulta, clique no botão Editar consulta. Clique em Abrir na caixa de diálogo exibida.

    Editar consulta

  4. Edite a consulta SQL na caixa Editor de consultas e clique em Salvar visualização.

    Salvar visualização

  5. Verifique se todos os campos estão corretos na caixa de diálogo Salvar visualização e clique em Salvar.

bq

Use o comando bq update com a sinalização --view. Para usar o GoogleSQL ou atualizar o dialeto de consulta do SQL legado para o GoogleSQL, inclua a sinalização --use_legacy_sql e a defina como false.

Se a consulta se referir a recursos de função externos definidos pelo usuário armazenados no Cloud Storage ou em arquivos locais, use a sinalização --view_udf_resource para especificar esses recursos. A sinalização --view_udf_resource não é demonstrada aqui. Para mais informações sobre como usar UDFs, consulte Funções definidas pelo usuário do GoogleSQL.

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

bq update \
    --use_legacy_sql=false \
    --view_udf_resource=path_to_file \
    --view='query' \
    project_id:dataset.view

Substitua:

  • path_to_file: o caminho do URI ou do sistema de arquivos local para um arquivo de código a ser carregado e avaliado imediatamente como recurso de função definida pelo usuário, usado pela visualização. Repita a sinalização para especificar vários arquivos;
  • query: uma consulta válida do GoogleSQL.
  • project_id: ID do projeto
  • dataset: o nome do conjunto de dados que contém a visualização que você está atualizando.
  • view: o nome da visualização que você está atualizando.

Exemplos

Use o seguinte comando para atualizar a consulta SQL para uma visualização nomeada myview em mydataset. mydataset está em seu projeto padrão. A consulta de exemplo usada para atualizar os dados de consultas de visualização do conjunto de dados público Dados de nomes dos EUA.

bq update \
    --use_legacy_sql=false \
    --view \
    'SELECT
      name,
      number
    FROM
      `bigquery-public-data.usa_names.usa_1910_current`
    WHERE
      gender = "M"
    ORDER BY
      number DESC;' \
    mydataset.myview

Use o seguinte comando para atualizar a consulta SQL para uma visualização nomeada myview em mydataset. mydataset está em myotherproject, não no seu projeto padrão. A consulta de exemplo usada para atualizar os dados de consultas de visualização do conjunto de dados público Dados de nomes dos EUA.

bq update \
    --use_legacy_sql=false \
    --view \
    'SELECT
      name,
      number
    FROM
      `bigquery-public-data.usa_names.usa_1910_current`
    WHERE
      gender = "M"
    ORDER BY
      number DESC;' \
    myotherproject:mydataset.myview

API

É possível atualizar uma visualização chamando o método tables.patch com um recurso de tabela que contenha uma property view atualizada. Como o método tables.update substitui todo o recurso da tabela, é melhor usar o método tables.patch.

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.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

import (
	"context"
	"fmt"

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

// updateView demonstrates updating the query metadata that defines a logical view.
func updateView(projectID, datasetID, viewID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// viewID := "myview"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	view := client.Dataset(datasetID).Table(viewID)
	meta, err := view.Metadata(ctx)
	if err != nil {
		return err
	}

	newMeta := bigquery.TableMetadataToUpdate{
		// This example updates a view into the shakespeare dataset to exclude works named after kings.
		ViewQuery: "SELECT word, word_count, corpus, corpus_date FROM `bigquery-public-data.samples.shakespeare` WHERE corpus NOT LIKE '%king%'",
	}

	if _, err := view.Update(ctx, newMeta, meta.ETag); 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.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.TableId;
import com.google.cloud.bigquery.TableInfo;
import com.google.cloud.bigquery.ViewDefinition;

// Sample to update query on a view
public class UpdateViewQuery {

  public static void runUpdateViewQuery() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String tableName = "MY_TABLE_NAME";
    String viewName = "MY_VIEW_NAME";
    String updateQuery =
        String.format("SELECT TimestampField, StringField FROM %s.%s", datasetName, tableName);
    updateViewQuery(datasetName, viewName, updateQuery);
  }

  public static void updateViewQuery(String datasetName, String viewName, String query) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      // Retrieve existing view metadata
      TableInfo viewMetadata = bigquery.getTable(TableId.of(datasetName, viewName));

      // Update view query
      ViewDefinition viewDefinition = viewMetadata.getDefinition();
      viewDefinition.toBuilder().setQuery(query).build();

      // Set metadata
      bigquery.update(viewMetadata.toBuilder().setDefinition(viewDefinition).build());

      System.out.println("View query updated successfully");
    } catch (BigQueryException e) {
      System.out.println("View query was not updated. \n" + e.toString());
    }
  }
}

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 em Node.js.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

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

async function updateViewQuery() {
  // Updates a view named "my_existing_view" in "my_dataset".

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = "my_existing_dataset"
  // const tableId = "my_existing_table"
  const dataset = await bigquery.dataset(datasetId);

  // This example updates a view into the USA names dataset to include state.
  const newViewQuery = `SELECT name, state
  FROM \`bigquery-public-data.usa_names.usa_1910_current\`
  LIMIT 10`;

  // Retrieve existing view
  const [view] = await dataset.table(tableId).get();

  // Retrieve existing view metadata
  const [metadata] = await view.getMetadata();

  // Update view query
  metadata.view = newViewQuery;

  // Set metadata
  await view.setMetadata(metadata);

  console.log(`View ${tableId} updated.`);
}

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.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

from google.cloud import bigquery

client = bigquery.Client()

view_id = "my-project.my_dataset.my_view"
source_id = "my-project.my_dataset.my_table"
view = bigquery.Table(view_id)

# The source table in this example is created from a CSV file in Google
# Cloud Storage located at
# `gs://cloud-samples-data/bigquery/us-states/us-states.csv`. It contains
# 50 US states, while the view returns only those states with names
# starting with the letter 'M'.
view.view_query = f"SELECT name, post_abbr FROM `{source_id}` WHERE name LIKE 'M%'"

# Make an API request to update the query property of the view.
view = client.update_table(view, ["view_query"])
print(f"Updated {view.table_type}: {str(view.reference)}")

Como atualizar o prazo de validade de uma visualização

É possível configurar o tempo de expiração padrão da tabela no nível do conjunto de dados (o que afeta tanto as tabelas quanto as visualizações) ou definir o tempo de expiração de uma visualização quando ela é criada. Caso você faça isso durante a criação da visualização, a expiração padrão da tabela do conjunto de dados será ignorada. Se você não definir uma validade padrão de tabela no nível do conjunto de dados nem a validade durante a criação da visualização, esta nunca expirará e será necessário excluí-la manualmente.

É possível atualizar o prazo de validade de uma visualização a qualquer momento após criá-la. Para fazer isso:

  • Use o console do Google Cloud
  • Use uma instrução de linguagem de definição de dados (DDL, na sigla em inglês) escrita na sintaxe do GoogleSQL.
  • Use o comando bq update da ferramenta de linha de comando bq
  • chame o tables.patch método de API;
  • use bibliotecas de cliente.

Para atualizar o prazo de validade de uma visualização:

Console

  1. No painel de navegação, selecione a visualização.

  2. Na página de detalhes da visualização, clique na guia Detalhes.

  3. À direita de Informações da visualização, clique no ícone de edição (lápis).

  4. Na caixa de diálogo Informações da visualização, em Validade da visualização, clique em Especificar data.

  5. No seletor de data, insira a data e a hora de validade e clique em Ok.

  6. Clique em Atualizar. O prazo de validade atualizado é exibido na seção Informações de visualização.

SQL

Use a instrução DDL ALTER VIEW SET OPTIONS:

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

    Ir para o BigQuery

  2. No editor de consultas, digite a seguinte instrução:

     ALTER VIEW DATASET_ID.MY_VIEW
     SET OPTIONS (
      expiration_timestamp = TIMESTAMP('NEW_TIMESTAMP'));
    

    Substitua:

    • DATASET_ID: o ID do conjunto de dados que contém a visualização.
    • MY_VIEW: o nome da visualização que será atualizada.
    • NEW_TIMESTAMP: um valor TIMESTAMP

  3. Clique em Executar.

Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.

bq

Use o comando bq update com a sinalização --expiration. Caso esteja atualizando uma visualização em um projeto diferente daquele padrão, adicione o ID do projeto ao nome do conjunto de dados no seguinte formato: project_id:dataset.

bq update \
    --expiration integer \
    project_id:dataset.view

Substitua:

  • integer: o ciclo de vida padrão (em segundos) da tabela. O valor mínimo é de 3.600 segundos (uma hora). O prazo de validade é avaliado para a hora atual mais o número inteiro.
  • project_id: o ID do projeto
  • dataset: o nome do conjunto de dados que contém a visualização que você está atualizando.
  • view: o nome da visualização que você está atualizando.

Exemplos

Insira o seguinte comando para atualizar o prazo de validade de myview em mydataset para 5 dias (432.000 segundos). mydataset está em seu projeto padrão.

bq update \
    --expiration 432000 \
    mydataset.myview

Insira o seguinte comando para atualizar o prazo de validade de myview em mydataset para 5 dias (432.000 segundos). mydataset está em myotherproject, e não no projeto padrão.

bq update \
    --expiration 432000 \
    myotherproject:mydataset.myview

API

Chame o método tables.patch e use a property expirationTime no recurso de tabela. Em razão do método tables.update substituir todo o recurso da tabela, o método tables.patch é preferível. Quando você usa a API REST, a validade da visualização é expressa em milissegundos.

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.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

import (
	"context"
	"fmt"
	"time"

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

// updateTableExpiration demonstrates setting the table expiration of a table to a specific point in time
// in the future, at which time it will be deleted.
func updateTableExpiration(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()

	tableRef := client.Dataset(datasetID).Table(tableID)
	meta, err := tableRef.Metadata(ctx)
	if err != nil {
		return err
	}
	update := bigquery.TableMetadataToUpdate{
		ExpirationTime: time.Now().Add(time.Duration(5*24) * time.Hour), // table expiration in 5 days.
	}
	if _, err = tableRef.Update(ctx, update, meta.ETag); 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.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

Table beforeTable = bigquery.getTable(datasetName, tableName);

// Set table to expire 5 days from now.
long expirationMillis = DateTime.now().plusDays(5).getMillis();
TableInfo tableInfo = beforeTable.toBuilder()
        .setExpirationTime(expirationMillis)
        .build();
Table afterTable = bigquery.update(tableInfo);

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 em Node.js.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

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

async function updateTableExpiration() {
  // Updates a table's expiration.

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = 'my_dataset', // Existing dataset
  // const tableId = 'my_table', // Existing table
  // const expirationTime = Date.now() + 1000 * 60 * 60 * 24 * 5 // 5 days from current time in ms

  // Retreive current table metadata
  const table = bigquery.dataset(datasetId).table(tableId);
  const [metadata] = await table.getMetadata();

  // Set new table expiration to 5 days from current time
  metadata.expirationTime = expirationTime.toString();
  const [apiResponse] = await table.setMetadata(metadata);

  const newExpirationTime = apiResponse.expirationTime;
  console.log(`${tableId} expiration: ${newExpirationTime}`);
}

Python

A atualização da validade de uma visualização é o mesmo processo de atualizar a validade de uma tabela.

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.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

from google.cloud import bigquery

client = bigquery.Client()

# TODO(dev): Change table_id to the full name of the table you want to update.
table_id = "your-project.your_dataset.your_table_name"

# TODO(dev): Set table to expire for desired days days from now.
expiration = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(
    days=5
)
table = client.get_table(table_id)  # Make an API request.
table.expires = expiration
table = client.update_table(table, ["expires"])  # API request

print(f"Updated {table_id}, expires {table.expires}.")

Como atualizar a descrição de uma visualização

É possível atualizar a descrição de uma visualização. Para fazer isso:

  • Use o console do Google Cloud
  • Use uma instrução de linguagem de definição de dados (DDL, na sigla em inglês) escrita na sintaxe do GoogleSQL.
  • Use o comando bq update da ferramenta de linha de comando bq
  • chame o tables.patch método de API;
  • use bibliotecas de cliente.

Para atualizar a descrição de uma visualização:

Console

Não é possível adicionar uma descrição durante a criação de uma visualização usando o console do Google Cloud. No entanto, depois de criá-la, é possível adicionar a descrição na página Detalhes.

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

  2. Clique na guia Details.

  3. Clique no ícone de lápis ao lado de Descrição.

    Editar descrição da visualização

  4. Insira uma descrição na caixa de diálogo. Clique em Atualizar para salvar a nova descrição.

SQL

Use a instrução DDL ALTER VIEW SET OPTIONS:

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

    Ir para o BigQuery

  2. No editor de consultas, digite a seguinte instrução:

     ALTER VIEW DATASET_ID.MY_VIEW
     SET OPTIONS (
      description = 'NEW_DESCRIPTION');
    

    Substitua:

    • DATASET_ID: o ID do conjunto de dados que contém a visualização.
    • MY_VIEW: o nome da visualização que será atualizada.
    • NEW_DESCRIPTION: a descrição da nova visualização

  3. Clique em Executar.

Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.

bq

Use o comando bq update com a sinalização --description. Caso esteja atualizando uma visualização em um projeto diferente daquele padrão, adicione o ID do projeto ao nome do conjunto de dados no seguinte formato: [PROJECT_ID]:[DATASET].

bq update \
    --description "description" \
    project_id:dataset.view

Substitua:

  • description: o texto que descreve a visualização entre aspas
  • project_id: o ID do projeto
  • dataset: o nome do conjunto de dados que contém a visualização que você está atualizando.
  • view: o nome da visualização que você está atualizando.

Exemplos

Use o seguinte comando para alterar a descrição de myview em mydataset para “Descrição da minha visualização.” mydataset está em seu projeto padrão.

bq update \
    --description "Description of myview" \
    mydataset.myview

Use o seguinte comando para alterar a descrição de myview em mydataset para “Descrição de myview.” mydataset está em myotherproject, não no projeto padrão.

bq update \
    --description "Description of myview" \
    myotherproject:mydataset.myview

API

Chame o método tables.patch e use a property description para atualizar a descrição da visualização no recurso de tabela. Em razão do método tables.update substituir todo o recurso da tabela, o método tables.patch é preferível.

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.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

import (
	"context"
	"fmt"

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

// updateTableDescription demonstrates how to fetch a table's metadata and updates the Description metadata.
func updateTableDescription(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()

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

Java

A atualização da descrição de uma visualização é o mesmo processo de atualizar a descrição de uma tabela.

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.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

// String datasetName = "my_dataset_name";
// String tableName = "my_table_name";
// String newDescription = "new_description";

Table beforeTable = bigquery.getTable(datasetName, tableName);
TableInfo tableInfo = beforeTable.toBuilder()
    .setDescription(newDescription)
    .build();
Table afterTable = bigquery.update(tableInfo);

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 em Node.js.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

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

async function updateTableDescription() {
  // Updates a table's description.

  // Retreive current table metadata
  const table = bigquery.dataset(datasetId).table(tableId);
  const [metadata] = await table.getMetadata();

  // Set new table description
  const description = 'New table description.';
  metadata.description = description;
  const [apiResponse] = await table.setMetadata(metadata);
  const newDescription = apiResponse.description;

  console.log(`${tableId} description: ${newDescription}`);
}

Python

A atualização da descrição de uma visualização é o mesmo processo de atualizar a descrição de uma tabela.

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.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

# from google.cloud import bigquery
# client = bigquery.Client()
# project = client.project
# dataset_ref = bigquery.DatasetReference(project, dataset_id)
# table_ref = dataset_ref.table('my_table')
# table = client.get_table(table_ref)  # API request

assert table.description == "Original description."
table.description = "Updated description."

table = client.update_table(table, ["description"])  # API request

assert table.description == "Updated description."

Copiar visualizações

Atualmente, é possível copiar uma visualização apenas usando o console do Google 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 ajudar 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 Google 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.

Copie 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 é 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 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.

Renomeie uma visualização.

Atualmente, é possível renomear uma visualização apenas usando o console do Google 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.

Excluir visualizações

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

  • Use o console do Google 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.

Quando você exclui uma visualização autorizada, pode levar até 24 horas para remover a visualização excluída da lista de visualizações autorizadas do conjunto de dados de origem.

A exclusão de uma visualização também exclui todas as permissões associadas a ela. Ao recriar uma visualização excluída, você também precisa reconfigurar manualmente as permissões de acesso anteriormente associadas a ela.

Permissões necessárias

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

  • bigquery.tables.delete

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.

Exclua uma visualização

Para excluir uma visualização:

Console

  1. No Console do Google 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 DDL DROP VIEW:

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

    Ir para o BigQuery

  2. No editor de consultas, digite a seguinte instrução:

    DROP VIEW mydataset.myview;
    

    Substitua:

    • DATASET_ID: o ID do conjunto de dados que contém a visualização.
    • MY_VIEW: o nome da visualização que será atualizada.
    • NEW_DESCRIPTION: a descrição da nova visualização

  3. Clique em Executar.

Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.

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:

Você pode usar a ferramenta de linha de comando bq para executar comandos bq.

No Console do Google 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#.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.


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.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

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.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

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 em Node.js.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

// 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 em PHP.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

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.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.


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 em Ruby.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

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 a visualizações no BigQuery, consulte Visualizações autorizadas.

A seguir