Abfragen mit dem interaktiven SQL-Übersetzer übersetzen
In diesem Dokument wird beschrieben, wie Sie eine Abfrage mit einem interaktiven SQL-Übersetzer in einen Google SQL-Abfragejob von BigQuery in eine Google SQL-Abfrage übersetzen. Der interaktive SQL-Übersetzer kann den Zeit- und Arbeitsaufwand für die Migration von Arbeitslasten zu BigQuery reduzieren. Dieses Dokument richtet sich an Nutzer, die mit der Google Cloud Console oder der Google Cloud CLI vertraut sind.
Mit der Funktion für Übersetzungsregeln können Sie anpassen, wie der interaktive SQL-Übersetzer SQL übersetzt.
Eine Liste der von diesem SQL-Übersetzer unterstützten SQL-Dialekte finden Sie unter Unterstützte SQL-Dialekte.
Eine Liste der unterstützten Verarbeitungsstandorte finden Sie unter Standorte.
Hinweis
Führen Sie die folgenden Schritte aus, bevor Sie einen Übersetzungsjob senden.
SQL-Übersetzungen aktivieren
Aktivieren Sie die erforderliche API und rufen Sie die Berechtigungen ab, die für die Verwendung eines BigQuery-SQL-Übersetzers erforderlich sind. Weitere Informationen finden Sie unter SQL-Übersetzungen aktivieren.
Erforderliche Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für die Ressource parent zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen von Übersetzungsjobs mit dem interaktiven Übersetzer, der Translation API oder dem Batch-SQL-Übersetzer benötigen:
-
Migrationsjobs ansehen und überwachen:
MigrationWorkflow-Betrachter (
roles/bigquerymigration.viewer) -
Migrationsjobs senden:
MigrationWorkflow-Bearbeiter (
roles/bigquerymigration.editor) -
Auf die Cloud Storage-Buckets für Eingabe und Dateien zugreifen: Storage-Objekt-Administrator (
roles/storage.objectAdmin) für den Cloud Storage-Quell- und -Ziel-Bucket.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Erstellen von Übersetzungsjobs mit dem interaktiven Übersetzer, der Translation API oder dem Batch-SQL-Übersetzer erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um Übersetzungsjobs mit dem interaktiven Übersetzer, der Translation API oder dem Batch-SQL-Übersetzer zu erstellen:
-
bigquerymigration.workflows.create -
bigquerymigration.workflows.get -
bigquerymigration.workflows.list -
bigquerymigration.workflows.delete -
bigquerymigration.subtasks.get -
bigquerymigration.subtasks.list -
storage.objects.get -
storage.objects.list -
storage.objects.create
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Nicht unterstützte SQL-Funktionen mit Hilfs-UDFs verarbeiten
Wenn Sie SQL von einem Quelldialekt in BigQuery übersetzen, gibt es für einige Funktionen möglicherweise keine direkte Entsprechung. Um dieses Problem zu beheben, stellt der BigQuery-Migrationsdienst (und die BigQuery-Community im Allgemeinen) benutzerdefinierte Hilfsfunktionen (UDFs) bereit, die das Verhalten dieser nicht unterstützten Quelldialektfunktionen replizieren.
Diese UDFs befinden sich häufig im öffentlichen Dataset bqutil, sodass übersetzte Abfragen sie anfangs im Format bqutil.<dataset>.<function>() referenzieren können. Beispiel: bqutil.fn.cw_count()
Wichtige Überlegungen für Produktionsumgebungen:
bqutil bietet zwar bequemen Zugriff auf diese Hilfs-UDFs für die erste Übersetzung und Tests, aber die direkte Verwendung von bqutil für Produktionsarbeitslasten wird aus mehreren Gründen nicht empfohlen:
- Versionsverwaltung: Das Projekt
bqutilhostet die neueste Version dieser UDFs. Das bedeutet, dass sich ihre Definitionen im Laufe der Zeit ändern können. Wenn Sie sich direkt aufbqutilverlassen, kann dies zu unerwartetem Verhalten oder funktionsgefährdenden Änderungen in Ihren Produktionsabfragen führen, wenn die Logik einer UDF aktualisiert wird. - Abhängigkeitsisolation: Wenn Sie UDFs in Ihrem eigenen Projekt bereitstellen, wird Ihre Produktionsumgebung von externen Änderungen isoliert.
- Anpassung: Möglicherweise müssen Sie diese UDFs ändern oder optimieren, um sie besser an Ihre spezifische Geschäftslogik oder Ihre Leistungsanforderungen anzupassen. Dies ist nur möglich, wenn sie sich in Ihrem eigenen Projekt befinden.
- Sicherheit und Governance: Die Sicherheitsrichtlinien Ihrer Organisation schränken möglicherweise den direkten Zugriff auf öffentliche Datasets wie
bqutilfür die Verarbeitung von Produktionsdaten ein. Das Kopieren von UDFs in Ihre kontrollierte Umgebung entspricht diesen Richtlinien.
Hilfs-UDFs in Ihrem Projekt bereitstellen:
Für eine zuverlässige und stabile Produktionsnutzung sollten Sie diese Hilfs-UDFs in Ihrem eigenen Projekt und Dataset bereitstellen. So haben Sie die volle Kontrolle über Version, Anpassung und Zugriff. Eine ausführliche Anleitung zum Bereitstellen dieser UDFs finden Sie im UDF-Bereitstellungsleitfaden auf GitHub. In diesem Leitfaden finden Sie die erforderlichen Skripts und Schritte, um die UDFs in Ihre Umgebung zu kopieren.
Standorte
Der interaktive SQL-Übersetzer ist nur an ausgewählten Verarbeitungsstandorten verfügbar. Weitere Informationen finden Sie unter Standorte.
Gemini-basierte Übersetzungskonfigurationen sind nur an bestimmten Verarbeitungsstandorten verfügbar. Weitere Informationen finden Sie unter Standorte von Google-Modellendpunkten.
Abfrage in Google SQL übersetzen
Sie können eine Abfrage mit der Google Cloud Console oder der Google Cloud CLI übersetzen.
Console
Führen Sie diese Schritte aus, um eine Abfrage in GoogleSQL zu übersetzen:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Klicken Sie im Bereich Editor auf Tools > Übersetzungseinstellungen.
Wählen Sie unter Quelldialekt den SQL-Dialekt aus, den Sie übersetzen möchten.
Optional. Wählen Sie unter Verarbeitungsort den Ort aus, an dem der Übersetzungsjob ausgeführt werden soll. Wenn Sie sich beispielsweise in Europa befinden und Ihre Daten keine Standortgrenzen überschreiten möchten, wählen Sie die Region
euaus.Klicken Sie auf Speichern.
Klicken Sie im Bereich Editor auf Tools > SQL-Übersetzung aktivieren.
Der Bereich Bearbeiter wird in zwei Bereiche unterteilt.
Geben Sie im linken Bereich die Abfrage ein, die übersetzt werden soll.
Klicken Sie auf Übersetzen.
BigQuery übersetzt Ihre Abfrage in GoogleSQL und zeigt sie im rechten Bereich an. Der folgende Screenshot zeigt beispielsweise übersetzte Teradata SQL:

Optional: Klicken Sie auf Ausführen, um die übersetzte GoogleSQL-Abfrage auszuführen.
Optional: Klicken Sie auf Mehr > SQL-Übersetzung deaktivieren, um zum SQL-Editor zurückzukehren.
Im Bereich Editor ist wieder ein einzelnes Feld zu sehen.
gcloud
Wenn Sie eine Abfrage über die Google Cloud CLI übersetzen möchten, verwenden Sie den Befehl gcloud alpha bq translation translate:
gcloud alpha bq translation translate \ --source-dialect=SOURCE_DIALECT \ --target-dialect=TARGET_DIALECT \ --location=LOCATION \ --input-file=INPUT_FILE
Ersetzen Sie Folgendes:
SOURCE_DIALECT: der SQL-Dialekt, den Sie übersetzen möchten, z. B.teradata. Die unterstützten Werte finden Sie unter Unterstützte SQL-Dialekte.TARGET_DIALECT: der Dialekt, in den die Abfrage übersetzt werden soll. Beispiel:bigquery.LOCATION: der Speicherort, an dem der Übersetzungsjob ausgeführt werden soll. Wenn Sie sich beispielsweise in Europa befinden und Ihre Daten keine Standortgrenzen überschreiten möchten, geben Sie die Regioneuan.INPUT_FILE: die lokale Datei, die die Abfrage enthält, die Sie übersetzen möchten.
Der Befehl gibt die übersetzte Abfrage in der gcloud CLI aus. Wenn Sie die übersetzte Abfrage stattdessen in eine Datei schreiben möchten, fügen Sie das Flag --output-file hinzu.
Wenn Sie eine Abfrage übersetzen möchten, ohne eine Datei zu erstellen, leiten Sie sie über die Standardeingabe weiter und lassen Sie das Flag --input-file weg:
echo 'SELECT 1;' | gcloud alpha bq translation translate \ --source-dialect=teradata \ --target-dialect=bigquery \ --location=us
Verwenden Sie die folgenden Flags, um die Anpassungen anzuwenden, die Sie sonst in den Übersetzungseinstellungen festlegen würden:
--translation-config-files: eine durch Kommas getrennte Liste von YAML-Konfigurationsdateien. Dateinamen müssen auf.config.yamlenden.--metadata-gcs-uri: Der Cloud Storage-URI einer ZIP-Datei mit Metadaten.--explanation-output-file: eine lokale Datei, die eine von Gemini generierte Erklärung der Übersetzung enthält.
Gemini mit dem interaktiven SQL-Übersetzer verwenden
Sie können den interaktiven SQL-Übersetzer so konfigurieren, dass er die Übersetzung Ihres Quell-SQL anpasst. Dazu können Sie eigene Regeln für die Verwendung mit Gemini in einer YAML-Konfigurationsdatei oder eine YAML-Konfigurationsdatei mit SQL-Objektmetadaten oder Informationen zur Objektzuordnung bereitstellen.
Gemini-optimierte Übersetzungsregeln erstellen und anwenden
Sie können die Art und Weise, wie der interaktive SQL-Übersetzer SQL übersetzt, anpassen, indem Sie Übersetzungsregeln erstellen. Der interaktive SQL-Übersetzer passt seine Übersetzungen anhand der von Ihnen zugewiesenen Gemini-optimierten SQL-Übersetzungsregeln an. So können Sie die Übersetzungsergebnisse an Ihre Migrationsanforderungen anpassen.
Wenn Sie eine Gemini-optimierte SQL-Übersetzungsregel erstellen möchten, können Sie sie entweder in der Console erstellen oder eine YAML-Konfigurationsdatei erstellen und in Cloud Storage hochladen.
Console
Wenn Sie eine Gemini-optimierte SQL-Übersetzungsregel für die Eingabe-SQL erstellen möchten, schreiben Sie eine Eingabe-SQL-Abfrage in den Abfrageeditor und klicken Sie dann auf ASSIST > Anpassen. (Vorschau)
Wenn Sie eine Gemini-optimierte SQL-Übersetzungsregel für die Ausgabe-SQL erstellen möchten, führen Sie eine interaktive Übersetzung aus und klicken Sie dann auf ASSIST > Diese Übersetzung anpassen.
Wenn das Menü Anpassen angezeigt wird, fahren Sie mit den folgenden Schritten fort.
Verwenden Sie einen oder beide der folgenden Prompts, um eine Übersetzungsregel zu erstellen:
Geben Sie im Prompt Muster suchen und ersetzen im Feld Ersetzen ein SQL-Muster sowie ein zu ersetzendes SQL-Muster an. Geben Sie es im Feld Mit ein.
Ein SQL-Muster kann eine beliebige Anzahl von Anweisungen, Klauseln oder Funktionen in einem SQL-Skript enthalten. Wenn Sie mit diesem Prompt eine Regel erstellen, werden alle Instanzen dieses SQL-Musters in der SQL-Abfrage durch die Gemini-optimierte SQL-Übersetzung identifiziert und dynamisch durch ein anderes SQL-Muster ersetzt. Mit diesem Prompt können Sie beispielsweise eine Regel erstellen, die alle Vorkommen von
months_between (X,Y)durchdate_diff(X,Y,MONTH)ersetzt.Geben Sie im Feld Änderung an der Ausgabe beschreiben eine Änderung an der SQL-Übersetzungsausgabe in natürlicher Sprache ein.
Wenn Sie eine Regel mit diesem Prompt erstellen, erkennt die Gemini-optimierte SQL-Übersetzung die Anfrage und nimmt die angegebene Änderung an der SQL-Abfrage vor.
Klicken Sie auf Vorschau.
Prüfen Sie im Dialogfeld Von Gemini generierte Vorschläge die Änderungen, die durch die Gemini-gestützte SQL-Übersetzung an der SQL-Abfrage basierend auf Ihrer Regel vorgenommen wurden.
Optional: Wenn Sie diese Regel für zukünftige Übersetzungen hinzufügen möchten, setzen Sie ein Häkchen bei Save this prompt... (Diesen Prompt speichern...).
Regeln werden in der YAML-Standardkonfigurationsdatei oder in
__default.ai_config.yamlgespeichert. Diese YAML-Konfigurationsdatei wird im Cloud Storage-Ordner gespeichert, der im Feld Speicherort der Übersetzungskonfiguration in den Übersetzungseinstellungen angegeben ist. Wenn der Quellspeicherort für die Übersetzungskonfiguration noch nicht festgelegt ist, wird ein Ordnerbrowser angezeigt, in dem Sie einen auswählen können. Für eine YAML-Konfigurationsdatei gelten Größenbeschränkungen für Konfigurationsdateien.Klicken Sie auf Anwenden, um die vorgeschlagenen Änderungen auf die SQL-Abfrage anzuwenden.
YAML
Wenn Sie eine Gemini-optimierte SQL-Übersetzungsregel erstellen möchten, können Sie eine Gemini-basierte YAML-Konfigurationsdatei erstellen und in Cloud Storage hochladen. Weitere Informationen finden Sie unter Gemini-basierte YAML-Konfigurationsdatei erstellen.
Nachdem Sie eine Gemini-optimierte SQL-Übersetzungsregel erstellt und in Cloud Storage hochgeladen haben, können Sie die Regel so anwenden:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Klicken Sie im Abfrageeditor auf Tools > Übersetzungseinstellungen.
Geben Sie im Feld Speicherort der Übersetzungskonfiguration den Pfad zur Gemini-basierten YAML-Datei an, die in einem Cloud Storage-Ordner gespeichert ist.
Klicken Sie auf Speichern.
Führen Sie nach dem Speichern eine interaktive Übersetzung aus. Der interaktive Übersetzer schlägt Änderungen an Ihren Übersetzungen basierend auf den Regeln in Ihrer YAML-Konfigurationsdatei vor, sofern eine verfügbar ist.
Wenn für die Eingabe basierend auf Ihrer Regel ein Gemini-Vorschlag verfügbar ist, wird das Dialogfeld Vorschau der vorgeschlagenen Änderungen angezeigt. Darin sehen Sie mögliche Änderungen an der Übersetzungseingabe. (Vorschau)
Wenn für die Ausgabe basierend auf Ihrer Regel ein Gemini-Vorschlag verfügbar ist, wird im Code-Editor ein Benachrichtigungsbanner angezeigt. So prüfen und übernehmen Sie diese Vorschläge:
Klicken Sie auf einer der beiden Seiten des Code-Editors auf Assist > Vorschläge ansehen, um die vorgeschlagenen Änderungen an der entsprechenden Abfrage noch einmal aufzurufen.
Prüfen Sie im Dialogfeld Von Gemini generierte Vorschläge die Änderungen, die Gemini basierend auf Ihrer Übersetzungsregel an der SQL-Abfrage vorgenommen hat.
Klicken Sie auf Anwenden, um die vorgeschlagenen Änderungen auf die Übersetzungsausgabe anzuwenden.
Gemini-basierte YAML-Konfigurationsdatei aktualisieren
So aktualisieren Sie eine vorhandene YAML-Konfigurationsdatei:
Klicken Sie im Dialogfeld In Gemini generierte Vorschläge auf Konfigurationsdatei für Gemini-Regeln anzeigen.
Wenn der Konfigurationseditor angezeigt wird, wählen Sie die YAML-Konfigurationsdatei aus, die Sie bearbeiten möchten.
Nehmen Sie die gewünschten Änderungen vor und klicken Sie auf Speichern.
Schließen Sie den YAML-Editor, indem Sie auf Fertig klicken.
Führen Sie eine interaktive Übersetzung aus, um die aktualisierte Regel anzuwenden.
Übersetzung erklären lassen
Nachdem Sie eine interaktive Übersetzung ausgeführt haben, können Sie eine von Gemini generierte Texterklärung anfordern. Der generierte Text enthält eine Zusammenfassung der übersetzten SQL-Abfrage. Gemini erkennt auch Übersetzungsunterschiede und Inkonsistenzen zwischen der SQL-Abfrage und der übersetzten GoogleSQL-Abfrage.
So rufen Sie eine von Gemini generierte Erklärung zur SQL-Übersetzung ab:
Wenn Sie eine von Gemini generierte Erklärung für eine SQL-Übersetzung erstellen möchten, klicken Sie auf Unterstützung und dann auf Diese Übersetzung erklären.
Mit einer Batchübersetzungskonfigurations-ID übersetzen
Sie können eine interaktive Abfrage mit denselben Übersetzungskonfigurationen wie ein Batchübersetzungsjob ausführen. Geben Sie dazu eine Batchübersetzungskonfigurations-ID an.
- Klicken Sie im Abfrageeditor auf Tools > Übersetzungseinstellungen.
Geben Sie im Feld Übersetzungskonfigurations-ID eine Batchübersetzungskonfigurations-ID an, um dieselbe Übersetzungskonfiguration aus einem abgeschlossenen BigQuery-Batch-Migrationsjob anzuwenden.
Wählen Sie auf der Seite SQL-Übersetzung einen Batchübersetzungsjob aus und klicken Sie dann auf den Tab Übersetzungskonfiguration, um die Batch-Konfigurations-ID eines Jobs zu ermitteln. Die Konfigurations-ID für die Batchübersetzung wird als Ressourcenname aufgeführt.
Klicken Sie auf Speichern.
Mit zusätzlichen Konfigurationen übersetzen
Sie können eine interaktive Abfrage mit zusätzlichen Übersetzungskonfigurationen ausführen. Geben Sie dazu YAML-Konfigurationsdateien an, die in einem Cloud Storage-Ordner gespeichert sind. Übersetzungskonfigurationen können SQL-Objektmetadaten oder Informationen zur Objektzuordnung aus der Quelldatenbank enthalten, die die Übersetzungsqualität verbessern können. Nehmen Sie beispielsweise DDL-Informationen oder -Schemas aus der Quelldatenbank auf, um die Qualität der interaktiven SQL-Übersetzung zu verbessern.
So geben Sie Übersetzungskonfigurationen durch Angabe eines Speicherorts für die Quelldateien der Übersetzungskonfiguration an:
- Klicken Sie im Abfrageeditor auf Tools > Übersetzungseinstellungen.
Geben Sie im Feld Speicherort der Übersetzungskonfiguration den Pfad zu den Konfigurationsdateien für die Übersetzung an, die in einem Cloud Storage-Ordner gespeichert ist.
Der interaktive BigQuery-SQL-Übersetzer unterstützt ZIP-Dateien mit Übersetzungsmetadaten und Objektnamenzuordnung. Informationen zum Hochladen von Dateien in Cloud Storage finden Sie unter Objekte aus einem Dateisystem hochladen.
Klicken Sie auf Speichern.
Größenbeschränkungen für Konfigurationsdateien
Wenn Sie eine Konfigurationsdatei für die Übersetzung mit dem interaktiven BigQuery-SQL-Übersetzer verwenden, muss die komprimierte Metadatendatei oder YAML-Konfigurationsdatei kleiner als 50 MB sein. Wenn die Datei größer als 50 MB ist, überspringt der interaktive Übersetzer diese Konfigurationsdatei während der Übersetzung und erstellt eine Fehlermeldung wie die folgende:
CONFIG ERROR: Skip reading file "gs://metadata-file.zip". File size (150,000,000 bytes)
exceeds limit (50 MB).
Eine Methode zur Reduzierung der Größe der Metadatendatei besteht darin, mit den Flags --database oder --schema nur Metadaten für Datenbanken oder Schemas zu extrahieren, die für die Abfragen der Übersetzungseingabe relevant sind. Weitere Informationen zur Verwendung dieser Flags beim Generieren von Metadatendateien finden Sie unter Globale Flags.
Fehler bei der Übersetzung beheben
In den folgenden Abschnitten werden häufig auftretende Fehler bei der Verwendung des interaktiven SQL-Übersetzers beschrieben.
Probleme mit der Übersetzung von RelationNotFound oder AttributeNotFound
Nachdem Sie eine Abfrage mit dem interaktiven SQL-Übersetzer übersetzt haben, kann es zu einer fehlgeschlagenen Übersetzung mit dem Fehler RelationNotFound oder AttributeNotFound kommen.
Fehlgeschlagene Übersetzungen finden Sie auf der Seite Übersetzungsdetails in BigQuery in der Google Cloud Console. Öffnen Sie dazu den Tab Logeinträge.
Geben Sie die Anweisungen zur Datendefinitionssprache (Data Definition Language, DDL) für alle Tabellen ein, die in einer Abfrage vor der Abfrage selbst verwendet wurden, um eine möglichst genaue Übersetzung zu gewährleisten. Wenn Sie beispielsweise die Amazon Redshift-Abfrage select table1.field1, table2.field1 from table1, table2 where table1.id = table2.id; übersetzen möchten, geben Sie die folgenden SQL-Anweisungen in den interaktiven SQL-Übersetzer ein:
create table schema1.table1 (id int, field1 int, field2 varchar(16));
create table schema1.table2 (id int, field1 varchar(30), field2 date);
select table1.field1, table2.field1
from table1, table2
where table1.id = table2.id;
Übersetzungsprobleme mit Gemini beheben
Wenn Sie fehlgeschlagene Übersetzungsjobs mit den Fehlern RelationNotFound oder AttributeNotFound beheben möchten, können Sie diese Probleme auch mit Gemini lösen:
- Rufen Sie in BigQuery in der Google Cloud Console die Seite Übersetzungsdetails auf und öffnen Sie den Tab Logeinträge.
- Klicken Sie auf die Abfrage, die in der Spalte Kategorie die Meldung
RelationNotFoundoderAttributeNotFoundenthält. - Klicken Sie auf Vorgeschlagene Korrektur.
- Klicken Sie auf Übernehmen.
- Klicken Sie auf Übersetzen, um die Abfrage noch einmal zu übersetzen.
Preise
Für die Verwendung des interaktiven SQL-Übersetzers fallen keine Kosten an. Für die Speicherung von Eingabe- und Ausgabedateien werden jedoch die normalen Gebühren berechnet. Weitere Informationen finden Sie unter Speicherpreise.
Nächste Schritte
Mehr über die folgenden Schritte bei der Data Warehouse-Migration erfahren:
- Übersicht über die Migration
- Migrationsbewertung
- Schema- und Datenübertragung
- Batch-SQL-Übersetzung
- Datenpipelines
- Datensicherheit und Governance
- Datenvalidierungstool