Speicher- und Abfragekosten schätzen

On-Demand-Abfragen werden nach der Anzahl der gelesenen Byte berechnet. Informationen zu den aktuellen Preisen für On-Demand-Abfragen finden Sie auf der Seite "Preise".

Mithilfe einer der folgenden Möglichkeiten können Sie die Kosten einer Abfrage vorab schätzen:

  • Abfragevalidierung in der Cloud Console
  • Flag --dry_run im bq-Befehlszeilentool
  • Parameter dryRun beim Senden eines Abfragejobs über die API
  • Google Cloud-Preisrechner
  • Clientbibliotheken

Abfragekosten schätzen

So schätzen Sie Abfragekosten:

Console

Wenn Sie eine Abfrage in der Cloud Console eingeben, überprüft die Abfragevalidierung die Abfragesyntax und liefert die geschätzte Anzahl der gelesenen Byte. Anhand dieser Informationen lassen sich die Abfragekosten im Preisrechner ermitteln.

Abfragevalidierung

bq

Wenn Sie eine Abfrage mit dem bq-Befehlszeilentool ausführen, können Sie mit dem Flag --dry_run die Anzahl der gelesenen Byte schätzen. Anhand dieser Informationen lassen sich die Abfragekosten im Preisrechner ermitteln.

Eine bq-Tool-Abfrage mit dem Flag --dry_run sieht in etwa so aus:

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

Die Antwort für den ausgeführten Befehl enthält dann die geschätzten gelesenen Byte: Query successfully validated. Assuming the tables are not modified, running this query will process 10918 bytes of data.

API

Für einen Probelauf über die API übergeben Sie einen Abfragejob, bei dem dryRun auf true gesetzt wurde.

Go

Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Go API.

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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Node.js API.

// 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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Python API.

Für einen Probelauf mit der Python-Clientbibliothek legen Sie das Attribut QueryJobConfig.dry_run auf True fest. Client.query() gibt immer einen abgeschlossenen QueryJob zurück, wenn die Abfrage für einen Probelauf konfiguriert ist.
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))

Abfragekosten mit dem Google Cloud-Preisrechner schätzen

Geben Sie zum Schätzen der Kosten für On-Demand-Abfragen im Google Cloud-Preisrechner die Anzahl der von der Abfrage verarbeiteten Byte in B, KB, MB, GB, TB oder TB ein. Wenn durch die Abfrage weniger als 1 TB verarbeitet wird, ergibt die Schätzung 0, da BigQuery pro Monat 1 TB an On-Demand-Abfrageverarbeitung gratis zur Verfügung stellt.

Preisrechner

So schätzen Sie die Kosten einer Abfrage mit dem Preisrechner:

  1. Öffnen Sie den Google Cloud-Preisrechner,
  2. Klicken Sie auf "BigQuery".
  3. Klicken Sie auf den Tab On-Demand.
  4. Geben Sie bei Tabellenname den Namen der Tabelle ein. Beispiel: airports.
  5. Geben Sie unter Speicherpreis im Feld Speicher den Wert 0 ein.
  6. Geben Sie bei Abfragepreis die geschätzten Byte ein, die beim Probelauf oder bei der Abfragevalidierung gelesen werden. Preisrechner
  7. Klicken Sie auf Der Schätzung hinzufügen.
  8. Die Schätzung wird auf der rechten Seite angezeigt. Sie können die Schätzung speichern oder per E-Mail senden. On-Demand-Rechner

In diesem Fall liegt die Anzahl der von der Abfrage gelesenen Byte unter der On-Demand-Verarbeitung von 1 TB, die als kostenloses Kontingent bereitgestellt wird. Infolgedessen betragen die geschätzten Kosten 0 $.

Pauschalpreise im Preisrechner berücksichtigen

Wenn für Ihr Rechnungskonto Pauschalpreise gelten, können Sie auf den Tab Pauschalpreis klicken, Ihren Tarif auswählen und der Schätzung die Speicherkosten hinzufügen.

Pauschalpreisrechner

Weitere Informationen finden Sie unter "Pauschalpreise".

Speicherkosten mit dem Google Cloud-Preisrechner schätzen

Zum Schätzen der Speicherkosten im Google Cloud-Preisrechner, geben Sie den Umfang der gespeicherten Byte in B, KB, MB, GB, TB oder PB ein. In BigQuery stehen Ihnen monatlich 10 GB Speicherplatz kostenlos zur Verfügung.

So schätzen Sie die Speicherkosten mit dem Preisrechner:

  1. Öffnen Sie den Google Cloud-Preisrechner,
  2. Klicken Sie auf "BigQuery".
  3. Klicken Sie auf den Tab On-Demand.
  4. Geben Sie bei Tabellenname den Namen der Tabelle ein. Beispiel: airports.
  5. Geben Sie unter Speicherpreis im Feld Speicher den Wert 100 ein. Belassen Sie die Maßeinheit bei GB.
  6. Klicken Sie auf Der Schätzung hinzufügen.
  7. Die Schätzung wird auf der rechten Seite angezeigt. Sie können die Schätzung speichern oder per E-Mail senden. Preisrechner