Abfrage ausführen
In diesem Dokument erfahren Sie, wie Sie eine Abfrage in BigQuery ausführen und anhand eines Trockenlaufs ermitteln, wie viele Daten vor der Ausführung verarbeitet werden.
Arten von Abfragen
Sie können BigQuery-Daten mit einem der folgenden Abfragejobtypen abfragen:
- Interaktive Abfragejobs. Standardmäßig führt BigQuery interaktive (On-Demand) Abfragejobs so schnell wie möglich aus.
Jobs vom Typ „Kontinuierliche Abfrage“ (Vorschau) Bei diesen Jobs wird die Abfrage kontinuierlich ausgeführt. So können Sie eingehende Daten in BigQuery in Echtzeit analysieren und die Ergebnisse dann in eine BigQuery-Tabelle schreiben oder in Bigtable oder Pub/Sub exportieren. Mit dieser Funktion können Sie zeitkritische Aufgaben ausführen, z. B. Erkenntnisse erstellen und sofort darauf reagieren, Echtzeit-Inferenzen für maschinelles Lernen (ML) anwenden und ereignisgesteuerte Datenpipelines erstellen.
Batch-Abfragejobs. Bei diesen Jobs stellt BigQuery jede Batchabfrage in Ihrem Namen in die Warteschlange und startet sie, sobald inaktive Ressourcen verfügbar werden – normalerweise innerhalb weniger Minuten.
Sie können Abfragejobs mit folgenden Methoden ausführen:
- Erstellen Sie eine Abfrage in der Google Cloud Console und führen Sie sie aus.
- Führen Sie den Befehl
bq query
im bq-Befehlszeilentool aus. - Rufen Sie programmatisch eine der Methoden
jobs.query
oderjobs.insert
in der BigQuery REST API auf. - Verwenden Sie die BigQuery-Clientbibliotheken.
BigQuery führt Ihre Abfragen standardmäßig als interaktive Abfragejobs aus, die so bald wie möglich ausgeführt werden. BigQuery berechnet das Limit für gleichzeitige Abfragen dynamisch basierend auf der Ressourcenverfügbarkeit und bevorzugt das Ausführen mehrer gleichzeitiger interaktiver Abfragen als Batchabfragen. Sobald die Ratenbegrenzung gleichzeitiger Abfragen erreicht wurde, werden zusätzliche Abfragen in einer Warteschlange abgelegt. Weitere Informationen finden Sie unter Abfragewarteschlangen.
In BigQuery werden Abfrageergebnisse entweder in einer temporären Tabelle (Standard) oder einer permanenten Tabelle gespeichert. Wenn Sie eine permanente Tabelle als Zieltabelle für die Ergebnisse angeben, können Sie auswählen, ob eine vorhandene Tabelle angefügt oder überschrieben werden soll, oder eine neue Tabelle mit einem eindeutigen Namen erstellt werden soll.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Ausführen eines Abfragejobs benötigen:
-
BigQuery-Jobnutzer (
roles/bigquery.jobUser
) für das Projekt. -
BigQuery-Datenbetrachter (
roles/bigquery.dataViewer
) für alle Tabellen und Ansichten, auf die Ihre Abfrage verweist. Zum Abfragen von Ansichten benötigen Sie diese Rolle auch für alle zugrunde liegenden Tabellen und Ansichten. Wenn Sie autorisierte Ansichten oder autorisierte Datasets verwenden, benötigen Sie keinen Zugriff auf die zugrunde liegenden Quelldaten.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Ausführen eines Abfragejobs erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind zum Ausführen eines Abfragejobs erforderlich:
-
bigquery.jobs.create
des Projekts, in dem die Abfrage ausgeführt wird, unabhängig davon, wo die Daten gespeichert sind. -
bigquery.tables.getData
für alle Tabellen und Ansichten, auf die Ihre Abfrage verweist. Zum Abfragen von Ansichten benötigen Sie diese Berechtigung auch für alle zugrunde liegenden Tabellen und Ansichten. Wenn Sie autorisierte Ansichten oder autorisierte Datasets verwenden, benötigen Sie keinen Zugriff auf die zugrunde liegenden Quelldaten.
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Fehlerbehebung
Access Denied: Project [project_id]: User does not have bigquery.jobs.create
permission in project [project_id].
Dieser Fehler tritt auf, wenn ein Nutzer keine Berechtigung zum Erstellen von Abfragejobs im Projekt hat.
Lösung: Ein Administrator muss Ihnen die Berechtigung bigquery.jobs.create
für das Projekt erteilen, das Sie abfragen. Diese Berechtigung ist zusätzlich zu allen Berechtigungen erforderlich, die für den Zugriff auf die abgefragten Daten erforderlich sind.
Weitere Informationen zu BigQuery-Berechtigungen finden Sie unter Zugriffssteuerung mit IAM.
Interaktive Abfrage ausführen
Wählen Sie eine der folgenden Optionen aus, um eine interaktive Abfrage auszuführen:
Console
Rufen Sie die Seite BigQuery auf.
Klicken Sie auf
SQL-Abfrage.Geben Sie im Abfrageeditor eine gültige GoogleSQL-Abfrage ein.
Fragen Sie beispielsweise das öffentliche BigQuery-Dataset
usa_names
ab, um die häufigsten Namen in den USA zwischen den Jahren 1910 und 2013 zu ermitteln:SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 10;
Optional: Geben Sie die Zieltabelle und den Speicherort für die Abfrageergebnisse an:
- Klicken Sie im Abfrageeditor auf Mehr und dann auf Abfrageeinstellungen.
- Aktivieren Sie im Abschnitt Ziel die Option Zieltabelle für Abfrageergebnisse festlegen.
- Geben Sie unter Dataset den Namen eines vorhandenen Datasets für die Zieltabelle ein, z. B.
myProject.myDataset
. - Geben Sie unter Tabellen-ID einen Namen für die Zieltabelle ein, z. B.
myTable
. Wenn die Zieltabelle eine vorhandene Tabelle ist, wählen Sie als Schreibeinstellung für Zieltabelle aus, ob die Tabelle mit den Abfrageergebnissen angefügt oder überschrieben werden soll.
Wenn die Zieltabelle eine neue Tabelle ist, erstellt BigQuery die Tabelle, wenn Sie Ihre Abfrage ausführen.
Klicken Sie im Abschnitt Zusätzliche Einstellungen auf das Menü Speicherort der Daten und wählen Sie eine Option aus.
In diesem Beispiel wird das Dataset
usa_names
am multiregionalen Standort „US“ gespeichert. Wenn Sie für diese Abfrage eine Zieltabelle angeben, muss sich das Dataset, das die Zieltabelle enthält, ebenfalls am multiregionalen Standort „US“ befinden. Es ist nicht möglich, ein Dataset an einem Standort abzufragen und die Ergebnisse in eine Zieltabelle an einem anderen Standort zu schreiben.Klicken Sie auf Speichern.
Klicken Sie auf
Ausführen.Wenn Sie keine Zieltabelle angeben, schreibt der Abfragejob die Ausgabe in eine temporäre (Cache-)Tabelle.
Sie können die Abfrageergebnisse jetzt auf dem Tab Ergebnisse im Bereich Abfrageergebnisse ansehen.
Optional: Klicken Sie zum Sortieren der Abfrageergebnisse (Vorschau) nach Spalten neben dem Spaltennamen auf
Sortiermenü öffnen und wählen Sie eine Sortierreihenfolge aus. Wenn die geschätzten Byte, die für die Sortierung verarbeitet wurden, größer als null sind, wird die Anzahl der Byte oben im Menü angezeigt.Optional: Öffnen Sie den Tab Diagramm, um Ihre Abfrageergebnisse darzustellen. Sie können das Diagramm vergrößern oder verkleinern, das Diagramm als PNG-Datei herunterladen oder die Sichtbarkeit der Legende umschalten.
Im Bereich Diagrammkonfiguration können Sie den Diagrammtyp (Linie, Balken oder Streu) ändern und die Messwerte und Dimensionen des Diagramms konfigurieren. Die Felder in diesem Bereich werden mit der Anfangskonfiguration vorausgefüllt, die aus dem Zieltabellenschema der Abfrage abgeleitet wurde. Die Konfiguration wird zwischen folgenden Abfrageausführungen im selben Abfrageeditor beibehalten. Dimensionen unterstützen die Datentypen
INTEGER
,INT64
,FLOAT
,FLOAT64
,NUMERIC
,BIGNUMERIC
,TIMESTAMP
,DATE
,DATETIME
,TIME
undSTRING
, Messungen unterstützen die DatentypenINTEGER
,INT64
,FLOAT
,FLOAT64
,NUMERIC
undBIGNUMERIC
.Optional: Auf dem Tab JSON können Sie die Abfrageergebnisse im JSON-Format ansehen. Dabei ist der Schlüssel der Spaltenname und der Wert das Ergebnis für diese Spalte.
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Führen Sie den Befehl
bq query
aus. Im folgenden Beispiel können Sie mit dem Flag--use_legacy_sql=false
die GoogleSQL-Syntax verwenden.bq query \ --use_legacy_sql=false \ 'QUERY'
Ersetzen Sie QUERY durch eine gültige GoogleSQL-Abfrage. Fragen Sie beispielsweise das öffentliche BigQuery-Dataset
usa_names
ab, um die häufigsten Namen in den USA zwischen den Jahren 1910 und 2013 zu ermitteln:bq query \ --use_legacy_sql=false \ 'SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 10;'
Der Abfragejob schreibt die Ausgabe in eine temporäre (Cache-)Tabelle.
Optional können Sie die Zieltabelle und den Speicherort für die Abfrageergebnisse angeben. Wenn Sie die Ergebnisse in eine vorhandene Tabelle schreiben möchten, fügen Sie das entsprechende Flag zum Anfügen (
--append_table=true
) oder Überschreiben (--replace=true
) der Tabelle ein.bq query \ --location=LOCATION \ --destination_table=TABLE \ --use_legacy_sql=false \ 'QUERY'
Dabei gilt:
LOCATION: die Region oder Multiregion für die Zieltabelle, z. B.
US
In diesem Beispiel wird das Dataset
usa_names
am multiregionalen Standort „US“ gespeichert. Wenn Sie für diese Abfrage eine Zieltabelle angeben, muss sich das Dataset, das die Zieltabelle enthält, ebenfalls am multiregionalen Standort „US“ befinden. Es ist nicht möglich, ein Dataset an einem Standort abzufragen und die Ergebnisse in eine Zieltabelle an einem anderen Standort zu schreiben.Mit der Datei ".bigqueryrc" können Sie einen Standardwert für den Standort festlegen.
TABLE: der Name der Zieltabelle, z. B.
myDataset.myTable
Wenn die Zieltabelle eine neue Tabelle ist, erstellt BigQuery die Tabelle, wenn Sie Ihre Abfrage ausführen. Sie müssen jedoch ein vorhandenes Dataset angeben.
Wenn sich die Tabelle nicht in Ihrem aktuellen Projekt befindet, fügen Sie die Google Cloud-Projekt-ID im Format
PROJECT_ID:DATASET.TABLE
hinzu, z. B.myProject:myDataset.myTable
. Wenn--destination_table
nicht angegeben ist, wird ein Abfragejob generiert, der die Ausgabe in eine temporäre (Cache-)Tabelle schreibt.
API
Sie können die API zum Ausführen einer Abfrage verwenden. Dazu fügen Sie einen neuen Job ein und füllen das Jobkonfigurationsattribut query
mit Daten. Optional: Geben Sie Ihren Standort im Attribut location
im Abschnitt jobReference
der Jobressource an.
Rufen Sie getQueryResults
auf, um die Ergebnisse abzufragen.
Führen Sie die Abfrage so lange aus, bis jobComplete
gleich true
ist. In der Liste errors
werden Fehler und Warnungen angezeigt.
C#
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der C#-Einrichtungsanleitung in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery C# API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Go
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Informationen zum Ausführen einer Abfrage mit einem Proxy finden Sie unter Proxy konfigurieren.
Node.js
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
PHP
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von PHP in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery PHP API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Python
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Ruby
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Ruby in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Ruby API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Continuous Query ausführen
Für die Ausführung eines Jobs mit kontinuierlicher Abfrage ist eine zusätzliche Konfiguration erforderlich. Weitere Informationen finden Sie unter Kontinuierliche Abfragen erstellen.
Batch-Abfrage ausführen
Wählen Sie eine der folgenden Optionen aus, um eine Batch-Abfrage auszuführen:
Console
Rufen Sie die Seite BigQuery auf.
Klicken Sie auf
SQL-Abfrage.Geben Sie im Abfrageeditor eine gültige GoogleSQL-Abfrage ein.
Fragen Sie beispielsweise das öffentliche BigQuery-Dataset
usa_names
ab, um die häufigsten Namen in den USA zwischen den Jahren 1910 und 2013 zu ermitteln:SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 10;
Klicken Sie auf
Mehr und dann auf Abfrageeinstellungen.Wählen Sie im Bereich Ressourcenverwaltung die Option Batch aus.
Optional: Geben Sie die Zieltabelle und den Speicherort für die Abfrageergebnisse an:
- Aktivieren Sie im Abschnitt Ziel die Option Zieltabelle für Abfrageergebnisse festlegen.
- Geben Sie unter Dataset den Namen eines vorhandenen Datasets für die Zieltabelle ein, z. B.
myProject.myDataset
. - Geben Sie unter Tabellen-ID einen Namen für die Zieltabelle ein, z. B.
myTable
. Wenn die Zieltabelle eine vorhandene Tabelle ist, wählen Sie als Schreibeinstellung für Zieltabelle aus, ob die Tabelle mit den Abfrageergebnissen angefügt oder überschrieben werden soll.
Wenn die Zieltabelle eine neue Tabelle ist, erstellt BigQuery die Tabelle, wenn Sie Ihre Abfrage ausführen.
Klicken Sie im Abschnitt Zusätzliche Einstellungen auf das Menü Speicherort der Daten und wählen Sie eine Option aus.
In diesem Beispiel wird das Dataset
usa_names
am multiregionalen Standort „US“ gespeichert. Wenn Sie für diese Abfrage eine Zieltabelle angeben, muss sich das Dataset, das die Zieltabelle enthält, ebenfalls am multiregionalen Standort „US“ befinden. Es ist nicht möglich, ein Dataset an einem Standort abzufragen und die Ergebnisse in eine Zieltabelle an einem anderen Standort zu schreiben.
Klicken Sie auf Speichern.
Klicken Sie auf
Ausführen.Wenn Sie keine Zieltabelle angeben, schreibt der Abfragejob die Ausgabe in eine temporäre (Cache-)Tabelle.
Optional: Klicken Sie zum Sortieren der Abfrageergebnisse (Vorschau) nach Spalten neben dem Spaltennamen auf
Sortiermenü öffnen und wählen Sie eine Sortierreihenfolge aus. Wenn die geschätzten Byte, die für die Sortierung verarbeitet wurden, größer als null sind, wird die Anzahl der Byte oben im Menü angezeigt.Optional: Öffnen Sie den Tab Diagramm, um Ihre Abfrageergebnisse darzustellen. Sie können das Diagramm vergrößern oder verkleinern, das Diagramm als PNG-Datei herunterladen oder die Sichtbarkeit der Legende umschalten.
Im Bereich Diagrammkonfiguration können Sie den Diagrammtyp (Linie, Balken oder Streu) ändern und die Messwerte und Dimensionen des Diagramms konfigurieren. Die Felder in diesem Bereich werden mit der Anfangskonfiguration vorausgefüllt, die aus dem Zieltabellenschema der Abfrage abgeleitet wurde. Die Konfiguration wird zwischen folgenden Abfrageausführungen im selben Abfrageeditor beibehalten. Dimensionen unterstützen die Datentypen
INTEGER
,INT64
,FLOAT
,FLOAT64
,NUMERIC
,BIGNUMERIC
,TIMESTAMP
,DATE
,DATETIME
,TIME
undSTRING
, Messungen unterstützen die DatentypenINTEGER
,INT64
,FLOAT
,FLOAT64
,NUMERIC
undBIGNUMERIC
.
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Verwenden Sie den Befehl
bq query
und geben Sie das Flag--batch
an. Im folgenden Beispiel können Sie mit dem Flag--use_legacy_sql=false
die GoogleSQL-Syntax verwenden.bq query \ --batch \ --use_legacy_sql=false \ 'QUERY'
Ersetzen Sie QUERY durch eine gültige GoogleSQL-Abfrage. Fragen Sie beispielsweise das öffentliche BigQuery-Dataset
usa_names
ab, um die häufigsten Namen in den USA zwischen den Jahren 1910 und 2013 zu ermitteln:bq query \ --batch \ --use_legacy_sql=false \ 'SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 10;'
Der Abfragejob schreibt die Ausgabe in eine temporäre (Cache-)Tabelle.
Optional können Sie die Zieltabelle und den Speicherort für die Abfrageergebnisse angeben. Wenn Sie die Ergebnisse in eine vorhandene Tabelle schreiben möchten, fügen Sie das entsprechende Flag zum Anfügen (
--append_table=true
) oder Überschreiben (--replace=true
) der Tabelle ein.bq query \ --batch \ --location=LOCATION \ --destination_table=TABLE \ --use_legacy_sql=false \ 'QUERY'
Dabei gilt:
LOCATION: die Region oder Multiregion für die Zieltabelle, z. B.
US
In diesem Beispiel wird das Dataset
usa_names
am multiregionalen Standort „US“ gespeichert. Wenn Sie für diese Abfrage eine Zieltabelle angeben, muss sich das Dataset, das die Zieltabelle enthält, ebenfalls am multiregionalen Standort „US“ befinden. Es ist nicht möglich, ein Dataset an einem Standort abzufragen und die Ergebnisse in eine Zieltabelle an einem anderen Standort zu schreiben.Mit der Datei ".bigqueryrc" können Sie einen Standardwert für den Standort festlegen.
TABLE: der Name der Zieltabelle, z. B.
myDataset.myTable
Wenn die Zieltabelle eine neue Tabelle ist, erstellt BigQuery die Tabelle, wenn Sie Ihre Abfrage ausführen. Sie müssen jedoch ein vorhandenes Dataset angeben.
Wenn sich die Tabelle nicht in Ihrem aktuellen Projekt befindet, fügen Sie die Google Cloud-Projekt-ID im Format
PROJECT_ID:DATASET.TABLE
hinzu, z. B.myProject:myDataset.myTable
. Wenn--destination_table
nicht angegeben ist, wird ein Abfragejob generiert, der die Ausgabe in eine temporäre (Cache-)Tabelle schreibt.
API
Sie können die API zum Ausführen einer Abfrage verwenden. Dazu fügen Sie einen neuen Job ein und füllen das Jobkonfigurationsattribut query
mit Daten. Optional: Geben Sie Ihren Standort im Attribut location
im Abschnitt jobReference
der Jobressource an.
Wenn Sie die Attribute des Abfragejobs angeben, nehmen Sie das Attribut configuration.query.priority
mit dem Wert BATCH
auf.
Rufen Sie getQueryResults
auf, um die Ergebnisse abzufragen.
Führen Sie die Abfrage so lange aus, bis jobComplete
gleich true
ist. In der Liste errors
werden Fehler und Warnungen angezeigt.
Go
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Java
Zum Ausführen einer Batch-Abfrage legen Sie die Abfragepriorität fest, und zwar auf QueryJobConfiguration.Priority.BATCH, wenn Sie eine QueryJobConfiguration erstellen.
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Java-Einrichtungsanleitung in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Python
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Für kurze Abfragen optimierter Modus
Der optimierte Modus für kurze Abfragen soll die Gesamtlatenz kurzer Abfragen verbessern, die bei Arbeitslasten wie Dashboards oder explorativen Datenanalysen häufig vorkommen. Er führt die Abfrage aus und gibt die Ergebnisse für SELECT
-Anweisungen inline zurück.
Bei Abfragen, die den optimierten Modus für kurze Abfragen verwenden, wird bei der Ausführung kein Job erstellt, es sei denn, BigQuery stellt fest, dass die Erstellung eines Jobs zum Ausführen der Abfrage erforderlich ist.
Wenn Sie den für kurze Abfragen optimierten Modus aktivieren möchten, setzen Sie das Feld jobCreationMode
der Instanz QueryRequest im Anfragetext jobs.query
auf JOB_CREATION_OPTIONAL
.
Wenn der Wert dieses Felds auf JOB_CREATION_OPTIONAL
festgelegt ist, ermittelt BigQuery, ob für die Abfrage der neue optimierte Modus für kurze Abfragen verwendet werden kann. In diesem Fall führt BigQuery die Abfrage aus und gibt alle Ergebnisse im Feld rows
der Antwort zurück. Da für diese Abfrage kein Job erstellt wird, gibt BigQuery im Antworttext keine jobReference
zurück. Stattdessen wird das Feld queryId
zurückgegeben, mit dem Sie mithilfe der INFORMATION_SCHEMA.JOBS
-Ansicht Statistiken zur Abfrage abrufen können. Da kein Job erstellt wird, gibt es keine jobReference
, die an die APIs jobs.get
und jobs.getQueryResults
übergeben werden kann, um kurze Abfragen zu suchen.
Wenn BigQuery feststellt, dass ein Job zum Ausführen der Abfrage erforderlich ist, wird jobReference
zurückgegeben. Im Feld job_creation_reason
in der INFORMATION_SCHEMA.JOBS
-Ansicht sehen Sie den Grund, warum ein Job für die Abfrage erstellt wurde. In diesem Fall sollten Sie jobs.getQueryResults
verwenden, um die Ergebnisse abzurufen, sobald die Abfrage abgeschlossen ist.
Wenn Sie den Wert JOB_CREATION_OPTIONAL
verwenden, sollten Sie nicht davon ausgehen, dass das Feld jobReference
immer in der Antwort vorhanden ist. Sie sollten prüfen, ob das Feld vorhanden ist, bevor Sie darauf zugreifen.
Der optimierte Modus für kurze Abfragen enthält außerdem einen Abfrageergebnis-Cache, der die Leistung wiederholter Abfragen verbessert, wenn sich die zugrunde liegenden Daten nicht ändern. Wenn Sie useQueryCache: true
(Standardwert ist true
, wenn nicht angegeben) und jobCreationMode: JOB_CREATION_OPTIONAL
in QueryRequest
angeben, versucht BigQuery, die Ergebnisse aus dem Cache bereitzustellen. Das Caching erfolgt nach dem Best-Effort-Prinzip.
Wählen Sie eine der folgenden Optionen aus, um eine Abfrage im Modus für kurze Abfragen auszuführen:
Console
Rufen Sie die Seite BigQuery auf.
Klicken Sie auf
SQL-Abfrage.Geben Sie im Abfrageeditor eine gültige GoogleSQL-Abfrage ein.
Fragen Sie beispielsweise das öffentliche BigQuery-Dataset
usa_names
ab, um die häufigsten Namen in den USA zwischen den Jahren 1910 und 2013 zu ermitteln:SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 10;
Klicken Sie auf
Mehr und dann unter Abfragemodus auswählen auf Für kurze Suchanfragen optimiert. Klicken Sie auf Bestätigen, um die Auswahl zu bestätigen.Klicken Sie auf
Ausführen.
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Verwenden Sie den Befehl
bq query
und geben Sie das Flag--job_creation_mode=JOB_CREATION_OPTIONAL
an. Im folgenden Beispiel können Sie mit dem Flag--use_legacy_sql=false
die GoogleSQL-Syntax verwenden.bq query \ --rpc=true \ --use_legacy_sql=false \ --job_creation_mode=JOB_CREATION_OPTIONAL \ --location=LOCATION \ 'QUERY'
Ersetzen Sie QUERY durch eine gültige GoogleSQL-Abfrage und LOCATION durch eine gültige Region, in der sich der Datensatz befindet. Fragen Sie beispielsweise das öffentliche BigQuery-Dataset
usa_names
ab, um die häufigsten Namen in den USA zwischen den Jahren 1910 und 2013 zu ermitteln:bq query \ --rpc=true \ --use_legacy_sql=false \ --job_creation_mode=JOB_CREATION_OPTIONAL \ --location=us \ 'SELECT name, gender, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_2013` GROUP BY name, gender ORDER BY total DESC LIMIT 10;'
Der Abfragejob gibt die Ausgabe inline in der Antwort zurück.
API
Wenn Sie eine Abfrage im Modus für kurze Abfragen mit der API ausführen möchten, führen Sie eine Abfrage synchron aus und füllen Sie das Attribut QueryRequest
aus. Fügen Sie das Attribut jobCreationMode
hinzu und legen Sie es auf JOB_CREATION_OPTIONAL
fest.
Prüfen Sie die Antwort. Wenn jobComplete
mit true
übereinstimmt und jobReference
leer ist, lesen Sie die Ergebnisse aus dem Feld rows
. Sie können den queryId
auch aus der Antwort abrufen.
Wenn jobRefernence
vorhanden ist, können Sie unter jobCreationReason
nachsehen, warum ein Job von BigQuery erstellt wurde. Rufen Sie getQueryResults
auf, um die Ergebnisse abzufragen.
Führen Sie die Abfrage so lange aus, bis jobComplete
gleich true
ist. In der Liste errors
werden Fehler und Warnungen angezeigt.
Java
Verfügbare Version: 2.37.1 und höher
Es muss die Umgebungsvariable QUERY_PREVIEW_ENABLED=true
festgelegt werden.
Beispiel : Linux oder macOS
export QUERY_PREVIEW_ENABLED=TRUE
Beispiel : Windows
$env:QUERY_PREVIEW_ENABLED=TRUE
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Java-Einrichtungsanleitung in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Informationen zum Ausführen einer Abfrage mit einem Proxy finden Sie unter Proxy konfigurieren.
Python
Verfügbare Version: 3.21.0 und höher
Es muss die Umgebungsvariable QUERY_PREVIEW_ENABLED=true
festgelegt werden.
Beispiel : Linux oder macOS
export QUERY_PREVIEW_ENABLED=TRUE
Beispiel : Windows
$env:QUERY_PREVIEW_ENABLED=TRUE
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Python-Einrichtungsanleitung in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Knoten
Verfügbare Version: 7.6.1 und höher
Es muss die Umgebungsvariable QUERY_PREVIEW_ENABLED=true
festgelegt werden.
Beispiel : Linux oder macOS
export QUERY_PREVIEW_ENABLED=TRUE
Beispiel : Windows
$env:QUERY_PREVIEW_ENABLED=TRUE
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Node.js-Einrichtungsanleitung in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Go
Verfügbare Version: 1.58.0 und höher
Umgebungsvariable QUERY_PREVIEW_ENABLED=true
muss festgelegt werden
Beispiel : Linux oder macOS
export QUERY_PREVIEW_ENABLED=TRUE
Beispiel : Windows
$env:QUERY_PREVIEW_ENABLED=TRUE
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Go-Einrichtungsanleitung in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
JDBC-Treiber
Verfügbare Version: JDBC v1.6.1
Es ist erforderlich, JobCreationMode=2
im Verbindungsstring festzulegen.
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;JobCreationMode=2;Location=US;
ODBC-Treiber
Verfügbare Version: ODBC 3.0.7.1016
Erfordert die Einstellung von JobCreationMode=2
in der Datei .ini
.
[ODBC Data Sources] Sample DSN=Simba Google BigQuery ODBC Connector 64-bit [Sample DSN] JobCreationMode=2
Kontingente
Informationen zu Kontingenten für interaktive und Batch-Abfragen finden Sie unter Abfragejobs.
Abfragen beobachten
Informationen zu laufenden Abfragen erhalten Sie über den Aufgaben-Explorer oder durch Abfragen der INFORMATION_SCHEMA.JOBS_BY_PROJECT
-Ansicht.
Probelauf
Ein Trockenlauf in BigQuery liefert die folgenden Informationen:
- Schätzung der Gebühren im On-Demand-Modus
- Validierung Ihrer Abfrage
- Ungefähre Anzahl der Byte, die von Ihrer Abfrage im Kapazitätsmodus verarbeitet werden
Bei Probeläufen werden keine Abfrage-Slots verwendet. Für einen Probelauf fallen keine Kosten an. Verwenden Sie den Schätzungswert, der vom Probelauf zurückgegeben wird, um die Abfragekosten mit dem Preisrechner zu ermitteln.
Probelauf durchführen
So führen Sie einen Probelauf aus:
Console
Wechseln Sie zur BigQuery-Seite.
Geben Sie Ihre Abfrage in den Abfrageeditor ein.
Wenn die Abfrage gültig ist, wird automatisch ein Häkchen zusammen mit der Datenmenge angezeigt, die durch die Abfrage verarbeitet wird. Wenn die Abfrage ungültig ist, wird ein Ausrufezeichen mit einer Fehlermeldung angezeigt.
bq
Geben Sie eine Abfrage wie die folgende zusammen mit dem Flag --dry_run
ein:
bq query \ --use_legacy_sql=false \ --dry_run \ 'SELECT COUNTRY, AIRPORT, IATA FROM `project_id`.dataset.airports LIMIT 1000'
Bei einer gültigen Abfrage gibt der Befehl die folgende Antwort zurück:
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 im JobConfiguration-Typ dryRun
auf true
gesetzt ist.
Go
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
PHP
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von PHP in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery PHP API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Python
Setzen Sie das Attribut QueryJobConfig.dry_run auf True
.
Client.query() gibt immer einen abgeschlossenen QueryJob zurück, wenn die Abfrage für einen Probelauf konfiguriert ist.
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Python-Einrichtungsanleitung in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Nächste Schritte
- Weitere Informationen zum Verwalten von Abfragejobs.
- Weitere Informationen zum Aufrufen des Abfrageverlaufs.
- Abfragen speichern und freigeben.
- Weitere Informationen zu Abfragewarteschlangen