Estimar e controlar custos
Nesta página, descrevemos como estimar custos e listamos as práticas recomendadas para controlar custos no BigQuery. O BigQuery oferece dois tipos de modelos de preços: sob demanda e com base em capacidade. Para informações sobre preços, consulte Preços do BigQuery.
Com o BigQuery, é possível estimar o custo de executar uma consulta, calcular o byte processado por várias consultas e receber uma estimativa de custo mensal com base no uso projetado. Para controlar os custos, você também precisa seguir as práticas recomendadas para otimizar o cálculo da consulta e o armazenamento do BigQuery. Para ver práticas recomendadas específicas de custo, confira Controlar custos de consulta.
Para monitorar os custos de consulta e o uso do BigQuery, analise os registros de auditoria do BigQuery.
Estimar custos de consulta
O BigQuery oferece vários métodos para estimar custos:
- Use a opção de simulação de consulta para estimar os custos antes de executar uma consulta usando o modelo de preços sob demanda.
- Calcule o número de bytes processados por vários tipos de consulta.
- Veja o custo mensal com base no uso projetado usando a calculadora de preços do Google Cloud.
Cálculo do tamanho da consulta sob demanda
Para calcular o número de bytes processados pelos vários tipos de consulta usando o modelo de faturamento sob demanda, consulte as seguintes seções:
Consultar formatos em colunas no Cloud Storage
Se os dados externos forem armazenados no ORC ou no Parquet, o número de bytes cobrados será limitado às colunas que são lidas pelo BigQuery. Como os tipos de dados de uma fonte de dados externa são convertidos em tipos de dados do BigQuery pela consulta, o número de bytes lidos é calculado com base no tamanho dos tipos de dados do BigQuery. Para informações sobre conversões de tipos de dados, consulte as seguintes páginas:
Use a calculadora de preços do Google Cloud
A calculadora de preços do Google Cloud pode ajudar a criar uma estimativa de custo mensal geral para o BigQuery com base na projeção de uso.
Sob demanda
Para estimar os custos na Calculadora de preços do Google Cloud ao usar o modelo de preços sob demanda, siga estas etapas:
- Abra a Calculadora de preços do Google Cloud.
- Clique em BigQuery.
- Clique na guia Sob demanda.
- Em Preço de armazenamento, insira o tamanho estimado da tabela nos campos de armazenamento. Você só precisa estimar o armazenamento físico ou o armazenamento lógico, dependendo do modelo de faturamento do armazenamento do conjunto de dados.
- Para Preços de consulta, insira os bytes estimados lidos da sua simulação ou do validador de consulta.
- Clique em Adicionar à estimativa.
- A estimativa aparece à direita. É possível salvar ou enviar a estimativa por e-mail.
Para saber mais informações, consulte Preços sob demanda.
Edições
Para estimar os custos na calculadora de preços do Google Cloud ao usar o modelo de preços baseado em capacidade com as edições do BigQuery, siga estas etapas:
- Abra a Calculadora de preços do Google Cloud.
- Clique em BigQuery.
- Clique na guia Edições.
- Escolha o local onde os slots são usados.
- Escolha sua Edição.
- Escolha as opções Slots máximos, Slots de referência, Compromisso opcionais e Uso estimado do escalonamento automático.
- Escolha o local onde os dados são armazenados.
- Insira suas estimativas de uso para Armazenamento ativo, Armazenamento de longo prazo, Inserções por streaming e Leituras de streaming. Você só precisa estimar o armazenamento físico ou o lógico, dependendo do modelo de faturamento do armazenamento do conjunto de dados.
- Clique em Adicionar à estimativa.
Para mais informações, consulte os preços baseados em capacidade.
Controlar os custos de consulta
Para otimizar os custos de consulta, verifique se você tem armazenamento otimizado e computação de consultas. Para ver outros métodos de controle do custo da consulta, consulte as seguintes seções:
Verifique o custo da consulta antes de executá-la
Prática recomendada: antes de executar consultas, visualize-as para tentar estimar os custos.
As consultas são cobradas de acordo com o número de bytes lidos. Para estimar custos antes de executar uma consulta:
- Use o validador de consultas no console do Google Cloud.
- Use a calculadora de preços do Google Cloud.
- Execute uma simulação para consultas.
Usar o validador de consultas
Quando você insere uma consulta no console do Google Cloud, o validador verifica a sintaxe da consulta e fornece uma estimativa do número de bytes lidos. Esta estimativa pode ser usada para calcular o custo da consulta na calculadora de preços.
Se a consulta não for válida, o validador de consultas exibirá uma mensagem de erro. Por exemplo:
Not found: Table myProject:myDataset.myTable was not found in location US
Se a consulta for válida, o validador de consulta fornecerá uma estimativa do número de bytes necessários para processar a consulta. Por exemplo:
This query will process 623.1 KiB when run.
Executar uma simulação
Para executar uma simulação, faça o seguinte:
Console
Acesse a página do BigQuery.
Digite a consulta no Editor de consultas.
Se a consulta for válida, uma marca de seleção será exibida junto com a quantidade de dados que serão processados pela consulta. Se a consulta for inválida, um ponto de exclamação será exibido com uma mensagem de erro.
bq
Insira uma consulta como a seguinte usando a sinalização --dry_run
.
bq query \ --use_legacy_sql=false \ --dry_run \ 'SELECT COUNTRY, AIRPORT, IATA FROM `project_id`.dataset.airports LIMIT 1000'
Para uma consulta válida, o comando produz a seguinte resposta:
Query successfully validated. Assuming the tables are not modified, running this query will process 10918 bytes of data.
API
Para executar uma simulação usando a API, envie um job de consulta com
dryRun
definido como true
no
tipo
JobConfiguration.
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.
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.
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.
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.
Python
Defina a propriedade QueryJobConfig.dry_run como True
.
Se uma configuração de consulta de simulação for fornecida,
Client.query()
sempre retornará um
QueryJob
concluído (links em inglês).
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.
Evitar executar consultas para explorar dados de tabelas
Prática recomendada: não faça consultas para explorar ou visualizar dados da tabela.
Se você estiver fazendo testes ou explorando dados, pode usar a opção de visualização da tabela para visualizar dados gratuitamente sem afetar suas cotas.
O BigQuery é compatível com as opções de visualização de dados a seguir:
- Na página de detalhes da tabela no console do Google Cloud, clique na guia Visualização para criar uma amostra dos dados.
- Na ferramenta de linha de comando bq, use o comando
bq head
e especifique o número de linhas que quer visualizar. - Na API, use
tabledata.list
para recuperar os dados da tabela de um conjunto de linhas especificado. - Evite usar
LIMIT
em tabelas que não estão em cluster. Para tabelas que não estão em cluster, uma cláusulaLIMIT
não reduzirá os custos de computação.
Restringir o número de bytes faturados
Prática recomendada: use a configuração máxima de bytes cobrados para limitar os custos de consulta.
Você pode limitar o número de bytes cobrados para uma consulta usando a configuração máxima de bytes cobrados. Quando você define o máximo de bytes cobrados, o número de bytes lidos pela consulta é estimado antes da execução da consulta. Se o número de bytes estimados estiver além do limite, a consulta falhará sem gerar cobranças.
Para tabelas em cluster, a estimativa do número de bytes cobrados para uma consulta é um limite superior e pode ser maior que o número real de bytes cobrados depois de executar a consulta. Em alguns casos, se você definir o máximo de bytes cobrados, uma consulta em uma tabela em cluster poderá falhar, mesmo que os bytes reais faturados não excedam a configuração máxima de bytes cobrados.
Se uma consulta falhar devido à configuração máxima de bytes faturados, um erro semelhante a este será retornado:
Error: Query exceeded limit for bytes billed: 1000000. 10485760 or higher
required.
Para definir o máximo de bytes cobrados:
Console
- No Editor de consultas, clique em Mais > Configurações de consulta > Opções avançadas.
- No campo Máximo de bytes faturados, insira um número inteiro.
- Clique em Salvar.
bq
Use o comando bq query
com a sinalização --maximum_bytes_billed
.
bq query --maximum_bytes_billed=1000000 \ --use_legacy_sql=false \ 'SELECT word FROM `bigquery-public-data`.samples.shakespeare'
API
Defina a propriedade maximumBytesBilled
em JobConfigurationQuery
ou QueryRequest
.
Evite usar LIMIT
em tabelas não em cluster
Prática recomendada: para tabelas não em cluster, não use uma cláusula LIMIT
como
método de controle de custos.
Para tabelas não em cluster, aplicar uma cláusula LIMIT
a uma consulta não afeta
a quantidade de dados lidos. Você é cobrado pela leitura de todos os bytes em
toda a tabela conforme indicado pela consulta, mesmo que ela retorne apenas um
subconjunto. Com uma tabela em cluster, uma cláusula LIMIT
pode reduzir o número de bytes verificados, porque a verificação é interrompida quando blocos suficientes são verificados para conseguir o resultado. Você receberá cobranças apenas pelos bytes verificados.
Ver os custos usando um painel e consultar os registros de auditoria
Prática recomendada: crie um painel para visualizar seus dados de cobrança e faça ajustes no uso do BigQuery. Você também pode transmitir seus registros de auditoria ao BigQuery para analisar os padrões de uso.
É possível exportar seus dados de faturamento para o BigQuery e visualizá-los em uma ferramenta como o Looker Studio. Para ver um tutorial sobre como criar um painel de faturamento, consulte Visualizar o faturamento do Google Cloud usando o BigQuery e o Looker Studio.
É possível também fazer streaming dos registros de auditoria para o BigQuery e analisá-los para verificar os padrões de uso, como custos de consulta por usuário.
Materialize os resultados da consulta em etapas
Prática recomendada: se possível, materialize os resultados da consulta em etapas.
Se você criar uma consulta grande e de vários estágios, cada vez que você a executar, o BigQuery lerá todos os dados exigidos por ela. A cobrança será realizada com base em todos os dados lidos sempre que a consulta for executada.
Em vez disso, divida sua consulta em etapas de modo que cada uma materialize os resultados da consulta, gravando-os em uma tabela de destino. Consultar a tabela de destino menor reduz a quantidade de dados lidos e reduz os custos. O custo de armazenamento de resultados materializados é muito inferior ao custo do processamento de grandes quantidades de dados.
Usar a expiração da tabela para tabelas de destino
Prática recomendada: se você estiver gravando grandes resultados de consulta em uma tabela de destino, use o prazo de validade padrão da tabela para remover os dados quando não forem mais necessários.
Manter grandes conjuntos de resultados armazenados no BigQuery gera um custo. Se você não precisa de acesso permanente aos resultados, use a expiração padrão da tabela para excluir os dados automaticamente para você.
Para mais informações, consulte preços de armazenamento.
A seguir
- Saiba mais sobre o preço do BigQuery.
- Saiba como otimizar a consulta.
- Saiba como otimizar o armazenamento.
Para saber mais sobre faturamento, alertas e visualização de dados, consulte os seguintes tópicos: