Como estimar custos de armazenamento e consulta

As consultas sob demanda são cobradas com base no número de bytes lidos. Para saber os preços atuais de consultas sob demanda, consulte esta página.

Para estimar custos antes de executar uma consulta, use:

  • o validador de consultas no Console do Cloud ou a IU da Web clássica do BigQuery;
  • Sinalização --dry_run na ferramenta de linha de comando bq
  • o parâmetro dryRun ao enviar um job de consulta usando a API
  • a calculadora de preços do Google Cloud;
  • bibliotecas de cliente.

Como estimar custos de consultas

Observe o seguinte ao estimar os custos de consulta:

Console

Quando você insere uma consulta no Console do Cloud, o validador de consulta verifica a sintaxe dela e fornece uma estimativa do número de bytes lidos. Essa estimativa pode ser usada para calcular o custo da consulta na calculadora de preços.

Validador de consulta

IU clássica

Quando você insere uma consulta no Console do Cloud ou na IU da Web clássica do BigQuery, o validador de consulta verifica a sintaxe dela e fornece uma estimativa do número de bytes lidos. Essa estimativa pode ser usada para calcular o custo da consulta na calculadora de preços.

Validador de consulta

bq

Ao executar uma consulta na ferramenta de linha de comando bq, use a sinalização --dry_run para estimar o número de bytes lidos. Essa estimativa pode ser usada para calcular o custo da consulta na calculadora de preços.

Uma consulta da ferramenta bq que usa a sinalização --dry_run tem esta aparência:

bq query \
--use_legacy_sql=false \
--dry_run \
'SELECT
  column1,
  column2,
  column3
FROM
  `project_id.dataset.table`
LIMIT
  1000'

Quando você executa o comando, a resposta contém os bytes estimados lidos: 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.

go

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

import (
	"context"
	"fmt"
	"io"

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

// queryDryRun demonstrates issuing a dry run query to validate query structure and
// provide an estimate of the bytes scanned.
func queryDryRun(w io.Writer, projectID string) error {
	// projectID := "my-project-id"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	q := client.Query(`
	SELECT
		name,
		COUNT(*) as name_count
	FROM ` + "`bigquery-public-data.usa_names.usa_1910_2013`" + `
	WHERE state = 'WA'
	GROUP BY name`)
	q.DryRun = true
	// Location must match that of the dataset(s) referenced in the query.
	q.Location = "US"

	job, err := q.Run(ctx)
	if err != nil {
		return err
	}
	// Dry run is not asynchronous, so get the latest status and statistics.
	status := job.LastStatus()
	if err != nil {
		return err
	}
	fmt.Fprintf(w, "This query will process %d bytes\n", status.Statistics.TotalBytesProcessed)
	return nil
}

Java

Antes de testar essa amostra, siga as instruções de configuração para 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 Java.

Ver no GitHub (em inglês) Feedback
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Job;
import com.google.cloud.bigquery.JobInfo;
import com.google.cloud.bigquery.JobStatistics;
import com.google.cloud.bigquery.QueryJobConfiguration;

// Sample to run dry query on the table
public class QueryDryRun {

  public static void runQueryDryRun() {
    String query =
        "SELECT name, COUNT(*) as name_count "
            + "FROM `bigquery-public-data.usa_names.usa_1910_2013` "
            + "WHERE state = 'WA' "
            + "GROUP BY name";
    queryDryRun(query);
  }

  public static void queryDryRun(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();

      QueryJobConfiguration queryConfig =
          QueryJobConfiguration.newBuilder(query).setDryRun(true).setUseQueryCache(false).build();

      Job job = bigquery.create(JobInfo.of(queryConfig));
      JobStatistics.QueryStatistics statistics = job.getStatistics();

      System.out.println(
          "Query dry run performed successfully." + statistics.getTotalBytesProcessed());
    } catch (BigQueryException e) {
      System.out.println("Query not performed \n" + e.toString());
    }
  }
}

Node.js

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

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

async function queryDryRun() {
  // Runs a dry query of the U.S. given names dataset for the state of Texas.

  const query = `SELECT name
    FROM \`bigquery-public-data.usa_names.usa_1910_2013\`
    WHERE state = 'TX'
    LIMIT 100`;

  // For all options, see https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query
  const options = {
    query: query,
    // Location must match that of the dataset(s) referenced in the query.
    location: 'US',
    dryRun: true,
  };

  // Run the query as a job
  const [job] = await bigquery.createQueryJob(options);

  // Print the status and statistics
  console.log('Status:');
  console.log(job.metadata.status);
  console.log('\nJob Statistics:');
  console.log(job.metadata.statistics);
}

Python

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

Para executar uma simulação usando a biblioteca de cliente em Python, configure 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).
from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

job_config = bigquery.QueryJobConfig(dry_run=True, use_query_cache=False)

# Start the query, passing in the extra configuration.
query_job = client.query(
    (
        "SELECT name, COUNT(*) as name_count "
        "FROM `bigquery-public-data.usa_names.usa_1910_2013` "
        "WHERE state = 'WA' "
        "GROUP BY name"
    ),
    job_config=job_config,
)  # Make an API request.

# A dry run query completes immediately.
print("This query will process {} bytes.".format(query_job.total_bytes_processed))

Como estimar custos de consulta usando a calculadora de preços do Google Cloud

Para estimar custos de consulta sob demanda na Calculadora de preços do Google Cloud, digite o número de bytes processados pela consulta como B, KB, MB, GB, TB ou PB. Se sua consulta processar menos de 1 TB, a estimativa será de US$ 0, porque o BigQuery dá 1 TB de processamento de consultas sob demanda gratuito por mês.

Calculadora de preços

Para estimar o custo de uma consulta usando a calculadora de preços, siga estas etapas:

  1. Abra a Calculadora de preços do Google Cloud.
  2. Clique em BigQuery.
  3. Clique na guia Sob demanda.
  4. Digite o Nome da tabela. Por exemplo, airports.
  5. Em Preço de armazenamento, insira 0 no campo Armazenamento.
  6. Para Preços de consulta, insira os bytes estimados lidos da sua simulação ou do validador de consulta. Calculadora
  7. Clique em Adicionar à estimativa.
  8. A estimativa aparece à direita. É possível salvar ou enviar a estimativa por e-mail. Calculadora sob demanda

Nesse caso, o número de bytes lidos pela consulta está abaixo do 1 TB fornecido para processamento sob demanda pelo nível gratuito. Dessa forma, o custo estimado é de US$ 0.

Como incluir preços fixos na calculadora de preços

Se você tiver preços fixos aplicados à sua conta de faturamento, clique na aba Taxa fixa, escolha seu plano e adicione os custos de armazenamento à estimativa.

Calculadora de taxa fixa

Para mais informações, consulte Preços fixos.

Como estimar custos de armazenamento usando a calculadora de preços do Google Cloud

Para estimar os custos de armazenamento na Calculadora de preços do Google Cloud, insira o número de bytes armazenados como B, KB, MB, GB, TB ou PB. O BigQuery armazena 10 GB gratuitamente por mês.

Para estimar os custos de armazenamento usando a calculadora de preços, siga estas etapas:

  1. Abra a Calculadora de preços do Google Cloud.
  2. Clique em BigQuery.
  3. Clique na guia Sob demanda.
  4. Digite o Nome da tabela. Por exemplo, airports.
  5. Em Preço de armazenamento, insira 100 no campo Armazenamento. Deixe a medida como GB.
  6. Clique em Adicionar à estimativa.
  7. A estimativa aparece à direita. É possível salvar ou enviar a estimativa por e-mail. Calculadora de preços