Faça a gestão das vistas materializadas
Este documento descreve como gerir vistas materializadas no BigQuery.
A gestão de vistas materializadas do BigQuery inclui as seguintes operações:
- Altere as vistas materializadas
- Liste as vistas materializadas
- Receba informações sobre as vistas materializadas
- Elimine vistas materializadas
- Atualize vistas materializadas
Para mais informações sobre as vistas materializadas, consulte o seguinte:
- Introdução às vistas materializadas
- Crie vistas materializadas
- Use vistas materializadas
- Monitorize vistas materializadas
Antes de começar
Conceda funções de gestão de identidade e acesso (IAM) que dão aos utilizadores as autorizações necessárias para realizar cada tarefa neste documento. As autorizações necessárias para realizar uma tarefa (se existirem) estão listadas na secção "Autorizações necessárias" da tarefa.
Altere vistas materializadas
Pode alterar uma vista materializada através da Trusted Cloud consola ou da ferramenta de linha de comandos
bq, usando a linguagem de definição de dados (DDL) com ALTER MATERIALIZED
VIEW
e SET OPTIONS
. Para ver uma lista de opções de vistas materializadas, consulte materialized_view_set_options_list
.
O exemplo seguinte mostra como definir enable_refresh
como true
. Ajuste conforme
necessário para o seu exemplo de utilização.
Autorizações necessárias
Para alterar as vistas materializadas, precisa das autorizações de IAM bigquery.tables.get
e bigquery.tables.update
.
Cada uma das seguintes funções de IAM predefinidas inclui as autorizações de que precisa para alterar uma vista materializada:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Para mais informações sobre a gestão de identidades e acessos (IAM) do BigQuery, consulte o artigo Funções e autorizações predefinidas.
SQL
Para alterar uma vista materializada, use a
ALTER MATERIALIZED VIEW SET OPTIONS
declaração DDL:
Na Trusted Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (enable_refresh = true);
Substitua o seguinte:
PROJECT
: o nome do projeto que contém a vista materializadaDATASET
: o nome do conjunto de dados que contém a visualização materializadaMATERIALIZED_VIEW
: o nome da vista materializada que quer alterar
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
bq
Execute o comando bq update
:
bq update \ --enable_refresh=true \ --refresh_interval_ms= \ PROJECT.DATASET.MATERIALIZED_VIEW
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Liste as vistas materializadas
Pode listar as vistas materializadas através da Trusted Cloud consola, da ferramenta de linha de comandos bq ou da API BigQuery.
Autorizações necessárias
Para listar as vistas materializadas num conjunto de dados, precisa da autorização bigquery.tables.list
IAM.
Cada uma das seguintes funções de IAM predefinidas inclui as autorizações de que precisa para listar vistas materializadas num conjunto de dados:
roles/bigquery.user
roles/bigquery.metadataViewer
roles/bigquery.dataViewer
roles/bigquery.dataOwner
roles/bigquery.dataEditor
roles/bigquery.admin
Para mais informações sobre as funções e as autorizações do IAM no IAM, consulte o artigo Funções e autorizações predefinidas.
O processo para listar vistas materializadas é idêntico ao processo para listar tabelas. Para listar as vistas materializadas num conjunto de dados:
Consola
No painel Explorador, expanda o projeto e selecione um conjunto de dados.
Percorra a lista para ver as tabelas no conjunto de dados. As tabelas, as vistas e as vistas materializadas são identificadas por ícones diferentes.
bq
Emita o comando bq ls
. A flag --format
pode ser usada para controlar o resultado. Se estiver a listar vistas materializadas num projeto que não seja o seu projeto predefinido, adicione o ID do projeto ao conjunto de dados no seguinte formato: project_id:dataset
.
bq ls --format=pretty project_id:dataset
Onde:
- project_id é o ID do seu projeto.
- dataset é o nome do conjunto de dados.
Quando executa o comando, o campo Type
apresenta o tipo de tabela.
Por exemplo:
+-------------------------+--------------------+----------------------+-------------------+ | tableId | Type | Labels | Time Partitioning | +-------------------------+--------------------+----------------------+-------------------+ | mytable | TABLE | department:shipping | | | mymatview | MATERIALIZED_VIEW | | | +-------------------------+--------------------+----------------------+-------------------+
Exemplos:
Introduza o seguinte comando para listar as vistas materializadas no conjunto de dados
mydataset
no seu projeto predefinido.
bq ls --format=pretty mydataset
Introduza o seguinte comando para listar as vistas materializadas no conjunto de dados mydataset
em myotherproject
.
bq ls --format=pretty myotherproject:mydataset
API
Para listar as vistas materializadas através da API, chame o método
tables.list
.
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Obtenha informações sobre vistas materializadas
Pode obter informações sobre uma vista materializada através de SQL, da ferramenta de linha de comandos bq ou da API BigQuery.
Autorizações necessárias
Para consultar informações sobre uma vista materializada, precisa das seguintes autorizações de gestão de identidade e acesso (IAM):
bigquery.tables.get
bigquery.tables.list
bigquery.routines.get
bigquery.routines.list
Cada uma das seguintes funções de IAM predefinidas inclui as autorizações anteriores:
roles/bigquery.metadataViewer
roles/bigquery.dataViewer
roles/bigquery.admin
Para mais informações sobre as autorizações do BigQuery, consulte o artigo Controlo de acesso com a IAM.
Para obter informações sobre uma vista materializada, incluindo quaisquer réplicas de vistas materializadas dependentes:
SQL
Para obter informações sobre as vistas materializadas, consulte a vista INFORMATION_SCHEMA.TABLES
:
Na Trusted Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
SELECT * FROM PROJECT_ID.DATASET_ID.INFORMATION_SCHEMA.TABLES WHERE table_type = 'MATERIALIZED VIEW';
Substitua o seguinte:
PROJECT_ID
: o nome do projeto que contém as vistas materializadasDATASET_ID
: o nome do conjunto de dados que contém as visualizações materializadas
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
bq
Use o comando
bq show
:
bq show --project=project_id --format=prettyjson dataset.materialized_view
Substitua o seguinte:
- project_id: o ID do projeto. Só precisa de incluir esta flag para receber informações sobre uma vista materializada num projeto diferente do projeto predefinido.
- dataset: o nome do conjunto de dados que contém a vista materializada.
- materialized_view: o nome da vista materializada sobre a qual quer obter informações.
Exemplo:
Introduza o seguinte comando para mostrar informações sobre a vista materializada my_mv
no conjunto de dados report_views
no projeto myproject
.
bq show --project=myproject --format=prettyjson report_views.my_mv
API
Para obter informações sobre a vista materializada através da API, chame o método
tables.get
.
Elimine vistas materializadas
Pode eliminar uma vista materializada através da Trusted Cloud consola, da ferramenta de linha de comandos bq ou da API.
A eliminação de uma vista materializada também elimina todas as autorizações associadas a esta vista materializada. Quando recria uma visualização materializada eliminada, também tem de reconfigurar manualmente todas as autorizações de acesso associadas anteriormente.
Autorizações necessárias
Para eliminar vistas materializadas, precisa da autorização de IAM.bigquery.tables.delete
Cada uma das seguintes funções de IAM predefinidas inclui as autorizações de que precisa para eliminar uma vista materializada:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Para mais informações sobre a gestão de identidades e acessos (IAM) do BigQuery, consulte o artigo Funções e autorizações predefinidas.
SQL
Para eliminar uma vista materializada, use a declaração DDL DROP MATERIALIZED VIEW
:
Na Trusted Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
DROP MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW;
Substitua o seguinte:
PROJECT
: o nome do projeto que contém a vista materializadaDATASET
: o nome do conjunto de dados que contém a visualização materializadaMATERIALIZED_VIEW
: o nome da vista materializada que quer eliminar
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
bq
Use o comando bq rm
para eliminar a vista materializada.
API
Chame o método tables.delete
e especifique valores para os projectId
, datasetId
e tableId
parâmetros:
- Atribua o parâmetro
projectId
ao ID do seu projeto. - Atribua o parâmetro
datasetId
ao ID do conjunto de dados. - Atribua o parâmetro
tableId
ao ID da tabela da vista materializada que está a eliminar.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Atualize vistas materializadas
A atualização de uma vista materializada atualiza os dados em cache da vista para refletir o estado atual das respetivas tabelas base.
Quando consulta uma vista materializada, o BigQuery devolve resultados de dados da vista materializada em cache e dados obtidos da tabela base. Sempre que possível, o BigQuery lê apenas as alterações desde a última vez que a vista foi atualizada. Embora os dados transmitidos recentemente possam não ser incluídos durante uma atualização da vista materializada, as consultas leem sempre os dados transmitidos, independentemente de ser usada uma vista materializada.
A devolução de resultados da consulta diretamente da tabela base incorre num custo de computação mais elevado do que a devolução de resultados de dados da vista materializada em cache. A atualização regular dos dados em cache da vista materializada reduz a quantidade de dados devolvidos diretamente da tabela base, o que reduz o custo de computação.
Esta secção descreve como fazer o seguinte:
Atualização automática
Pode ativar ou desativar a atualização automática em qualquer altura. A tarefa de atualização automática é realizada pela conta de serviço bigquery-adminbot@s3ns-system.system.gserviceaccount.com
e aparece no histórico de tarefas do projeto de vista materializada.
Por predefinição, os dados em cache numa vista materializada são atualizados automaticamente a partir da tabela base no prazo de 5 a 30 minutos após uma alteração à tabela base, por exemplo, inserções ou eliminações de linhas.
Pode definir o limite de frequência de atualização para gerir a frequência das atualizações automáticas dos dados em cache e, assim, gerir os custos e o desempenho das consultas das vistas materializadas.
Ative e desative a atualização automática
Para desativar a atualização automática quando cria uma vista materializada,
defina enable_refresh
como false
.
CREATE MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW PARTITION BY RANGE_BUCKET(column_name, buckets) OPTIONS (enable_refresh = false) AS SELECT ...
Para uma vista materializada existente, pode modificar o valor enable_refresh
usando ALTER MATERIALIZED VIEW
.
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (enable_refresh = true);
Defina o limite de frequência
Pode configurar um limite de frequência para a execução da atualização automática. Por predefinição, as vistas materializadas são atualizadas com uma frequência máxima de 30 minutos.
O limite de frequência de atualização pode ser alterado em qualquer altura.
Para definir um limite de frequência de atualização quando cria uma vista materializada, defina refresh_interval_minutes
no DDL (ou refresh_interval_ms
na API e na ferramenta de linha de comandos bq) para o valor pretendido.
CREATE MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW OPTIONS (enable_refresh = true, refresh_interval_minutes = 60) AS SELECT ...
Da mesma forma, pode definir o limite de frequência quando modifica uma vista materializada. Este exemplo pressupõe que já ativou a atualização automática e que apenas quer alterar o limite de frequência:
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (refresh_interval_minutes = 60);
O limite de frequência de atualização mínimo é de 1 minuto. O limite de frequência de atualização máximo é de 7 dias.
Pode fazer uma atualização manual de uma vista materializada em qualquer altura, e a respetiva sincronização não está sujeita ao limite de frequência.
Dentro do possível
A atualização automática é realizada com base no melhor esforço. O BigQuery tenta iniciar uma atualização no prazo de 5 minutos após uma alteração na tabela base (se a atualização anterior tiver sido feita há mais de 30 minutos), mas não garante que a atualização seja iniciada nesse momento nem quando será concluída.
A atualização automática é tratada de forma semelhante a uma consulta com prioridade em lote. Se o projeto da vista materializada não tiver capacidade no momento, a atualização é atrasada. Se o projeto contiver muitas vistas cuja atualização se revelar dispendiosa, cada vista individual pode ter um atraso significativo relativamente às respetivas tabelas base.
Atualização manual
Pode atualizar manualmente uma vista materializada em qualquer altura.
Autorizações necessárias
Para atualizar manualmente as vistas materializadas, precisa das autorizações bigquery.tables.getData
,
bigquery.tables.update
e bigquery.tables.updateData
do IAM.
Cada uma das seguintes funções de IAM predefinidas inclui as autorizações de que precisa para atualizar manualmente uma vista materializada:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Para mais informações sobre a gestão de identidades e acessos (IAM) do BigQuery, consulte o artigo Funções e autorizações predefinidas.
Para atualizar os dados na vista materializada, chame o procedimento do sistema
BQ.REFRESH_MATERIALIZED_VIEW
. Quando este procedimento é chamado, o BigQuery identifica as alterações que ocorreram nas tabelas base e aplica essas alterações à vista materializada. A consulta a executar
BQ.REFRESH_MATERIALIZED_VIEW
termina quando a atualização estiver concluída.
CALL BQ.REFRESH_MATERIALIZED_VIEW('PROJECT.DATASET.MATERIALIZED_VIEW');
Monitorize vistas materializadas
Pode obter informações sobre vistas materializadas e tarefas de atualização de vistas materializadas através da API BigQuery. Para mais informações, consulte o artigo Monitorize vistas materializadas.