Interaktive und Batch-Abfragejobs ausführen

In diesem Dokument wird beschrieben, wie Sie interaktive (On-Demand) und Batchabfragejobs ausführen.

Erforderliche Berechtigungen

Jobs sind Aktionen, die BigQuery für Sie ausführt, beispielsweise Daten laden, Daten exportieren, Daten abfragen oder Daten kopieren.

Wenn Sie die Console, die klassische BigQuery-Web-UI oder die Befehlszeile zum Laden, Exportieren, Abfragen oder Kopieren von Daten verwenden, wird eine Jobressource automatisch erstellt, geplant und ausgeführt. Lade-, Export-, Abfrage- oder Kopierjobs können auch programmatisch erstellt werden. Wenn Sie einen Job programmatisch erstellen, wird er von BigQuery geplant und ausgeführt.

Da das Ausführen von Jobs sehr lange dauern kann, werden sie asynchron ausgeführt. Der Ausführungsstatus kann abgefragt werden. Kürzere Aktionen wie das Auflisten von Ressourcen oder das Abrufen von Metadaten werden nicht über eine Jobressource verwaltet.

Das Ausführen eines Abfragejobs erfordert bigquery.jobs.create-Berechtigungen. Damit der Abfragebefehl erfolgreich abgeschlossen werden kann, muss der Nutzer oder die Gruppe auch Zugriff auf das Dataset mit den Tabellen haben, auf die in der Abfrage verwiesen wird.

Sie können Berechtigungen des Typs bigquery.jobs.create auf Projektebene festlegen, indem Sie eine der folgenden vordefinierten IAM-Rollen zuweisen:

  • bigquery.user
  • bigquery.jobUser
  • bigquery.admin

Wenn Sie Nutzern oder Gruppen auf Projektebene die Rolle bigquery.user zuweisen, erhalten diese standardmäßig keinen Zugriff auf die Datasets, Tabellen oder Ansichten des Projekts. Nutzer mit der Rolle bigquery.user können eigene Datasets erstellen und Abfragejobs mit Datasets ausführen, auf die sie Zugriff haben. Daher ist es wichtig, Nutzern oder Gruppen mit der Rolle bigquery.user oder bigquery.jobUser auch die Zugriffssteuerungen für jedes benötigte, nicht von ihnen selbst erstellte Dataset zu erteilen.

Beim Zuweisen von Zugriff auf ein Dataset können Sie zwischen drei Optionen wählen:

Der Mindestzugriff, den ein Nutzer zum Ausführen einer Abfrage benötigt, lautet "Darf ansehen".

Weitere Informationen zu IAM-Rollen in BigQuery finden Sie unter Zugriffssteuerung.

Interaktive Abfragen ausführen

BigQuery führt standardmäßig interaktive (On-Demand) Abfragejobs aus. Dies bedeutet, dass die Abfrage so bald wie möglich ausgeführt wird. Interaktive Abfragen werden hinsichtlich der Grenze gleichzeitiger Abfragen und des Tageslimits mit angerechnet.

Die Abfrageergebnisse werden immer entweder in einer temporären oder permanenten Tabelle gespeichert. Sie können auswählen, ob Sie Daten in einer vorhandenen Tabelle anhängen oder überschreiben möchten oder ob Sie eine neue Tabelle erstellen, wenn keine mit demselben Namen vorhanden ist.

So führen Sie eine interaktive Abfrage aus, die in eine temporäre Tabelle schreibt:

Konsole

  1. Rufen Sie in der GCP Console die BigQuery-Webbenutzeroberfläche auf.
    BigQuery-Web-UI aufrufen

  2. Klicken Sie auf Neue Abfrage erstellen.

    Neue Abfrage erstellen

  3. Geben Sie im Textbereich des Abfrageeditors eine gültige BigQuery-SQL-Abfrage ein.

  4. Optional: Klicken Sie auf Mehr und dann auf Abfrageeinstellungen, um den Ort der Datenverarbeitung zu ändern, Klicken Sie bei Processing location (Verarbeitungsstandort) auf Auto-select (Automatische Auswahl) und wählen Sie den Standort Ihrer Daten aus. Klicken Sie abschließend auf Speichern, um die Abfrageeinstellungen zu aktualisieren.

  5. Klicken Sie auf Ausführen.

Dies erstellt einen Abfragejob, der die Ausgabe in eine temporäre Tabelle schreibt.

Klassische UI

  1. Öffnen Sie die BigQuery-Web-UI.
    Zur BigQuery-Web-UI

  2. Klicken Sie auf Compose query (Abfrage verfassen).

  3. Geben Sie eine gültige BigQuery-SQL-Abfrage in den Textbereich New Query (Neue Abfrage) ein.

  4. Klicken Sie auf Show Options (Optionen anzeigen).

  5. Optional: Klicken Sie für Processing Location (Verarbeitungsstandort) auf Unspecified (Nicht angegeben) und wählen Sie den Standort Ihrer Daten aus.

  6. Klicken Sie auf Run query (Abfrage ausführen).

Dies erstellt einen Abfragejob, der die Ausgabe in eine temporäre Tabelle schreibt.

Befehlszeile

Geben Sie den Befehl bq query ein und fügen Sie den Abfragetext ein. Geben Sie das Flag --location an und legen Sie als Wert Ihren Standort fest.

Sie können die folgenden optionalen Flags angeben. Die Liste enthält einige der am häufigsten verwendeten Flags. Eine vollständige Liste der Flags für den Befehl query finden Sie in der Referenz zum bq-Befehlszeilentool unter bq query.

Geben Sie die folgenden Flags an:

  • Das Flag --destination_table zur Erstellung einer permanenten Tabelle auf Basis der Abfrageergebnisse. Wenn Sie die Abfrageergebnisse in eine Tabelle schreiben möchten, die sich nicht in Ihrem Standardprojekt befindet, fügen Sie dem Dataset-Namen die Projekt-ID im folgenden Format hinzu: [PROJECT_ID]:[DATASET]. Wenn --destination_table nicht angegeben ist, wird ein Abfragejob generiert, der die Ausgabe in eine temporäre (Cache-)Tabelle schreibt.
  • Das Flag --append_table, um die Abfrageergebnisse an eine Zieltabelle anzufügen.
  • Das Flag --destination_kms_key, um einen Cloud KMS-Schlüssel zum Verschlüsseln der Daten der Zieltabelle zu verwenden.
  • --use_legacy_sql=false-Flag, um Standard-SQL-Syntax zu verwenden. Mit der Datei .bigqueryrc können Sie eine .bigqueryrc für das Befehlszeilentool einrichten.
  • --label-Flag, um dem Abfragejob ein Label in der Form [KEY]:[VALUE] hinzuzufügen. Wiederholen Sie dieses Flag, um mehrere Labels anzugeben.
  • Das Flag --max_rows oder -n, um die Anzahl der in den Abfrageergebnissen zurückzugebenden Zeilen anzugeben.
  • Das Flag --maximum_bytes_billed, um die für die Abfrage berechneten Byte zu begrenzen. Abfragen, die das Limit überschreiten, schlagen fehl (ohne dass eine Gebühr anfällt). Wenn nicht angegeben, wird die Menge der berechneten Byte auf den Standardwert des Projekts eingestellt.
  • Das Flag --udf_resource zum Laden und Auswerten einer Codedatei, die als benutzerdefinierte Funktionsressource verwendet werden soll. Sie können einen Cloud Storage-URI oder den Pfad zu einer lokalen Codedatei angeben. Wiederholen Sie dieses Flag, um mehrere Dateien anzugeben.

Geben Sie den folgenden Befehl ein, um mit der Standard-SQL-Syntax eine interaktive Abfrage auszuführen:

bq --location=[LOCATION] query --use_legacy_sql=false '[QUERY]'

Hierbei gilt:

  • [LOCATION] ist der Name des Standorts, an dem die Abfrage verarbeitet wird. Das Flag --location ist optional. Wenn Sie BigQuery beispielsweise in der Region Tokio verwenden, legen Sie für das Flag den Wert asia-northeast1 fest. Mit der Datei ".bigqueryrc" können Sie einen Standardwert für den Standort festlegen.
  • [QUERY] ist eine Abfrage in der Standard-SQL-Syntax.

Beispiele:

Geben Sie den folgenden Befehl ein, um interaktive Abfrageergebnisse in eine Tabelle mit dem Namen mytable in mydataset zu schreiben. Das Dataset befindet sich in Ihrem Standardprojekt. Mit dieser Abfrage werden Daten aus dem öffentlichen Dataset USA Name Data abgerufen.

bq --location=US query --destination_table mydataset.mytable --use_legacy_sql=false 'SELECT name,number FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE gender = "M" ORDER BY number DESC'

Geben Sie den folgenden Befehl ein, um interaktive Abfrageergebnisse in eine Tabelle mit dem Namen mytable in mydataset zu schreiben. Das Dataset befindet sich in myotherproject und nicht in Ihrem Standardprojekt. Die Abfrage ruft Daten aus einer nicht partitionierten Tabelle ab, dem öffentlichen Dataset USA Name Data.

bq --location=US query --destination_table myotherproject:mydataset.mytable --use_legacy_sql=false 'SELECT name,number FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE gender = "M" ORDER BY number DESC'

Weitere Informationen finden Sie unter Befehlszeilentool bq verwenden.

API

Sie können die API zur Ausführung einer Abfrage verwenden. Dazu fügen Sie einen neuen Job ein und füllen das Attribut jobs#configuration.query mit Daten. Geben Sie im Attribut location im Abschnitt jobReference der Jobressource auch Ihren Standort an.

Rufen Sie getQueryResults auf, um die Ergebnisse abzufragen. Führen Sie die Abfrage so lange aus, bis jobComplete = true ist. In der errors-Liste werden Fehler und Warnungen angezeigt.

C#

Lesen Sie die Anleitung zur Einrichtung von C# in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery C# API.

using Google.Cloud.BigQuery.V2;
using System;

public class BigQueryQuery
{
    public void Query(
        string projectId = "your-project-id"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        string query = @"
            SELECT name FROM `bigquery-public-data.usa_names.usa_1910_2013`
            WHERE state = 'TX'
            LIMIT 100";
        BigQueryJob job = client.CreateQueryJob(
            sql: query,
            parameters: null,
            options: new QueryOptions { UseQueryCache = false });
        // Wait for the job to complete.
        job.PollUntilCompleted();
        // Display the results
        foreach (BigQueryRow row in client.GetQueryResults(job.Reference))
        {
            Console.WriteLine($"{row["name"]}");
        }
    }
}

Go

Folgen Sie der Anleitung zur Einrichtung von Go in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Go API.

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

q := client.Query(
	"SELECT name FROM `bigquery-public-data.usa_names.usa_1910_2013` " +
		"WHERE state = \"TX\" " +
		"LIMIT 100")
// 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
}
status, err := job.Wait(ctx)
if err != nil {
	return err
}
if err := status.Err(); err != nil {
	return err
}
it, err := job.Read(ctx)
for {
	var row []bigquery.Value
	err := it.Next(&row)
	if err == iterator.Done {
		break
	}
	if err != nil {
		return err
	}
	fmt.Println(row)
}

Java

Folgen Sie der Anleitung zur Einrichtung von Java in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

// BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
String query = "SELECT corpus FROM `bigquery-public-data.samples.shakespeare` GROUP BY corpus;";
QueryJobConfiguration queryConfig = QueryJobConfiguration.newBuilder(query).build();

// Print the results.
for (FieldValueList row : bigquery.query(queryConfig).iterateAll()) {
  for (FieldValue val : row) {
    System.out.printf("%s,", val.toString());
  }
  System.out.printf("\n");
}

Node.js

Lesen Sie die Anleitung zur Einrichtung von Node.js in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.

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

async function query() {
  // Queries the Shakespeare dataset with the cache disabled.

  // Create a client
  const bigqueryClient = new BigQuery();

  const query = `SELECT name
    FROM \`bigquery-public-data.usa_names.usa_1910_2013\`
    WHERE state = 'TX'
    LIMIT 100`;
  const options = {
    query: query,
    // Location must match that of the dataset(s) referenced in the query.
    location: 'US',
  };

  // Run the query as a job
  const [job] = await bigqueryClient.createQueryJob(options);
  console.log(`Job ${job.id} started.`);

  // Wait for the query to finish
  const [rows] = await job.getQueryResults();

  // Print the results
  console.log('Rows:');
  rows.forEach(row => console.log(row));
}
query();

PHP

Lesen Sie die Anleitung zur Einrichtung von PHP in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery PHP API.

use Google\Cloud\BigQuery\BigQueryClient;
use Google\Cloud\Core\ExponentialBackoff;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $query = 'SELECT id, view_count FROM `bigquery-public-data.stackoverflow.posts_questions`';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$jobConfig = $bigQuery->query($query);
$job = $bigQuery->startQuery($jobConfig);

$backoff = new ExponentialBackoff(10);
$backoff->execute(function () use ($job) {
    print('Waiting for job to complete' . PHP_EOL);
    $job->reload();
    if (!$job->isComplete()) {
        throw new Exception('Job has not yet completed', 500);
    }
});
$queryResults = $job->queryResults();

$i = 0;
foreach ($queryResults as $row) {
    printf('--- Row %s ---' . PHP_EOL, ++$i);
    foreach ($row as $column => $value) {
        printf('%s: %s' . PHP_EOL, $column, json_encode($value));
    }
}
printf('Found %s row(s)' . PHP_EOL, $i);

Python

Folgen Sie der Anleitung zur Einrichtung von Python in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Python API.

# from google.cloud import bigquery
# client = bigquery.Client()

query = (
    "SELECT name FROM `bigquery-public-data.usa_names.usa_1910_2013` "
    'WHERE state = "TX" '
    "LIMIT 100"
)
query_job = client.query(
    query,
    # Location must match that of the dataset(s) referenced in the query.
    location="US",
)  # API request - starts the query

for row in query_job:  # API request - fetches results
    # Row values can be accessed by field name or index
    assert row[0] == row.name == row["name"]
    print(row)

Ruby

Lesen Sie die Anleitung zur Einrichtung von Ruby in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Ruby API.

require "google/cloud/bigquery"

def query
  bigquery = Google::Cloud::Bigquery.new
  sql = "SELECT name FROM `bigquery-public-data.usa_names.usa_1910_2013` " +
        "WHERE state = 'TX' " +
        "LIMIT 100"

  # Location must match that of the dataset(s) referenced in the query.
  results = bigquery.query sql do |config|
    config.location = "US"
  end

  results.each do |row|
    puts row.inspect
  end
end

Batch-Abfragen ausführen

Außerdem sind in BigQuery Batch-Abfragen möglich. BigQuery stellt jede Batch-Abfrage in Ihrem Namen in die Warteschlange und startet sie, sobald im gemeinsamen Ressourcenpool von BigQuery Ressourcen frei sind, meist innerhalb von ein paar Minuten. Wenn BigQuery die Abfrage nicht innerhalb von 24 Stunden gestartet hat, wird die Jobpriorität in interaktiv geändert.

Batch-Abfragen werden hinsichtlich der Grenze gleichzeitiger Abfragen nicht berücksichtigt. Dadurch ist es unter Umständen einfacher, viele Abfragen auf einmal zu starten. Batch-Abfragen verwenden dieselben Ressourcen wie interaktive Abfragen (On-Demand). Bei Pauschalpreisen teilen sich interaktive und Batch-Abfragen die zugewiesenen Slots.

So führen Sie eine Batch-Abfrage aus:

Console

  1. Rufen Sie in der GCP Console die BigQuery-Webbenutzeroberfläche auf.
    Zur BigQuery-Web-UI

  2. Klicken Sie auf die Schaltfläche Neue Abfrage erstellen.

    Neue Abfrage erstellen

  3. Geben Sie im Textbereich des Abfrageeditors eine gültige BigQuery-SQL-Abfrage ein.

  4. Klicken Sie auf Mehr und dann auf Abfrageeinstellungen.

    Abfrageeinstellungen

  5. Wählen Sie die Option Batch im Abschnitt Jobpriorität aus.

    Batchausführung

  6. Optional: Klicken Sie für Processing location (Verarbeitungsstandort) auf Unspecified (Nicht angegeben) und wählen Sie den Standort Ihrer Daten aus.

  7. Klicken Sie auf Speichern, um die Abfrageeinstellungen zu aktualisieren.

  8. Klicken Sie auf Ausführen.

Klassische UI

  1. Öffnen Sie die BigQuery-Web-UI.
    Zur BigQuery-Web-UI

  2. Klicken Sie auf Abfrage erstellen.

  3. Geben Sie eine gültige BigQuery-SQL-Abfrage in den Textbereich Neue Abfrage ein.

  4. Klicken Sie auf Optionen anzeigen.

  5. Wählen Sie im Abschnitt Abfragepriorität die Option Batch aus.

  6. Optional: Klicken Sie für Processing Location (Verarbeitungsstandort) auf Unspecified (Nicht angegeben) und wählen Sie den Standort Ihrer Daten aus.

  7. Klicken Sie auf Abfrage ausführen.

Befehlszeile

Geben Sie den Befehl bq query ein und fügen Sie den Abfragetext ein. Verwenden Sie das Flag --batch, um eine Batch-Abfrage auszuführen. Geben Sie das Flag --location an und legen Sie als Wert Ihren Standort fest.

Sie können die folgenden optionalen Flags angeben. Die Liste enthält einige der am häufigsten verwendeten Flags. Eine vollständige Liste der Flags für den Befehl query finden Sie in der Referenz zum bq-Befehlszeilentool unter bq query.

Geben Sie die folgenden Flags an:

  • Das Flag --destination_table zur Erstellung einer permanenten Tabelle auf Basis der Abfrageergebnisse. Wenn Sie die Abfrageergebnisse in eine Tabelle schreiben möchten, die sich nicht in Ihrem Standardprojekt befindet, fügen Sie dem Dataset-Namen die Projekt-ID im folgenden Format hinzu: [PROJECT_ID]:[DATASET]. Wenn --destination_table nicht angegeben ist, wird ein Abfragejob generiert, der die Ausgabe in eine temporäre (Cache-)Tabelle schreibt.
  • Das Flag --append_table, um die Abfrageergebnisse an eine Zieltabelle anzufügen.
  • Das Flag --destination_kms_key, um einen Cloud KMS-Schlüssel zum Verschlüsseln der Daten der Zieltabelle zu verwenden.
  • --use_legacy_sql=false-Flag, um Standard-SQL-Syntax zu verwenden. Mit der Datei .bigqueryrc können Sie eine .bigqueryrc für das Befehlszeilentool einrichten.
  • --label-Flag, um dem Abfragejob ein Label in der Form [KEY]:[VALUE] hinzuzufügen. Wiederholen Sie dieses Flag, um mehrere Labels anzugeben.
  • Das Flag --max_rows oder -n, um die Anzahl der in den Abfrageergebnissen zurückzugebenden Zeilen anzugeben.
  • Das Flag --maximum_bytes_billed, um die für die Abfrage berechneten Byte zu begrenzen. Abfragen, die das Limit überschreiten, schlagen fehl (ohne dass eine Gebühr anfällt). Wenn nicht angegeben, wird die Menge der berechneten Byte auf den Standardwert des Projekts eingestellt.
  • Das Flag --udf_resource zum Laden und Auswerten einer Codedatei, die als benutzerdefinierte Funktionsressource verwendet werden soll. Sie können einen Cloud Storage-URI oder den Pfad zu einer lokalen Codedatei angeben. Wiederholen Sie dieses Flag, um mehrere Dateien anzugeben.

Geben Sie den folgenden Befehl ein, um mit der Standard-SQL-Syntax eine interaktive Abfrage auszuführen:

bq --location=[LOCATION] query --batch --use_legacy_sql=false '[QUERY]'

Hierbei gilt:

  • [LOCATION] ist der Name des Standorts, an dem die Abfrage verarbeitet wird. Das Flag --location ist optional. Wenn Sie BigQuery beispielsweise in der Region Tokio verwenden, legen Sie für das Flag den Wert asia-northeast1 fest. Mit der Datei ".bigqueryrc" können Sie einen Standardwert für den Standort festlegen.
  • [QUERY] ist eine Abfrage in der Standard-SQL-Syntax.

Beispiele:

Geben Sie den folgenden Befehl ein, um große Abfrageergebnisse in eine Tabelle mit dem Namen mytable in mydataset zu schreiben. Das Dataset befindet sich in Ihrem Standardprojekt. Mit dieser Abfrage werden Daten aus dem öffentlichen Dataset USA Name Data abgerufen.

bq --location=US query --batch --destination_table mydataset.mytable --use_legacy_sql=false 'SELECT name,number FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE gender = "M" ORDER BY number DESC'

Geben Sie den folgenden Befehl ein, um große Abfrageergebnisse in eine Tabelle mit dem Namen mytable in mydataset zu schreiben. Das Dataset befindet sich in myotherproject und nicht in Ihrem Standardprojekt. Die Abfrage ruft Daten aus einer nicht partitionierten Tabelle ab, dem öffentlichen Dataset USA Name Data.

bq --location=US query --batch --destination_table myotherproject:mydataset.mytable --use_legacy_sql=false 'SELECT name,number FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE gender = "M" ORDER BY number DESC'

Weitere Informationen finden Sie unter Befehlszeilentool bq verwenden.

API

Sie können die API zur Ausführung einer Abfrage verwenden. Dazu fügen Sie einen neuen Job ein und legen das Attribut jobs#configuration.query fest. Geben Sie im Attribut location im Abschnitt jobReference der Jobressource auch Ihren Standort an.

Wenn Sie die Attribute des Abfragejobs angeben, nehmen Sie das Attribut configuration.query.priority mit dem Wert BATCH auf.

Go

Folgen Sie der Anleitung zur Einrichtung von Go in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Go API.

	// 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")
	// Build an aggregate table.
	q := client.Query(`
		SELECT
  			corpus,
  			SUM(word_count) as total_words,
  			COUNT(1) as unique_words
		FROM ` + "`bigquery-public-data.samples.shakespeare`" + `
		GROUP BY corpus;`)
	q.Priority = bigquery.BatchPriority
	q.QueryConfig.Dst = client.Dataset(dstDatasetID).Table(dstTableID)

	// Start the job.
	job, err := q.Run(ctx)
	if err != nil {
		return err
	}
	// Job is started and will progress without interaction.
	// To simulate other work being done, sleep a few seconds.
	time.Sleep(5 * time.Second)
	status, err := job.Status(ctx)
	if err != nil {
		return err
	}

	state := "Unknown"
	switch status.State {
	case bigquery.Pending:
		state = "Pending"
	case bigquery.Running:
		state = "Running"
	case bigquery.Done:
		state = "Done"
	}
	// You can continue to monitor job progress until it reaches
	// the Done state by polling periodically.  In this example,
	// we print the latest status.
	fmt.Printf("Job %s in Location %s currently in state: %s\n", job.ID(), job.Location(), state)

Java

Folgen Sie der Anleitung zur Einrichtung von Java in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Zum Ausführen einer Batch-Abfrage legen Sie die Abfragepriorität auf QueryJobConfiguration.Priority.BATCH fest, wenn Sie eine QueryJobConfiguration erstellen.

// BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
String query = "SELECT corpus FROM `bigquery-public-data.samples.shakespeare` GROUP BY corpus;";
QueryJobConfiguration queryConfig =
    QueryJobConfiguration.newBuilder(query)
        // Run at batch priority, which won't count toward concurrent rate
        // limit.
        .setPriority(QueryJobConfiguration.Priority.BATCH)
        .build();

// Location must match that of the dataset(s) referenced in the query.
JobId jobId = JobId.newBuilder().setRandomJob().setLocation("US").build();
String jobIdString = jobId.getJob();

// API request - starts the query.
bigquery.create(JobInfo.newBuilder(queryConfig).setJobId(jobId).build());

// Check on the progress by getting the job's updated state. Once the state
// is `DONE`, the results are ready.
Job queryJob = bigquery.getJob(
    JobId.newBuilder().setJob(jobIdString).setLocation("US").build());
System.out.printf(
    "Job %s in location %s currently in state: %s%n",
    queryJob.getJobId().getJob(),
    queryJob.getJobId().getLocation(),
    queryJob.getStatus().getState().toString());

Python

Folgen Sie der Anleitung zur Einrichtung von Python in der BigQuery-Schnellstart-Anleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Python API.

# from google.cloud import bigquery
# client = bigquery.Client()

job_config = bigquery.QueryJobConfig()
# Run at batch priority, which won't count toward concurrent rate limit.
job_config.priority = bigquery.QueryPriority.BATCH
sql = """
    SELECT corpus
    FROM `bigquery-public-data.samples.shakespeare`
    GROUP BY corpus;
"""
# Location must match that of the dataset(s) referenced in the query.
location = "US"

# API request - starts the query
query_job = client.query(sql, location=location, job_config=job_config)

# Check on the progress by getting the job's updated state. Once the state
# is `DONE`, the results are ready.
query_job = client.get_job(
    query_job.job_id, location=location
)  # API request - fetches job
print("Job {} is currently in state {}".format(query_job.job_id, query_job.state))

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...