Einführung in SQL in BigQuery
Dieses Dokument bietet einen Überblick über unterstützte Anweisungen und SQL-Dialekte in BigQuery.
GoogleSQL ist eine ANSI-konforme strukturierte Abfragesprache (Structured Query Language, SQL), die die folgenden Arten unterstützter Anweisungen enthält:
- Abfrageanweisungen, auch als DQL-Anweisungen (Data Query Language, Datenabfragesprache) bezeichnet, sind die primäre Methode zum Analysieren von Daten in BigQuery. Sie scannen eine oder mehrere Tabellen oder Ausdrücke und geben die berechneten Ergebniszeilen zurück.
- Prozedurale Sprachanweisungen sind prozedurale Erweiterungen für GoogleSQL, mit denen Sie mehrere SQL-Anweisungen in einer Anfrage ausführen können. Prozedurale Anweisungen können Variablen und Ablaufanweisungen verwenden und Nebeneffekte haben.
- Mit DDL-Anweisungen (Data Definition Language, Datendefinitionssprache) können Sie Datenbankobjekte wie Tabellen, Ansichten, Funktionen und Zugriffsrichtlinien auf Zeilenebene erstellen und ändern.
- Mit DML-Anweisungen (Data Manipulation Language, Datenbearbeitungssprache) können Sie Daten in BigQuery-Tabellen aktualisieren, einfügen und löschen.
- Mit DCL-Anweisungen (Data Control Language, Datenkontrollsprache) können Sie BigQuery-Systemressourcen wie Zugriff und Kapazität steuern.
- Mit TCL-Anweisungen (Transaction Control Language, Transaktionskontrollsprache) können Sie Transaktionen für Datenänderungen verwalten.
- Load- und Exportanweisungen für die Verwaltung von ein- und ausgehenden Daten in BigQuery.
BigQuery SQL-Dialekte
BigQuery unterstützt den GoogleSQL-Dialekt, aber auch ein Legacy-SQL-Dialekt ist verfügbar. Wenn Sie mit BigQuery noch nicht vertraut sind, sollten Sie GoogleSQL verwenden, da es die meisten Funktionen unterstützt. Beispielsweise werden Funktionen wie DDL- und DML-Anweisungen nur mit GoogleSQL unterstützt. Legacy-SQL sorgt für Abwärtskompatibilität. Wir empfehlen Kunden, zu migrieren, wenn sie Legacy-SQL verwenden.
Standarddialekt ändern
Anhand der Schnittstelle, die Sie zum Abfragen der Daten verwenden, wird der Standarddialekt für Abfragen festgelegt. So wechseln Sie zu einem anderen Dialekt:
Console
Der Standarddialekt für die Google Cloud Console ist GoogleSQL. So ändern Sie den Dialekt in Legacy-SQL:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Klicken Sie im Abfrageeditor auf die Schaltfläche Mehr > Abfrageeinstellungen.
Klicken Sie im Abschnitt Erweiterte Optionen unter SQL-Dialekt auf Legacy und dann auf Speichern. Dadurch wird für diese Abfrage die Option "Legacy-SQL" aktiviert. Wenn Sie auf Neue Abfrage erstellen klicken, um eine neue Abfrage zu erstellen, müssen Sie noch einmal die Option „Legacy-SQL“ auswählen.
SQL
Der Standard-SQL-Dialekt ist GoogleSQL.
Sie können den SQL-Dialekt festlegen, indem Sie das Präfix #standardSQL
oder #legacySQL
in Ihre Abfrage einfügen.
Bei diesen Abfragepräfixen wird nicht zwischen Groß- und Kleinschreibung unterschieden. Sie müssen der Abfrage vorangestellt sein und durch ein Zeilenvorschubzeichen getrennt werden. Im folgenden Beispiel wird der Dialekt auf Legacy-SQL gesetzt und das "natality"-Dataset abgefragt:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
#legacySQL SELECT weight_pounds, state, year, gestation_weeks FROM [bigquery-public-data:samples.natality] ORDER BY weight_pounds DESC LIMIT 10;
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
bq
Der Standard-Suchanfragendialekt im bq
-Befehlszeilentool ist Legacy-SQL. Fügen Sie der Befehlszeilenanweisung das Flag --use_legacy_sql=false
oder --nouse_legacy_sql
hinzu, um zum GoogleSQL-Dialekt zu wechseln.
Zum GoogleSQL-Dialekt wechseln
Zur Verwendung der GoogleSQL-Syntax in einem Abfragejob legen Sie für den Parameter use_legacy_sql
den Wert false
fest.
bq query \
--use_legacy_sql=false \
'SELECT
word
FROM
`bigquery-public-data.samples.shakespeare`'
GoogleSQL als Standarddialekt festlegen
Sie können GoogleSQL als Standarddialekt für das Befehlszeilentool und die interaktive Shell festlegen. Dazu bearbeiten Sie die Konfigurationsdatei .bigqueryrc
des Befehlszeilentools.
Weitere Informationen zu .bigqueryrc
finden Sie unter Standardwerte für Befehlszeilen-Flags festlegen.
So legen Sie --use_legacy_sql=false
in .bigqueryrc
fest:
- Öffnen Sie
.bigqueryrc
in einem Texteditor. Standardmäßig sollte sich.bigqueryrc
in Ihrem Nutzerverzeichnis befinden, z. B.$HOME/.bigqueryrc
. Fügen Sie der Datei den folgenden Text hinzu. In diesem Beispiel wird GoogleSQL als Standardsyntax für Abfragen und für den Befehl
mk
festgelegt, der beim Erstellen einer Datenansicht verwendet wird. Wenn Sie bereits Standardwerte für die Befehls-Flagsquery
odermk
konfiguriert haben, müssen Sie[query]
oder[mk]
nicht noch einmal hinzufügen.[query] --use_legacy_sql=false [mk] --use_legacy_sql=false
Speichern und schließen Sie die Datei.
Wenn Sie die interaktive Shell verwenden, müssen Sie die Anwendung beenden und neu starten, damit die Änderungen wirksam werden.
Informationen zu verfügbaren Befehlszeilen-Flags finden Sie in der Referenz zum bq-Befehlszeilentool.
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.
Standardmäßig verwendet die C#-Bibliothek GoogleSQL.Zum Legacy-SQL-Dialekt wechseln
Zur Verwendung der Legacy-SQL-Syntax in einem Abfragejob legen Sie den Parameter UseLegacySql
auf true
fest.
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.
Standardmäßig verwendet die Go-Clientbibliothek GoogleSQL.Zum Legacy-SQL-Dialekt wechseln
Um die Legacy-SQL-Syntax in einem Abfragejob zu verwenden, legen Sie das Attribut UseLegacySQL
in der Abfragekonfiguration auf true
fest.
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.
Standardmäßig verwendet die Java-Clientbibliothek GoogleSQL.Zum Legacy-SQL-Dialekt wechseln
Zur Verwendung der Legacy-SQL-Syntax in einem Abfragejob legen Sie für den Parameter useLegacySql
den Wert true
fest.
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.
Standardmäßig verwendet die Node.js-Clientbibliothek GoogleSQL.Zum Legacy-SQL-Dialekt wechseln
Zur Verwendung der Legacy-SQL-Syntax in einem Abfragejob legen Sie für den Parameter useLegacySql
den Wert true
fest.
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.
Standardmäßig verwendet die PHP-Clientbibliothek GoogleSQL.Zum Legacy-SQL-Dialekt wechseln
Zur Verwendung der Legacy-SQL-Syntax in einem Abfragejob legen Sie für den Parameter useLegacySql
den Wert true
fest.
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.
Standardmäßig verwendet die Python-Clientbibliothek GoogleSQL.Zum Legacy-SQL-Dialekt wechseln
Zur Verwendung der Legacy-SQL-Syntax in einem Abfragejob legen Sie für den Parameter use_legacy_sql
den Wert True
fest.
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.
Standardmäßig verwendet die Ruby-Clientbibliothek GoogleSQL.Zum Legacy-SQL-Dialekt wechseln
Um die Legacy-SQL-Syntax in einem Abfragejob zu verwenden, übergeben Sie die Option legacy_sql: true
mit Ihrer Abfrage.
Nächste Schritte
- Informationen zum Ausführen einer SQL-Abfrage in BigQuery finden Sie unter Interaktive und Batch-Abfragejobs ausführen.
- Weitere Informationen zur Abfrageoptimierung im Allgemeinen finden Sie unter Einführung in die Optimierung der Abfrageleistung.
- Mehr zur GoogleSQL-Syntax, die zum Abfragen von Daten in BigQuery verwendet wird, finden Sie unter Abfragesyntax.