In diesem Dokument wird beschrieben, wie Sie interaktive (On-Demand) und Batch-Abfragejobs ausführen.
Erforderliche Berechtigungen
Zum Ausführen eines Abfragejobs müssen Sie mindestens bigquery.jobs.create
-Berechtigungen haben. Damit ein Abfragejob erfolgreich abgeschlossen werden kann, benötigen Sie auch Zugriff auf die Tabellen oder Ansichten, auf die sich die Abfrage bezieht. Der Zugriff auf die Tabellen oder Ansichten kann auf folgenden Ebenen gewährt werden, aufgeführt vom größten zulässigen Ressourcenbereich zum kleinsten:
- auf übergeordneter Ebene in der Google Cloud-Ressourcenhierarchie, also auf Projekt-, Ordner- oder Organisationsebene
- auf Dataset-Ebene
- auf Tabellenebene
Die folgenden vordefinierten IAM-Rollen enthalten bigquery.jobs.create
-Berechtigungen:
bigquery.user
bigquery.jobUser
bigquery.admin
Wenn ein Nutzer mit Berechtigungen vom Typ bigquery.datasets.create
ein Dataset erstellt, wird ihm dafür außerdem bigquery.dataOwner
-Zugriff gewährt.
Mit bigquery.dataOwner
-Zugriff hat der Nutzer die Möglichkeit, Tabellen und Ansichten im Dataset abzufragen.
Weitere Informationen zu IAM-Rollen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.
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 auf die Limits gleichzeitiger Abfragen und das Tageslimit 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:
Console
Öffnen Sie in der Cloud Console die Seite „BigQuery“.
Zur Seite „BigQuery“Klicken Sie auf Neue Abfrage erstellen.
Geben Sie im Textbereich des Query editor (Abfrageeditor) eine gültige BigQuery-SQL-Abfrage ein.
Optional: Klicken Sie auf More (Mehr) und dann auf Query settings (Abfrageeinstellungen), um den Ort der Datenverarbeitung zu ändern. Klicken Sie unter Processing location (Verarbeitungsstandort) auf Auto-select (Automatische Auswahl) und wählen Sie den Standort Ihrer Daten aus. Klicken Sie abschließend auf Save (Speichern), um die Abfrageeinstellungen zu aktualisieren.
Klicken Sie auf Run (Ausführen).
Dies erstellt einen Abfragejob, der die Ausgabe in eine temporäre Tabelle schreibt.
bq
Geben Sie den Befehl bq query
ein und fügen Sie den Abfragetext ein.
Optional: 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 query
-Befehls-Flags finden Sie in der Referenz zum bq
-Befehlszeilentool unter bq query
.
Geben Sie die folgenden Flags an:
- Das Flag
--destination_table
, um eine permanente Tabelle auf Basis der Abfrageergebnisse zu erstellen. 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 Key Management Service-Schlüssel zum Verschlüsseln der Zieltabellendaten zu verwenden. - Das Flag
--use_legacy_sql=false
, um die Standard-SQL-Syntax für die Abfrage zu verwenden. Mithilfe der Datei.bigqueryrc
können Sie eine Standardsyntax für dasbq
-Befehlszeilentool einrichten. - Das Flag
--label
, um ein Label auf den Abfragejob im Format key:value anzuwenden. 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
, um eine Codedatei zu laden und auszuwerten, 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'
Wobei:
- location ist der Name des Standorts, an dem die Abfrage verarbeitet wird. Das Flag
--location
ist optional. Wenn Sie beispielsweise BigQuery in der Region Tokio verwenden, können Sie den Wert des Flags aufasia-northeast1
setzen. Mit der Datei ".bigqueryrc" können Sie einen Standardwert für den Standort festlegen. - query eine Abfrage in der Standard-SQL-Syntax ist.
Beispiele:
Mit dem folgenden Befehl schreiben Sie interaktive Abfrageergebnisse in eine Zieltabelle mit dem Namen mytable
in mydataset
. Das Dataset befindet sich in Ihrem Standardprojekt. Mit dieser Abfrage werden Daten aus dem öffentlichen Dataset USA Name Data abgerufen.
bq 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'
Mit dem folgenden Befehl schreiben Sie interaktive Abfrageergebnisse in eine Zieltabelle mit dem Namen mytable
in mydataset
. Das Dataset befindet sich in myotherproject
und nicht in Ihrem Standardprojekt. Mit der Abfrage werden Daten aus einer nicht partitionierten Tabelle abgerufen, dem öffentlichen Dataset „USA Name Data“.
bq 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'
API
Sie können die API zum Ausführen einer Abfrage verwenden. Dazu fügen Sie einen neuen Job ein und füllen das Attribut jobs#configuration.query mit Daten. Geben Sie im Abschnitt jobReference
der Jobressource Ihren Standort im Attribut location
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 anwenden, folgen Sie den Schritten zur Einrichtung von C# in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery C# API.
Go
Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.
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.
Node.js
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.
PHP
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von PHP in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery PHP API.
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 Python API.
Ruby
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Ruby in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Ruby API.
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
Öffnen Sie in der Cloud Console die Seite „BigQuery“.
Zur Seite „BigQuery“Klicken Sie auf die Schaltfläche Neue Abfrage erstellen.
Geben Sie im Textbereich des Abfrageeditors eine gültige SQL-Abfrage ein.
Klicken Sie auf More (Mehr) und dann auf Query settings (Abfrageeinstellungen).
Wählen Sie im Abschnitt Job priority (Jobpriorität) die Option Batchaus.
Optional: Klicken Sie bei Processing location (Verarbeitungsstandort) auf Unspecified (Nicht angegeben) und wählen Sie den Standort Ihrer Daten aus.
Klicken Sie auf Save (Speichern), um die Abfrageeinstellungen zu aktualisieren.
Klicken Sie auf Run (Ausführen).
bq
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.
Optional: 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 query
-Befehls-Flags finden Sie in der Referenz zum bq
-Befehlszeilentool unter bq query
.
Geben Sie die folgenden Flags an:
- Das Flag
--destination_table
, um eine permanente Tabelle auf Basis der Abfrageergebnisse zu erstellen. 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 Key Management Service-Schlüssel zum Verschlüsseln der Zieltabellendaten zu verwenden. - Das Flag
--use_legacy_sql=false
, um die Standard-SQL-Syntax für die Abfrage zu verwenden. Mithilfe der Datei.bigqueryrc
können Sie eine Standardsyntax für dasbq
-Befehlszeilentool einrichten. - Das Flag
--label
, um ein Label auf den Abfragejob im Format key:value anzuwenden. 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
, um eine Codedatei zu laden und auszuwerten, 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'
Wobei:
- location ist der Name des Standorts, an dem die Abfrage verarbeitet wird. Das Flag
--location
ist optional. Wenn Sie beispielsweise BigQuery in der Region Tokio verwenden, können Sie den Wert des Flags aufasia-northeast1
setzen. Mit der Datei ".bigqueryrc" können Sie einen Standardwert für den Standort festlegen. - query eine Abfrage in der Standard-SQL-Syntax ist.
Beispiele:
Mit dem folgenden Befehl schreiben Sie große Abfrageergebnisse in eine Zieltabelle mit dem Namen mytable
in mydataset
. Das Dataset befindet sich in Ihrem Standardprojekt. Mit der Abfrage werden Daten aus dem öffentlichen Dataset „USA Name Data“ abgerufen.
bq 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'
Mit dem folgenden Befehl schreiben Sie große Abfrageergebnisse in eine Zieltabelle mit dem Namen mytable
in mydataset
. Das Dataset befindet sich in myotherproject
und nicht in Ihrem Standardprojekt. Mit der Abfrage werden Daten aus einer nicht partitionierten Tabelle abgerufen, dem öffentlichen Dataset USA Name Data.
bq 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'
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.
Go
Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von Go in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Go API.
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 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.
Node.js
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Node.js API.
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 Python API.