Migration mit Migrationsverlauf planen
Mit dem Migrations-Lineage-Dienst können Sie den Datenfluss und die Verbindungen in Ihrer Quelldatenbank visualisieren, wenn Sie eine BigQuery-Data-Warehouse-Migration planen.
Wenn Sie eine Migrationslinie erstellen, stellt der Lineage-Dienst ein Diagramm bereit, in dem visualisiert wird, wie Daten durch Ihr Quellsystem fließen und wie jede Tabelle oder Ansicht in Ihrem Quellsystem verbunden ist. Das folgende Diagramm zeigt ein Beispiel:
Der Dienst für Migrationsherkunft unterstützt die folgenden SQL-Dialekte:
- Amazon Redshift-SQL
- Snowflock-SQL
- Teradata SQL
- GoogleSQL (BigQuery)
Beschränkungen
Der Lineage-Dienst verarbeitet die ersten 5 GB der ältesten Logs aus Ihrer Quelldatenbank.
Unterstützte Standorte
Der Migrations-Lineage-Dienst ist an ausgewählten Standorten verfügbar. Weitere Informationen finden Sie unter Standorte für BigQuery SQL Translator und Lineage Service.
Erforderliche Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle MigrationWorkflow-Bearbeiter (roles/bigquerymigration.editor) für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie für die Verwendung des Migrations-Lineage-Dienstes benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigungen, die für die Verwendung des Migrations-Lineage-Dienstes erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um den Migrations-Lineage-Dienst zu verwenden:
-
bigquerymigration.workflows.create -
bigquerymigration.workflows.get -
bigquerymigration.lineageDbs.query
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter BigQuery-IAM-Rollen und -Berechtigungen.
Migrationslinie erstellen
Zum Erstellen einer Migrationslinie führen Sie zuerst das Tool dwh-migration-dumper aus, um SQL-Logdateien für die Quelleingabe zu generieren, die Sie in Cloud Storage hochladen.
Nachdem Sie die Eingabedateien in Cloud Storage hochgeladen haben, können Sie die Migrationsherkunft mit der Google Cloud Console oder der BigQuery Migration API generieren.
dwh-migration-dumper-Tool ausführen
Wählen Sie eine der folgenden Optionen aus:
Amazon Redshift
So erstellen und sehen Sie sich den Migrationsverlauf einer Amazon Redshift-Datenbank an:
- Führen Sie das Tool
dwh-migration-dumperaus, um einen Dump Ihrer Quelldateien zu generieren. - Abfragelogs in Cloud Storage hochladen
Snowflake
So erstellen und sehen Sie sich den Migrationsverlauf einer Snowflake-Datenbank an:
- Führen Sie das Tool
dwh-migration-dumperaus, um einen Dump Ihrer Quelldateien zu generieren. - Abfragelogs in Cloud Storage hochladen
Teradata
So erstellen und sehen Sie sich den Migrationsverlauf einer Teradata-Datenbank an:
- Führen Sie das Tool
dwh-migration-dumperaus, um einen Dump Ihrer Quelldateien zu generieren. - Abfragelogs in Cloud Storage hochladen
BigQuery
So erstellen und sehen Sie sich die Migrationsherkunft einer BigQuery-Datenbank an:
- Weisen Sie dem Konto oder Dienstkonto die folgenden Rollen zu:
- BigQuery Metadata Viewer (
roles/bigquery.metadataViewer) - Data Catalog-Betrachter (
roles/datacatalog.viewer)
- BigQuery Metadata Viewer (
- Installieren Sie das
dwh-migration-dumper-Tool. Führen Sie das
dwh-migration-dumper-Tool aus, um Metadaten und Abfragelogs zu generieren. Diese Metadaten und Abfragelogs sind in einer oder mehreren ZIP-Dateien enthalten.dwh-migration-dumper --connector bigquery dwh-migration-dumper --connector bigquery-logs
Laden Sie die ZIP-Dateien in einen Cloud Storage-Bucket hoch. Weitere Informationen zum Erstellen von Buckets und zum Hochladen von Dateien in Cloud Storage finden Sie unter Bucket erstellen und Objekte aus einem Dateisystem hochladen.
Migrationsverlauf generieren
Nachdem Sie die ZIP-Dateien mit den Metadaten und Abfragelogs in Cloud Storage hochgeladen haben, können Sie die Migrationslinie generieren. Wählen Sie eine der folgenden Optionen aus:
Console
Rufen Sie die Seite Ihre Migrationsdienste auf.
Klicken Sie unter SQL übersetzen auf Übersetzen > Batch-Übersetzung.
Geben Sie unter Übersetzungskonfiguration Folgendes ein:
- Geben Sie unter Anzeigename einen Namen für den Lineage-Job an. Der Name kann Buchstaben, Ziffern und Unterstriche enthalten.
- Wählen Sie unter Verarbeitungsort den Ort aus, an dem der Lineage-Job ausgeführt werden soll.
- Wählen Sie unter Quelldialekt den SQL-Quelldialekt aus.
- Wählen Sie als Zieldialekt die Option GoogleSQL aus.
Klicken Sie auf Weiter.
Gehen Sie unter Details zum Dateispeicherort so vor:
- Geben Sie unter Speicherort des Ausgabeverzeichnisses den Pfad zu einem Cloud Storage-Bucket an, in dem die Übersetzungs-Ausgabedateien gespeichert werden sollen. Sie können den Pfad im Format
bucket_name/folder_name/eingeben oder auf Durchsuchen klicken. - Geben Sie unter Speicherort des Eingabeverzeichnisses den Pfad zum Cloud Storage-Ordner mit den Log-ZIP-Dateien an, die Sie zuvor hochgeladen haben. Sie können den Pfad im Format
bucket_name/folder_name/eingeben oder auf Durchsuchen klicken. Sie können auch den Namen des Unterverzeichnisses Ihrer Ausgabedateien im Feld Name des Ausgabeunterverzeichnisses angeben. - Sie können zusätzliche Eingabedateien hinzufügen, indem Sie auf Eingabeverzeichnis hinzufügen klicken.
- Geben Sie unter Speicherort des Ausgabeverzeichnisses den Pfad zu einem Cloud Storage-Bucket an, in dem die Übersetzungs-Ausgabedateien gespeichert werden sollen. Sie können den Pfad im Format
Klicken Sie auf Weiter.
Klicken Sie das Kästchen Herkunft aus Abfragelogs an.
Klicken Sie auf Erstellen.
Der Lineage-Job wird jetzt ausgeführt. Je nach Größe der Eingabe kann es mehrere Stunden dauern, bis der Job abgeschlossen ist. Nach Abschluss des Jobs stellt das Tool einen Link zur generierten Migrationslinie bereit.
API
Führen Sie den folgenden curl-Befehl aus, um einen Lineage-Job zu erstellen:
curl -d "{ \"tasks\": { \"TASK_NAME\": { \"type\": \"Experimental_Lineage\", \"translation_details\": { \"target_base_uri\": \"BUCKET_PATH\", \"source_target_mapping\": { \"source_spec\": { \"base_uri\": \"BUCKET_PATH\" } }, \"target_types\": \"LINEAGE\" } } } } " \ -H "Content-Type:application/json" \ -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/workflows
Ersetzen Sie Folgendes:
TASK_NAME: Ein Name zur Identifizierung dieses Lineage-Jobs.BUCKET_PATH: der Pfad zum Cloud Storage-Bucket, der Ihre ZIP-Eingabedateien enthält.PROJECT_ID: die Projekt-ID IhresGoogle Cloud -Projekts.LOCATION: Ein Verarbeitungsstandort. Dieser Wert muss entwedereuoderussein.
Dieser Aufruf gibt eine Meldung ähnlich der folgenden zurück:
{ "name": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID", "tasks": { "task_name": { /*...*/ } }, "state": "RUNNING" }
Der Lineage-Job wird jetzt ausgeführt. Je nach Größe der Eingabe kann es mehrere Stunden dauern, bis der Job abgeschlossen ist. Führen Sie den folgenden curl-Befehl mit der Workflow-ID aus, um den Status des Lineage-Jobs zu prüfen:
curl \ -H "Content-Type:application/json" \ -H "Authorization:Bearer " -X GET https://bigquerymigration.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID
Nach Abschluss des Jobs stellt das Tool einen Link zur generierten Lineage-Ansicht bereit.
Migrations-Lineage öffnen
Nachdem Sie eine Migrationslinie erstellt haben, können Sie sie mit einer der folgenden Optionen öffnen:
Console
Rufen Sie die Seite Ihre Migrationsdienste auf.
Klicken Sie unter SQL übersetzen auf Letzte anzeigen.
Klicken Sie auf der Seite SQL-Übersetzungen auf den Jobnamen, um den gesamten Lineage-Job auszuwählen. Lineage-Jobs haben den Ausgabewert
Lineage.Klicken Sie auf der Seite Übersetzungsdetails auf Datenherkunft.
API
Führen Sie den folgenden curl-Befehl mit der BigQuery Migration API aus, um eine abgeschlossene Migrationslinie zu öffnen:
curl \ -H "Content-Type:application/json" \ -H "Authorization:Bearer " -X GET https://bigquerymigration.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID
Ersetzen Sie Folgendes:
PROJECT_ID: die Projekt-ID IhresGoogle Cloud -Projekts.LOCATION: Ein Verarbeitungsstandort. Dieser Wert muss entwedereuoderussein.WORKFLOW_ID: Die Workflow-ID des generierten Lineage.
Rufen Sie den Link auf, der im Feld taskResult.translationTaskResult.consoleUri der Ausgabenachricht enthalten ist.
Migrationsverlauf verwenden
In den folgenden Abschnitten wird beschrieben, wie Sie die Migrationsherkunft verwenden können, um mit Ihren Quelldaten und Ihrer Quelldatenbank zu arbeiten.
Begriffe für die Migrations-Lineage
Die folgenden Begriffe werden in einer Migrationslinie verwendet:
| Nutzungsbedingungen | Beschreibung |
|---|---|
| Skripts | SQL-Scripts und andere Programme, die in den Datenbanklogs sichtbar sind, die während der Erstellung des Lineage erfasst werden. Skripts bestehen aus Anweisungen, bei denen es sich meist um einzelne SQL-Anweisungen handelt. |
| Knoten | Die Knoten des Herkunftsdiagramms. Sie bestehen aus Tabellen und Spalten. |
| Tabellen | Auch als Beziehungen bezeichnet, einschließlich gewöhnlicher Tabellen, Ansichten, strukturierter Dateien und anderer tabellenähnlicher Ressourcen. |
| Spalten | Auch als Attribute bezeichnet, einschließlich Tabellenspalten, Ansichtsprojektionen, Pseudospalten, spaltenähnlichen Feldern in Dateien und anderen Ressourcen sowie Unterspalten wie Strukturfelder. |
| Kanten | Verbindungen zwischen Herkunftsknoten, die Interaktionen aufgrund einer Pipeline angeben, die ein Skript ausführt, das diese Knoten gelesen oder geschrieben hat. Kanten werden mit Zeitstempeln, Attributen und anderen Metadaten versehen, die angeben, wann die Kante abgeleitet wurde. Ein Knoten, der über eine Kante mit einem anderen Knoten verbunden ist, wird als direkte Verbindung bezeichnet. Eine Reihe von Kanten zwischen zwei Knoten wird als indirekte Verbindung bezeichnet. |
| Lineage-Kanten | Gerichtete Kanten, die angeben, dass der Quellknoten in einer Klausel wie FROM, WHERE oder GROUP BY enthalten war, die die Daten des Zielknotens beeinflusst hat. |
| Nutzer und Pipelines | Metadatenlabels, die von der Quelldatenbank bereitgestellt werden und Informationen dazu enthalten, wer und was Skripts ausgeführt hat. Sie haben keine inhärente Bedeutung für die Lineage-Engine, werden aber verwendet, um Skripts nach Herkunft zu gruppieren. |
In den folgenden Abschnitten werden die verschiedenen Seiten in einer Migrationslinie beschrieben.
Landingpage prüfen
Auf der Landingpage des Migrations-Lineage-Diagramms sehen Sie die ID des Lineage-Jobs, ein Suchfeld zum Suchen von Lineage-Objekten nach Namen und eine Vorschlagsliste mit einigen Lineage-Objekten, die für Sie von Interesse sein könnten. Die Seite enthält auch die Gesamtzahl der Tabellen, Pipelines und Nutzer in der Migrationslinie.
Wenn Sie zu einer bestimmten Tabelle, Ansicht oder Spalte wechseln möchten, suchen Sie im Suchfeld nach dem Objekt oder klicken Sie auf der Landingpage auf eines der vorgeschlagenen Objekte.
Knotenseite aufrufen
Klicken Sie auf einen der folgenden Tabs, um die Knoten in Ihrem Migrationsverlauf zu sehen.
Tab „Data Flow“ (Datenfluss)
Auf dem Tab Data Flow (Datenfluss) wird ein Teil des Lineage-Diagramms visualisiert. Sie ist die Standardseite, wenn Sie sich zum ersten Mal eine Tabelle oder Spalte im Lineage-Dienst ansehen. Das Diagramm veranschaulicht, wie Daten durch Ihr Quellsystem fließen. Knoten in diesem Diagramm stellen Tabellen oder Ansichten dar, während Kanten zwischen den Knoten Daten darstellen, die von den Knoten auf der linken Seite zu den Knoten auf der rechten Seite fließen.
In jeder Tabelle im Diagramm Datenfluss wird der nicht qualifizierte Name angezeigt. Wenn Sie den voll qualifizierten Namen einer Tabelle mit dem Datenbank- und Schemapräfix sehen möchten, halten Sie den Mauszeiger auf den Knoten, um die Kurzinfo aufzurufen. Jede Tabelle gibt ihr Schema an, wie durch den vertikalen Balken auf dem Knoten angegeben. Alle Schemas in der Lineage werden alphabetisch sortiert und ihnen wird eine Farbe zugewiesen. Tabellen im selben Schema haben also Balken in derselben Farbe und Tabellen in Schemas mit ähnlichen Namen haben Balken in ähnlichen Farben.
Jeder Knoten hat ein Symbol, das seine Eigenschaften angibt:
- monitor: eine Ansicht, keine Tabelle.
- cached: Eine Tabelle, die immer vollständig aktualisiert wird (gekürzt und dann neu geschrieben). Klicken Sie auf das Symbol, um Skripts neben dieser Tabelle aufzurufen.
- Im Cache: Eine Tabelle, die nicht immer vollständig aktualisiert wird (sie wird gekürzt und dann neu geschrieben). Klicken Sie auf das Symbol, um Skripts neben dieser Tabelle aufzurufen.
- timer: Eine Tabelle, die nur kurzlebig war. Bewegen Sie den Mauszeiger auf das Symbol, um die Dauer anzuzeigen, für die die Tabelle vorhanden war.
- Schneeflocke: Eine Tabelle, in die vor mehr als sieben Tagen zuletzt geschrieben wurde. Dies deutet auf eine Tabelle mit statischen oder selten geschriebenen Daten hin.
So prüfen Sie die Objekte im Diagramm Data Flow (Datenfluss):
- Wenn Sie eine Liste der Tabellenspalten aufrufen möchten, klicken Sie auf eine Tabelle. Diese Ansicht enthält den Namen jeder Spalte sowie ihren Datentyp, der aus einem bereitgestellten Metadaten-Dump ermittelt oder aus dem SQL in den Abfragelogs abgeleitet wurde.
- Wenn Sie das Herkunftsdiagramm auf Spaltenebene für eine Spalte aufrufen möchten, klicken Sie auf die Spalte. Im Herkunftsgraphen auf Spaltenebene stellen die Kanten Datenflüsse dar, die sich auf die Zielspalte auswirken.
Wenn Sie Details zu einer Kante aufrufen möchten, klicken Sie im Diagramm auf die entsprechende Kante. Diese Ansicht enthält Links zu den SQL-Scripts, die den Edge ausgelöst haben.
Eine Kante wird von einem Quellknoten zu einem Zielknoten generiert, wenn in einer SQL-Anweisung auf den Quellknoten verwiesen wird, während mit der Anweisung Daten berechnet werden, die in den Zielknoten eingefügt werden. In der Regel werden dabei Daten von der Quelle zum Ziel übertragen. Auf dem Tab Data Flow (Datenfluss) wird jedoch auch eine Kante angezeigt, wenn der Quellknoten in einer
WHERE- oderGROUP BY-Klausel verwendet wird, die sich auf das Ziel auswirkt. Wenn Sie nur Datenübertragungen filtern möchten, aktivieren Sie in der Symbolleiste die Schaltfläche Nicht datenbezogene Kanten einblenden.
Tab „Verbindungen“
Auf dem Tab Verbindungen eines Lineage-Knotens wird eine Liste der benachbarten Knoten im Lineage-Diagramm angezeigt. Standardmäßig werden verbundene Knoten nach der Entfernung des kürzesten Pfads vom aktuellen Knoten sortiert. Knoten, die weniger Kanten benötigen, um vom aktuellen Knoten aus erreicht zu werden, werden zuerst aufgeführt. Mit der Option Sortieren können Sie die Sortierung ändern.
Die Verbindungsliste enthält standardmäßig sowohl Upstream- (Ersteller-) als auch Downstream- (Nutzer-)Knoten des aktuellen Knotens. Sie können diesen Filter mit dem Steuerelement Typ ändern. In der Spalte Entfernung werden Knoten, die sich vor dem aktuellen Knoten befinden, mit einem Aufwärtspfeil und der Entfernung des kürzesten Rückwärtspfads zu diesem Knoten vom aktuellen Knoten aus angezeigt. Knoten, die sich hinter dem aktuellen Knoten befinden, werden mit einem Abwärtspfeil und der Entfernung des kürzesten Vorwärtspfads zu diesem Knoten vom aktuellen Knoten aus angezeigt. Ein Knoten kann sowohl vorgelagert als auch nachgelagert vom aktuellen Knoten sein, wenn er Teil eines Zyklus ist.
Wenn Sie eine Datei mit allen angezeigten Knoten herunterladen möchten, klicken Sie auf CSV-Datei herunterladen.
Tab "Users" ("Nutzer")
Auf dem Tab Nutzer eines Knotens werden Nutzer angezeigt, die Skripts ausgeführt haben, mit denen der Knoten oder Knoten, die vor- oder nachgelagert sind, gelesen oder geschrieben wurden. Standardmäßig wird der Nutzer, der die meisten einzelnen Aktionen ausgeführt hat, zuerst aufgeführt. Sie können die Sortierung mit der Option Sortieren ändern.
Wenn Sie eine Datei mit allen angezeigten Nutzern herunterladen möchten, klicken Sie auf CSV-Datei herunterladen.
Tab „Pipelines“
Auf dem Tab Pipelines eines Knotens werden die Pipelines angezeigt, in denen Skripts ausgeführt wurden, die den Knoten oder Knoten, die sich upstream oder downstream davon befinden, gelesen oder in die Knoten geschrieben haben. Standardmäßig wird die Pipeline, in der die meisten separaten Aktionen ausgeführt wurden, zuerst aufgeführt. Mit der Option Sortieren können Sie die Sortierung ändern.
Wenn Sie eine Datei mit allen angezeigten Pipelines herunterladen möchten, klicken Sie auf CSV-Datei herunterladen.
Tab „Code“
Auf dem Tab Code für einen Knoten werden alle SQL-Scripts angezeigt, die in den Eingabedateien enthalten sind und mit denen Daten aus diesem Knoten gelesen oder in diesen Knoten geschrieben wurden. Erwähnungen des Knotens werden im SQL-Text hervorgehoben. Klicken Sie auf ein Skript, um den vollständigen Text zu maximieren. Sie können die Filtereinstellungen ändern, um die Liste der angezeigten Skripts zu filtern.
Wenn Sie eine Datei mit allen angezeigten Skripts herunterladen möchten, klicken Sie auf CSV-Datei herunterladen.
Edge-Seite prüfen
Klicken Sie auf einen der folgenden Tabs, um die Knotenverbindungen in Ihrem Herkunftsdiagramm zu sehen.
Tab „Details“
Auf dem Tab Details für eine Kante werden Prädikate und Kategorien angezeigt, die die Vorgänge beschreiben, die von Skripts ausgeführt wurden, die die Kante verursacht haben.
Prädikate werden als dreiteilige Codes angegeben, die durch Bindestriche getrennt sind. Der erste Teil ist entweder r, was darauf hinweist, dass die Quelle der Kante eine Beziehung ist, oder a, was darauf hinweist, dass die Quelle der Kante ein Attribut ist. Der zweite Teil ist eine der folgenden Abkürzungen, die angibt, wie sich der Quellknoten auf die Daten im Zielknoten ausgewirkt hat:
has: Die Quellbeziehung enthält das Zielattribut.dat: Die Quelle kopiert oder überträgt Daten an das Ziel.res: Die Quelle filtert oder schränkt die Kardinalität des Ziels in einer Klausel wieWHERE,HAVINGoderJOIN ONein.grp: Die Quelle wird in einerGROUP BY-Klausel verwendet, die sich auf das Ziel auswirkt.
Der dritte Teil ist entweder r oder a. Er gibt an, ob das Ziel des Edge eine Beziehung oder ein Attribut ist.
Kantenkategorien können Folgendes umfassen:
datPrädikate:AGGREGATE: Die Quelle wurde in einer aggregierten Berechnung verwendet, mit der das Ziel geschrieben wurde.EXACT_COPY: Daten aus der Quelle wurden vollständig in das Ziel kopiert.FUNCTION: Die Quelle wurde zum Berechnen des Ziels verwendet.IDENTITY_COPY: Das Ziel wurde nicht berechnet. Das Ziel war eine wörtliche Kopie der Quelle ohne Casts oder Konvertierungen.PARTITION_PROMOTION: Das Ziel enthält Daten aus der Quelle, weil eine Partition der Quelle in das Ziel übertragen wurde.WEAK_COPY: Daten aus der Quelle wurden zumindest teilweise in das Ziel kopiert.
resPrädikate:FILTER: Die Quelle wurde in einem Vergleich verwendet, bei dem das Ziel geschrieben wurde.KEY: Daten aus der Quelle wurden als Schlüssel in einem Join-Vergleich verwendet, bei dem das Ziel geschrieben wurde.
grpPrädikate:GROUP: Daten aus der Quelle wurden als Schlüssel in einerGROUP BY-Klausel verwendet, die sich auf das Ziel auswirkt.
Tab „Code“
Auf dem Tab Code für einen Knoten werden die SQL-Scripts angezeigt, die diesen Knoten verursacht haben. Die Quell- und Zielknoten der Kante werden hervorgehoben, wenn sie im SQL-Text erwähnt werden.
Nächste Schritte
- Führen Sie eine Migrationsbewertung durch, um die Machbarkeit und die potenziellen Vorteile der Migration Ihres Data Warehouse zu BigQuery zu bewerten.
- Verwenden Sie den SQL-Übersetzungsdienst, z. B. den interaktiven SQL-Übersetzer, die Translation API und den Batch-SQL-Übersetzer, um die Konvertierung Ihrer SQL-Abfragen in GoogleSQL zu automatisieren, einschließlich der Gemini-optimierten SQL-Anpassung.