Como criar visualizações

Neste documento, descrevemos como criar visualizações no BigQuery.

Para criar uma visualização no BigQuery:

  • use o Console do GCP ou a IU clássica da Web do BigQuery;
  • use manualmente o comando bq mk da ferramenta de linha de comando;
  • chame o método da API tables.insert.
  • envie uma instrução CREATE VIEW de linguagem de definição de dados (DDL, na sigla em inglês).

Nomenclatura da visualização

Ao criar uma visualização no BigQuery, o nome dela precisa ser exclusivo por conjunto de dados. O nome da visualização pode:

  • conter até 1.024 caracteres;
  • conter letras (maiúsculas e minúsculas), números e sublinhados.

Limitações da visualização

As visualizações do BigQuery estão sujeitas às seguintes limitações:

  • O conjunto de dados que contém a visualização precisa estar no mesmo local que o conjunto de dados que contém as tabelas referenciadas pela visualização.
  • Não é possível executar um job do BigQuery que exporta dados de uma visualização.
  • Não é possível usar o método TableDataList da API JSON para recuperar dados de uma visualização. Para mais informações, consulte Tabledata: list.
  • Não é possível combinar consultas de SQL padrão e de SQL legado ao usar visualizações. Uma consulta SQL padrão não pode referenciar uma visualização definida usando a sintaxe do SQL legado.
  • Os esquemas das tabelas subjacentes são armazenados com a visualização quando ela é criada. Se colunas forem adicionadas, excluídas, e assim por diante, depois que a visualização for criada, o esquema informado será impreciso até que ela seja atualizada. Mesmo que o esquema informado seja impreciso, todas as consultas enviadas produzirão resultados precisos.
  • Não é possível atualizar automaticamente uma visualização do SQL legado para a sintaxe SQL padrão. Para modificar a consulta usada para definir uma visualização, utilize a opção Editar consulta no console ou na IU clássica da Web do BigQuery, o comando da CLI bq update --view ou os métodos da API de atualização ou patch.
  • Não é possível incluir uma função definida pelo usuário na consulta SQL que define uma visualização.
  • Não é possível referenciar uma visualização em consultas a uma tabela curinga.

Para informações sobre cotas e limites que se aplicam a visualizações, consulte Limites da visualização.

Permissões exigidas

As visualizações são tratadas como recursos de tabela no BigQuery. Portanto, para criá-las, são necessárias as mesmas permissões usadas para gerar uma tabela. Para criar uma visualização, é preciso ter o acesso de WRITER no nível do conjunto de dados ou um papel do IAM para envolvidos no projeto que inclua permissões bigquery.tables.create. Os seguintes papéis predefinidos do IAM para envolvidos no projeto incluem permissões bigquery.tables.create:

Além disso, como o papel bigquery.user tem permissões bigquery.datasets.create, um usuário com papel bigquery.user pode criar visualizações em conjuntos de dados criados por ele. Quando um usuário com papel bigquery.user cria um conjunto de dados, ele recebe acesso OWNER ao conjunto de dados. O acesso OWNER concede ao usuário o controle total sobre o conjunto e todas as tabelas e visualizações nele.

Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Controle de acesso. Para saber mais sobre os papéis no nível do conjunto de dados, consulte Papéis primários para conjuntos de dados.

Como criar uma visualização

É possível criar uma visualização compondo uma consulta SQL que é usada para definir os dados acessíveis para a exibição.

Na consulta SQL padrão usada para criar uma visualização, é preciso incluir o ID do projeto na tabela e as referências de visualização no formato `[PROJECT_ID].[DATASET].[TABLE]`. O SQL padrão requer códigos de projeto explícitos para evitar ambiguidade quando as visualizações são consultadas em projetos diferentes.

Para criar uma visualização, faça o seguinte:

Console

  1. Depois de executar uma consulta, clique no botão Salvar visualização acima da janela de resultados.

    Salvar visualização

  2. Na caixa de diálogo Salvar visualização, faça o seguinte:

    • Em Nome do projeto, selecione o projeto em que a visualização será armazenada.
    • Em Nome do conjunto de dados, escolha o conjunto de dados que incluirá a visualização. O conjunto de dados que contiver a visualização e o conjunto que incluir as tabelas mencionadas por ela precisam estar no mesmo local.
    • Em Nome da tabela, insira o nome da visualização.
    • Clique em Salvar.

IU clássica

  1. Depois de executar uma consulta, clique no botão Salvar visualização na janela de resultados da consulta para salvá-la como visualização.

    Salvar visualização

  2. Na caixa de diálogo Salvar visualização, faça o seguinte:

    • Em Projeto, selecione o projeto que armazenará a visualização.
    • Em Conjunto de dados, escolha o conjunto de dados que conterá a visualização. O conjunto de dados que contém a visualização precisa estar no mesmo local que o conjunto de dados que contém as tabelas referenciadas pela visualização.
    • Em Código da tabela, digite o nome da visualização.
    • Clique em OK.

Linha de comando

Use o comando mk com a sinalização --view. Para consultas SQL padrão, adicione e defina a sinalização --use_legacy_sql como false. Os parâmetros opcionais incluem --expiration, --description e --label.

Há recursos de função externos que são definidos pelo usuário. Se a consulta fizer referência a esses recursos e eles estiverem armazenados no Google Cloud Storage ou em arquivos locais, use a sinalização --view_udf_resource para especificá-los. A sinalização --view_udf_resource não será demonstrada aqui. Para mais informações sobre como usar UDFs, consulte Funções do SQL padrão definidas pelo usuário.

Se você estiver criando uma visualização em um projeto diferente do padrão, especifique o código dele usando a sinalização --project_id.

bq mk --use_legacy_sql=false --view_udf_resource=[PATH_TO_FILE] --expiration [INTEGER] --description "[DESCRIPTION]" --label [KEY:VALUE, KEY:VALUE] --view '[QUERY]' --project_id [PROJECT_ID] [DATASET].[VIEW]

Onde:

  • [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;
  • [INTEGER] é a vida útil padrão (em segundos) da visualização. O valor mínimo é de 3.600 segundos (uma hora). O prazo de validade é avaliado para a hora atual mais o valor inteiro. Se você definir esse valor ao criar a visualização, a configuração de validade da tabela padrão do conjunto de dados será ignorada;
  • [DESCRIPTION] é uma descrição da visualização entre aspas;
  • [KEY:VALUE] é o par de chave-valor que representa um rótulo. Você pode inserir vários marcadores usando uma lista separada por vírgulas;
  • [QUERY] é uma consulta válida. Para visualizações do SQL padrão, a consulta precisa incluir o ID do projeto na tabela e as referências de visualização no formato `[PROJECT_ID].[DATASET].[TABLE]`.
  • [PROJECT_ID] é o código do projeto (se você não tem um projeto padrão configurado);
  • [DATASET] é um conjunto de dados no projeto;
  • [VIEW] é o nome da visualização que você pretende criar.

Exemplos:

Digite o seguinte comando para criar uma visualização chamada myview no mydataset no seu projeto padrão. O tempo de expiração é definido para 3.600 segundos (1 hora), a descrição está definida como This is my view e o rótulo como organization:development. A consulta usada para criar a visualização examina os dados do conjunto de dados público USA Name Data.

bq mk --use_legacy_sql=false --expiration 3600 --description "This is my view" --label organization:development --view 'SELECT name,number FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE gender = "M" ORDER BY number DESC' mydataset.myview

Digite o seguinte comando para criar uma visualização chamada myview no mydataset em myotherproject. O tempo de expiração é definido para 3.600 segundos (1 hora), a descrição está definida como This is my view e o rótulo como organization:development. A consulta usada para criar a visualização examina os dados do conjunto de dados público USA Name Data.

bq mk --use_legacy_sql=false --expiration 3600 --description "This is my view" --label organization:development --view 'SELECT name,number FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE gender = "M" ORDER BY number DESC' --project_id myotherproject mydataset.myview

Após criar a visualização, é possível atualizar a validade, a descrição e os rótulos dela. Para mais informações, consulte Como atualizar visualizações.

API

Chame o método tables.insert com um recurso de tabela que contenha uma propriedade view.

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

// 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")
meta := &bigquery.TableMetadata{
	// This example shows how to create a view of the shakespeare sample dataset, which
	// provides word frequency information.  This view restricts the results to only contain
	// results for works that contain the "king" in the title, e.g. King Lear, King Henry V, etc.
	ViewQuery: "SELECT word, word_count, corpus, corpus_date FROM `bigquery-public-data.samples.shakespeare` WHERE corpus LIKE '%king%'",
}
if err := client.Dataset(datasetID).Table(tableID).Create(ctx, meta); err != nil {
	return err
}

Python

Antes de testar esta amostra, siga as instruções de configuração do Python em 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 Python (em inglês).

# from google.cloud import bigquery
# client = bigquery.Client()
# project = 'my-project'
# source_dataset_id = 'my_source_dataset'
# source_table_id = 'us_states'
# shared_dataset_ref = client.dataset('my_shared_dataset')

# This example shows how to create a shared view of a source table of
# US States. The source table contains all 50 states, while the view will
# contain only states with names starting with 'W'.
view_ref = shared_dataset_ref.table("my_shared_view")
view = bigquery.Table(view_ref)
sql_template = 'SELECT name, post_abbr FROM `{}.{}.{}` WHERE name LIKE "W%"'
view.view_query = sql_template.format(project, source_dataset_id, source_table_id)
view = client.create_table(view)  # API request

print("Successfully created view at {}".format(view.full_table_id))

Depois de criar a visualização, consulte-a como se consultasse uma tabela.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.