Details und Optionen für die Teradata-Migration

In diesem Dokument werden weitere Details, Optionen und Betafunktionen beschrieben, wenn Sie den BigQuery Data Transfer Service für die Migration der Daten von Teradata zu BigQuery verwenden.

Benutzerdefinierte Schemadatei

Transformationen mit einer Schemadatei erstellen

Im Rahmen der Migration können Sie eine benutzerdefinierte Schemadatei angeben, um die name-Felder eines beliebigen Objekts zu ändern, und das useType-Array zu jeder Spalte hinzufügen. Dies ist besonders nützlich, wenn Sie zusätzliche Informationen zu einer Tabelle hinzufügen möchten, z. B. die Partitionierung, die ansonsten bei der Migration verloren gehen würde, wenn keine Schemadatei angegeben wäre.

Die folgenden Nutzungstypen werden unterstützt:

  • PARTITIONING: Nur eine Spalte pro Tabelle kann mit diesem Nutzungstyp gekennzeichnet werden. Das Typfeld einer Spalte sollte DATE oder TIMESTAMP sein. Diese Spalte wird für die partitionierte Tabellendefinition verwendet, die das Objekt tables enthält.
  • CLUSTERING: Mehrere Spalten in einer Tabelle können mit diesem Nutzungstyp annotiert werden. Spaltentypen müssen den Einschränkungen für das Clustering in BigQuery entsprechen. Wenn für dieselbe Tabelle das Feld PARTITIONING angegeben ist, verwendet BigQuery diese Spalten zum Erstellen einer geclusterten Tabelle. Nur Spalten mit den Typen INT64, STRING, DATE, TIMESTAMP, BOOL oder NUMERIC können mit diesem Nutzungstyp gekennzeichnet werden.
  • COMMIT_TIMESTAMP: Mit diesem Nutzungstyp kann nur eine Spalte pro Tabelle annotiert werden. Verwenden Sie diesen Nutzungstyp, um eine Spalte als Aktualisierungs-Zeitstempel zu annotieren. Diese Spalte wird zum Extrahieren von Zeilen verwendet, die seit der letzten Übertragungsausführung erstellt/aktualisiert wurden. Sie sollte vom Typ TIMESTAMP oder DATE sein.

Beispiel für eine benutzerdefinierte Schemadatei


{
  "databases": [
    {
      "name": "db",
      "originalName": "db",
      "tables": [
        {
          "name": "test",
          "originalName": "test",
          "columns": [
            {
              "name": "foo",
              "originalName": "foo",
              "type": "INT64",
              "usageType": ["CLUSTERING"]
            },
            {
              "name": "bar",
              "originalName": "bar",
              "type": "DATE",
              "usageType": ["PARTITIONING"]
            },
            {
              "name": "change",
              "originalName": "change",
              "type": "TIMESTAMP",
              "usageType": ["COMMIT_TIMESTAMP"]
            }
          ]
        }
      ]
    }
  ]
}

Weitere Informationen dazu, wie Tabellen in einer Übertragung genau partitioniert oder geclustert werden, finden Sie im Abschnitt Inkrementelle Übertragungen.

Zuordnung der Datentypen von Teradata zu BigQuery

Teradata-Typ BigQuery-Typ Unterschied zwischen Typen
INTEGER INTEGER
SMALLINT INTEGER
BYTEINT INTEGER
BIGINT INTEGER
DECIMAL NUMERIC Der NUMERIC-Typ in BigQuery hat eine Genauigkeit von 38 Ziffern und 9 Dezimalstellen.
FLOAT NUMERIC Der NUMERIC-Typ in BigQuery hat eine Genauigkeit von 38 Ziffern und 9 Dezimalstellen.
NUMERIC NUMERIC Der NUMERIC-Typ in BigQuery hat eine Genauigkeit von 38 Ziffern und 9 Dezimalstellen.
NUMBER NUMERIC Der NUMERIC-Typ in BigQuery hat eine Genauigkeit von 38 Ziffern und 9 Dezimalstellen.
REAL FLOAT64
CHAR STRING
CHARACTER STRING
VARCHAR STRING
CLOB STRING
JSON STRING
BLOB BYTES
BYTE BYTES
VARTEBY BYTES
DATE DATE
TIME TIME BigQuery TIME ist in UTC. BigQuery Data Transfer Service extrahiert entsprechende Werte im UTC-Format.
TIMETZ TIME BigQuery TIME ist in UTC. BigQuery Data Transfer Service extrahiert entsprechende Werte im UTC-Format.
TIMESTAMP TIMESTAMP BigQuery TIMESTAMP ist in UTC. BigQuery Data Transfer Service extrahiert entsprechende Werte im UTC-Format.

TIMESTAMP-Genauigkeit ist auf Mikrosekunden beschränkt.
TIMESTAMPTZ TIMESTAMP BigQuery TIMESTAMP ist in UTC. BigQuery Data Transfer Service extrahiert entsprechende Werte im UTC-Format.

TIMESTAMP-Genauigkeit ist auf Mikrosekunden beschränkt.
ARRAY STRING
MULTIDIMENSIONALARRAY STRING
HOUR INTEGER
MINUTE INTEGER
SECOND INTEGER
DAY INTEGER
MONTH INTEGER
YEAR INTEGER
PERIODDATE STRING
PERIODTIMESTAMPTZ STRING
PERIODTIMESTAMP STRING
PERIODTIME STRING
PERIODTIMETZ STRING
USERDEFINED STRING
XML STRING
ANYTYPE STRING

Inkrementelle Übertragungen

BigQuery Data Transfer Service unterstützt wiederkehrende, regelmäßige Übertragungen neuer und aktualisierter Zeilen ("inkrementelle Übertragungen"). Sie haben die Übertragung beim Einrichten einer Übertragung in den Planungsoptionen als On-Demand oder inkrementell festgelegt.

Die Quelltabelle in Teradata muss eine Änderungsverfolgungsspalte vom Datentyp TIMESTAMP enthalten.

Bei inkrementellen Übertragungen wird bei der ersten Übertragung immer ein Tabellen-Snapshot in BigQuery erstellt. Alle nachfolgenden Übertragungen erfassen, übertragen neue und geänderte Daten und hängen diese an die vorhandene Tabelle in BigQuery an. Dies bedeutet, dass die BigQuery-Tabelle bei geänderten Zeilen möglicherweise doppelte Zeilen mit alten und neuen Werten enthält.

Für jede Übertragungsausführung wird ein Zeitstempel der Übertragungsausführung gespeichert. Für jede nachfolgende Übertragungsausführung erhält ein Agent den Zeitstempel eines vorherigen Übertragungsausführungs (T1) sowie einen Zeitstempel für den Beginn der aktuellen Übertragungsausführung (T2).

Für jede Übertragung nach der ersten Ausführung extrahiert der Migrations-Agent Daten mithilfe der folgenden Tabellenlogik:

  • Wenn ein Tabellenobjekt in einer Schemadatei keine Spalte mit dem Nutzungstyp COMMIT_TIMESTAMP enthält, wird die Tabelle übersprungen.
  • Wenn eine Tabelle eine Spalte mit dem Nutzungstyp COMMIT_TIMESTAMP enthält, werden alle Zeilen mit einem Zeitstempel zwischen T1 und T2 extrahiert und an die vorhandene Tabelle in BigQuery angehängt.

DDL/DML-Vorgänge bei inkrementellen Übertragungen

Teradata-Vorgang Typ Teradata-zu-BigQuery-Unterstützung
CREATE DDL Wenn der Tabellenname mit dem angegebenen Muster übereinstimmt, wird in BigQuery ein neuer vollständiger Snapshot der Tabelle erstellt.
DROP DDL Nicht unterstützt
ALTER (RENAME) DDL Wenn ein Tabellenname mit einem bestimmten Muster übereinstimmt, wird in BigQuery ein neuer vollständiger Snapshot für die umbenannte Tabelle erstellt. Der vorherige Snapshot wird nicht aus BigQuery gelöscht. Der Nutzer wird nicht über die umbenannte Tabelle benachrichtigt.
INSERT DML Der entsprechenden BigQuery-Tabelle werden neue Zeilen hinzugefügt.
UPDATE DML Zeilen werden nicht geändert. Zeilen werden der neuen BigQuery-Tabelle neu hinzugefügt, wie bei einem INSERT. Zeilen aus vorherigen Übertragungen werden nicht aktualisiert oder gelöscht.
MERGE DML Nicht unterstützt. Siehe stattdessen INSERT, UPDATE und DELETE.
DELETE DML Nicht unterstützt

Weitere Informationen