SQL-Übersetzungen mit YAML-Konfigurationsdateien transformieren

In diesem Dokument erfahren Sie, wie Sie mit YAML-Konfigurationsdateien SQL-Code während der Migration zu BigQuery transformieren. Es enthält Richtlinien zum Erstellen eigener YAML-Konfigurationsdateien und Beispiele für verschiedene Übersetzungstransformationen, die von diesem Feature unterstützt werden.

Wenn Sie den interaktiven SQL-Übersetzer in BigQuery verwenden oder eine Batch-SQL-Übersetzung durchführen, können Sie YAML-Konfigurationsdateien angeben, um eine SQL-Abfrageübersetzung zu ändern. YAML-Konfigurationsdateien ermöglichen eine weitere Anpassung beim Übersetzen von SQL-Abfragen aus der Quelldatenbank.

Sie können eine YAML-Konfigurationsdatei für eine SQL-Übersetzung so angeben:

Der interaktive SQL-Übersetzer, der Batch-SQL-Übersetzer und der Batchübersetzungs-Python-Client unterstützen die Verwendung mehrerer YAML-Konfigurationsdateien in einem einzigen Übersetzungsjob. Weitere Informationen finden Sie unter Mehrere YAML-Konfigurationen anwenden.

Anforderungen an YAML-Konfigurationsdateien

Prüfen Sie vor dem Erstellen einer YAML-Konfigurationsdatei die folgenden Informationen, um sicherzustellen, dass Ihre YAML-Datei mit dem BigQuery-Migrationsdienst kompatibel ist:

  • Sie müssen die YAML-Konfigurationsdateien in das Stammverzeichnis des Cloud Storage-Buckets hochladen, der Ihre Eingabedateien für die SQL-Übersetzung enthält. Informationen zum Erstellen von Buckets und zum Hochladen von Dateien in Cloud Storage erhalten Sie unter Buckets erstellen und Objekte aus einem Dateisystem hochladen.
  • Die Dateigröße für eine einzelne YAML-Konfigurationsdatei darf 1 MB nicht überschreiten.
  • Die Gesamtgröße aller YAML-Konfigurationsdateien, die in einem einzelnen SQL-Übersetzungsjob verwendet werden, darf 4 MB nicht überschreiten.
  • Wenn Sie die regex-Syntax für den Namensabgleich verwenden, nutzen Sie RE2/J.
  • Alle YAML-Dateinamen für die Konfiguration müssen die Erweiterung .config.yaml haben, z. B. change-case.config.yaml.
    • config.yaml allein ist kein gültiger Name für die Konfigurationsdatei.

Richtlinien für das Erstellen einer YAML-Konfigurationsdatei

Dieser Abschnitt enthält einige allgemeine Richtlinien zum Erstellen einer YAML-Konfigurationsdatei:

Jede Konfigurationsdatei muss einen Header enthalten, der den Konfigurationstyp angibt. Mit dem Typ object_rewriter werden SQL-Übersetzungen in einer YAML-Konfigurationsdatei angegeben. Im folgenden Beispiel wird der Typ object_rewriter verwendet, um einen Namensfall zu transformieren:

type: object_rewriter
global:
  case:
    all: UPPERCASE

Entitätsauswahl

Wenn Sie entitätsspezifische Transformationen durchführen möchten, geben Sie die Entität in der Konfigurationsdatei an. Alle match-Attribute sind optional. Verwenden Sie nur die match-Attribute, die für eine Transformation erforderlich sind. In der folgenden YAML-Konfigurationsdatei werden Attribute enthüllt, die zugeordnet werden sollen, um bestimmte Entitäten auszuwählen:

match:
  db: <literal_name>
  schema: <literal_name>
  relation: <literal_name>
  attribute: <literal_name>
  dbRegex: <regex>
  schemaRegex: <regex>
  relationRegex: <regex>
  attributeRegex: <regex>

Beschreibung der einzelnen match-Properties:

  • db: die Projekt-ID-Komponente.
  • schema: Die Dataset-Komponente.
  • relation: Die Tabellenkomponente.
  • attribute: Spaltenkomponente Nur gültig für die Attributauswahl
  • dbRegex: ordnet db-Attribut einem regulären Ausdruck (Vorschau) zu.
  • schemaRegex: ordnet schema-Attribute regulären Ausdrücken zu (Vorschau).
  • relationRegex: ordnet relation-Attribute regulären Ausdrücken zu (Vorschau).
  • attributeRegex: ordnet attribute-Attribute regulären Ausdrücken zu Nur gültig für die Attributauswahl (Vorschau).

Die folgende YAML-Konfigurationsdatei gibt beispielsweise die match-Attribute an, um die Tabelle testdb.acme.employee für eine temporäre Tabellentransformation auszuwählen.

type: object_rewriter
relation:
-
  match:
    db: testdb
    schema: acme
    relation: employee
  temporary: true

Sie können die Attribute dbRegex, schemaRegex, relationRegex und attributeRegex verwenden, um reguläre Ausdrücke anzugeben, um einen Teil der Entitäten auszuwählen. Im folgenden Beispiel werden alle Beziehungen vom Schema tmp_schema in testdb zu temporären Änderungen geändert, solange ihr Name mit tmp_ beginnt:

type: object_rewriter
relation:
-
  match:
    schema: tmp_schema
    relationRegex: "tmp_.*"
  temporary: true

Bei den Attributen literal und regex wird zwischen Groß- und Kleinschreibung unterschieden. Sie können den Abgleich der Groß- und Kleinschreibung mithilfe eines regex mit einem deaktivierten Flag i erzwingen, wie im folgenden Beispiel gezeigt:

match:
  relationRegex: "(?-i:<actual_regex>)"

Sie können auch vollständig qualifizierte Entitäten mithilfe einer entsprechenden Kurzstringsyntax angeben. Eine Kurzstring-Syntax erwartet genau 3 (für die Beziehungsauswahl) oder 4 (für die Attributauswahl) Namenssegmente, die durch Punkte getrennt sind, wie im Beispiel testdb.acme.employee. Die Segmente werden dann intern so interpretiert, als würden sie als db, schema, relation oder attribute übergeben. Dies bedeutet, dass Namen wörtlich abgeglichen werden. Daher sind reguläre Ausdrücke in Kurzsyntax nicht zulässig. Das folgende Beispiel zeigt die Verwendung der Kurzstringsyntax zur Angabe einer vollständig qualifizierten Entität in einer YAML-Konfigurationsdatei:

type: object_rewriter
relation:
-
  match : "testdb.acme.employee"
  temporary: true

Wenn eine Tabelle einen Punkt im Namen enthält, können Sie den Namen nicht mit einer kurzen Syntax angeben. In diesem Fall müssen Sie die Objektübereinstimmung verwenden. Im folgenden Beispiel wird die Tabelle testdb.acme.stg.employee in „temporär“ geändert:

type: object_rewriter
relation:
-
  match:
    db: testdb
    schema: acme
    relation: stg.employee
  temporary: true

Die YAML-Konfigurationsdatei akzeptiert key als Alias für match.

Standarddatenbank

Einige Eingabe-SQL-Dialekte, insbesondere Teradata, unterstützen database-name im qualifizierten Namen nicht. In diesem Fall ist es am einfachsten, die Entitäten mit dem Attribut db in match auszuschließen.

Sie können jedoch das Attribut default_database des BigQuery-Migrationsdienstes festlegen und diese Standarddatenbank in match verwenden.

Unterstützte Zielattributtypen

Sie können die YAML-Konfigurationsdatei für Transformationen von Attributtypen verwenden, bei denen Sie den Datentyp einer Spalte vom Quelltyp in einen Zieltyp transformieren. Die YAML-Konfigurationsdatei unterstützt die folgenden Zieltypen:

  • BOOLEAN
  • TINYINT
  • SMALLINT
  • INTEGER
  • BIGINT
  • FLOAT
  • DOUBLE
  • NUMERIC (Unterstützt optionale Genauigkeit und Skalierung, z. B. NUMERIC(18, 2))
  • TIME
  • TIMETZ
  • DATE
  • DATETIME
  • TIMESTAMP
  • TIMESTAMPTZ
  • CHAR (Unterstützt optionale Genauigkeit, z. B. CHAR(42))
  • VARCHAR (Unterstützt optionale Genauigkeit, z. B. VARCHAR(42))

YAML-Konfigurationsbeispiele

In diesem Abschnitt finden Sie Beispiele zum Erstellen verschiedener YAML-Konfigurationsdateien, die Sie mit Ihren SQL-Übersetzungen verwenden können. In jedem Beispiel wird die YAML-Syntax zum Transformieren der SQL-Übersetzung auf bestimmte Weise beschrieben. Außerdem wird eine kurze Beschreibung verwendet. Jedes Beispiel enthält auch den Inhalt einer teradata-input.sql- oder hive-input.sql-Datei und einer bq-output.sql-Datei, sodass Sie die Auswirkungen einer Konfigurations-YAML in einer BigQuery-SQL-Abfrageübersetzung vergleichen können.

In den folgenden Beispielen wird Teradata oder Hive als Eingabe-SQL-Dialekt und BigQuery SQL als Ausgabedialekt verwendet. In den folgenden Beispielen werden auch testdb als Standarddatenbank und testschema als Schemasuchpfad verwendet.

Groß-/Kleinschreibung bei Objektnamen ändern

Die folgende YAML-Konfiguration ändert die Groß- und Kleinschreibung von Objektnamen:

type: object_rewriter
global:
  case:
    all: UPPERCASE
    database: LOWERCASE
    attribute: LOWERCASE

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte in etwa so aussehen:

teradata-input.sql

      create table x(a int);
      select * from x;
    
bq-output.sql

      CREATE TABLE testdb.TESTSCHEMA.X
      (
        a INT64
      )
      ;
      SELECT
          X.a
        FROM
          testdb.TESTSCHEMA.X
      ;
    

Tabelle temporär erstellen

Mit der folgenden Konfigurations-YAML-Datei wird eine reguläre Tabelle in eine temporäre Tabelle geändert:

type: object_rewriter
relation:
  -
    match: "testdb.testschema.x"
    temporary: true

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte in etwa so aussehen:

teradata-input.sql

    create table x(a int);
    
bq-output.sql

    CREATE TEMPORARY TABLE x
    (
      a INT64
    )
    ;
    

Tabelle sitzungsspezifisch machen

Mit der folgenden Konfigurations-YAML-Datei wird eine reguläre Tabelle in eine sitzungsspezifische Tabelle mit einer Ablaufzeit von 60 Sekunden geändert.

type: object_rewriter
relation:
  -
    match: "testdb.testschema.x"
    ephemeral:
      expireAfterSeconds: 60

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte in etwa so aussehen:

teradata-input.sql

    create table x(a int);
    
bq-output.sql

    CREATE TABLE testdb.testschema.x
    (
      a INT64
    )
    OPTIONS(
      expiration_timestamp=timestamp_add(current_timestamp(), interval 60 SECOND)
    );
    

Partitionsablauf festlegen

Mit der folgenden Konfigurations-YAML-Datei wird der Ablauf einer partitionierten Tabelle in 1 Tag geändert:

type: object_rewriter
relation:
  -
    match: "testdb.testschema.x"
    partitionLifetime:
      expireAfterSeconds: 86400

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte in etwa so aussehen:

teradata-input.sql

    create table x(a int, b int) partition by (a);
    
bq-output.sql

    CREATE TABLE testdb.testschema.x
    (
      a INT64,
      b INT64
    )
    CLUSTER BY a
    OPTIONS(
      partition_expiration_days=1
    );
    

Externen Speicherort oder Format für eine Tabelle ändern

Mit der folgenden Konfigurations-YAML-Datei wird der externe Speicherort und die Formation einer Tabelle geändert:

type: object_rewriter
relation:
  -
    match: "testdb.testschema.x"
    external:
      locations: "gs://path/to/department/files"
      format: ORC

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte in etwa so aussehen:

teradata-input.sql

    create table x(a int);
    
bq-output.sql

    CREATE EXTERNAL TABLE testdb.testschema.x
    (
      a INT64
    )
    OPTIONS(
      format='ORC',
      uris=[
        'gs://path/to/department/files'
      ]
    );
    

Tabellenbeschreibung festlegen oder ändern

Mit der folgenden Konfigurations-YAML wird die Beschreibung einer Tabelle festgelegt:

type: object_rewriter
relation:
  -
    match: "testdb.testschema.x"
    description:
      text: "Example description."

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte in etwa so aussehen:

teradata-input.sql

    create table x(a int);
    
bq-output.sql

    CREATE TABLE testdb.testschema.x
    (
      a INT64
    )
    OPTIONS(
      description='Example description.'
    );
    

Tabellenpartitionierung festlegen oder ändern

Mit der folgenden Konfigurations-YAML wird das Partitionierungsschema einer Tabelle geändert:

type: object_rewriter
relation:
  -
    match: "testdb.testschema.x"
    partition:
      simple:
        add: [a]
  -
    match: "testdb.testschema.y"
    partition:
      simple:
        remove: [a]

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte in etwa so aussehen:

teradata-input.sql

    create table x(a date, b int);
    create table y(a date, b int) partition by (a);
    
bq-output.sql

    CREATE TABLE testdb.testschema.x
    (
      a DATE,
      b INT64
    )
    PARTITION BY a;
    CREATE TABLE testdb.testschema.y
    (
      a DATE,
      b INT64
    )
    ;
    

Tabellen-Clustering festlegen oder ändern

Mit der folgenden YAML-Konfiguration ändert sich das Clustering-Schema einer Tabelle:

type: object_rewriter
relation:
  -
    match: "testdb.testschema.x"
    clustering:
      add: [a]
  -
    match: "testdb.testschema.y"
    clustering:
      remove: [b]

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte in etwa so aussehen:

hive-input.sql

    create table x(a int, b int);
    create table y(a int, b int) clustered by (b) into 16 buckets;
    
bq-output.sql

    CREATE TABLE testdb.testschema.x
    (
      a INT64,
      b INT64
    )
    CLUSTER BY a;
    CREATE TABLE testdb.testschema.y
    (
      a INT64,
      b INT64
    )
    ;
    

Typ eines Spaltenattributs ändern

Mit der folgenden Konfigurations-YAML-Datei wird der Datentyp für ein Attribut einer Spalte geändert:

type: object_rewriter
attribute:
  -
    match:
      db: testdb
      schema: testschema
      attributeRegex: "a+"
    type:
      target: NUMERIC(10,2)

Sie können den Quelldatentyp in einen beliebigen unterstützten Zielattributtyp umwandeln.

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte in etwa so aussehen:

teradata-input.sql

    create table x(a int, b int, aa int);
    
bq-output.sql

    CREATE TABLE testdb.testschema.x
    (
      a NUMERIC(31, 2),
      b INT64,
      aa NUMERIC(31, 2)
    )
    ;
    

Verbindung zum externen Data Lake hinzufügen

Mit der folgenden YAML-Konfigurationsdatei wird die Quelltabelle als externe Tabelle gekennzeichnet. Diese verweist auf Daten, die in einem externen Data Lake gespeichert sind und durch eine Data-Lake-Verbindung angegeben werden.

type: object_rewriter
relation:
-
  key: "testdb.acme.employee"
  external:
    connection_id: "connection_test"

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte in etwa so aussehen:

hive-input.sql

    CREATE TABLE x
    (
      a VARCHAR(150),
      b INT
    );
    
bq-output.sql

    CREATE EXTERNAL TABLE x
    (
      a STRING,
      b INT64
    )
    WITH CONNECTION `connection_test`
    OPTIONS(
    );
    

Zeichencodierung einer Eingabedatei ändern

Standardmäßig versucht der BigQuery Migration Service, die Zeichencodierung von Eingabedateien automatisch zu erkennen. Wenn BigQuery Migration Service die Codierung einer Datei falsch identifiziert, können Sie die YAML-Konfigurationsdatei verwenden, um die Zeichencodierung explizit anzugeben.

Die folgende Konfigurations-YAML gibt die explizite Zeichencodierung der Eingabedatei als ISO-8859-1 an.

type: experimental_input_formats
formats:
- source:
    pathGlob: "*.sql"
  contents:
    raw:
      charset: iso-8859-1

Globale Typkonvertierung

Mit der folgenden YAML-Konfigurationsdatei wird ein Datentyp in allen Skripts zu einem anderen geändert und ein Quelldatentyp angegeben, der im transpilierten Skript vermieden werden soll. Dies unterscheidet sich von der Konfiguration Spaltenattributstyp ändern, bei der nur der Datentyp für ein einzelnes Attribut geändert wird.

BigQuery unterstützt die folgenden Datentyp-Konvertierungen:

  • DATETIME bis TIMESTAMP
  • TIMESTAMP nach DATETIME
  • TIMESTAMP WITH TIME ZONE nach DATETIME
  • CHAR bis VARCHAR

Im folgenden Beispiel konvertiert die YAML-Konfigurationsdatei den Datentyp DATETIME in TIMESTAMP.

type: experimental_object_rewriter
global:
  typeConvert:
    timestamp: DATETIME

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte in etwa so aussehen:

teradata-input.sql

      create table x(a timestamp);
    
bq-output.sql

      CREATE TABLE x
      (
        a TIMESTAMP
      )
      ;
    

Anweisungsänderung auswählen

Mit der folgenden YAML-Konfigurationsdatei werden die Klauseln „Sternprojektion“, GROUP BY und ORDER BY in SELECT-Anweisungen geändert.

starProjection unterstützt die folgenden Konfigurationen:

  • ALLOW
  • PRESERVE (Standardeinstellung)
  • EXPAND

groupBy und orderBy unterstützen die folgenden Konfigurationen:

  • EXPRESSION
  • ALIAS
  • INDEX

Im folgenden Beispiel konfiguriert die YAML-Konfigurationsdatei die Sternprojektion auf EXPAND.

type: experimental_statement_rewriter
select:
  starProjection: EXPAND

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte in etwa so aussehen:

teradata-input.sql

      create table x(a int, b TIMESTAMP);
      select * from x;
    
bq-output.sql

      CREATE TABLE x
      (
        a INT64,
        b DATETIME
      )
      ;
      SELECT
          x.a
          x.b
        FROM
          x
      ;
    

UDF-Spezifikation

Die folgende YAML-Konfiguration gibt die Signatur von benutzerdefinierten Funktionen (UDFs) an, die in den Quellskripts verwendet werden. Ähnlich wie Metadaten-ZIP-Dateien können UDF-Definitionen für eine genauere Übersetzung von Eingabeskripts beitragen.

type: metadata
udfs:
  - "date parse_short_date(dt int)"

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte in etwa so aussehen:

teradata-input.sql

      create table x(dt int);
      select parse_short_date(dt) + 1 from x;
    
bq-output.sql

      CREATE TABLE x
      (
        dt INT64
      )
      ;
      SELECT
          date_add(parse_short_date(x.dt), interval 1 DAY)
        FROM
          x
      ;
    

Strengheit mit Dezimalgenauigkeit festlegen

Standardmäßig erhöht BigQuery Migration Service die numerische Genauigkeit auf die höchste Genauigkeit, die für eine bestimmte Skalierung verfügbar ist. Das folgende Konfigurations-YAML überschreibt dieses Verhalten, indem die Genauigkeitsstriktheit so konfiguriert wird, dass die Dezimalgenauigkeit der Quellanweisung beibehalten wird.

type: experimental_statement_rewriter
common:
  decimalPrecision: STRICT

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte in etwa so aussehen:

teradata-input.sql

      create table x(a decimal(3,0));
    
bq-output.sql

      CREATE TABLE x
      (
        a NUMERIC(3)
      )
      ;
    

Zuordnung des Ausgabenamens

Sie können die YAML-Konfigurationsdatei verwenden, um SQL-Objektnamen zuzuordnen. Je nach zugeordnetem Objekt können Sie verschiedene Teile des Namens ändern.

Zuordnung statischer Namen

Verwenden Sie die statische Namenszuordnung, um den Namen einer Entität zuzuordnen. Wenn Sie nur bestimmte Teile des Namens ändern, aber andere Teile des Namens beibehalten möchten, fügen Sie nur die Teile hinzu, die geändert werden müssen.

Mit der folgenden Konfigurations-YAML wird der Name der Tabelle von my_db.my_schema.my_table in my_new_db.my_schema.my_new_table geändert.

type: experimental_object_rewriter
relation:
-
  match: "my_db.my_schema.my_table"
  outputName:
    database: "my_new_db"
    relation: "my_new_table"

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte in etwa so aussehen:

teradata-input.sql

      create table my_db.my_schema.my_table(a int);
    
bq-output.sql

      CREATE TABLE my_new_db.my_schema.my_new_table
      (
        a INT64
      )
    

Dynamische Namenszuordnung

Verwenden Sie die dynamische Namenszuordnung, um mehrere Objekte gleichzeitig zu ändern, und erstellen Sie neue Namen basierend auf den zugeordneten Objekten.

Mit der folgenden YAML-Konfigurationsdatei wird der Name aller Tabellen geändert. Dabei wird das Präfix stg_ zu den Tabellen hinzugefügt, die zum Schema staging gehören, und dann werden diese Tabellen in das Schema production verschoben.

type: experimental_object_rewriter
relation:
-
  match:
    schema: staging
  outputName:
    schema: production
    relation: "stg_${relation}"

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte in etwa so aussehen:

teradata-input.sql

      create table staging.my_table(a int);
    
bq-output.sql

      CREATE TABLE production.stg_my_table
      (
        a INT64
      )
      ;
    

Standard-Datenbank und Schemasuchepfad angeben

In der folgenden YAML-Konfigurationsdatei werden eine Standarddatenbank und ein Schemasuchpfad angegeben.

type: environment
session:
  defaultDatabase: myproject
  schemaSearchPath: [myschema1, myschema2]

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte in etwa so aussehen:

teradata-input.sql

      SELECT * FROM database.table
      SELECT * FROM table1
    
bq-output.sql

      SELECT * FROM myproject.database.table.
      SELECT * FROM myproject.myschema1.table1
    

Umschreibung des globalen Ausgabenamens

Mit der folgenden Konfigurations-YAML werden die Ausgabenamen aller Objekte (Datenbank, Schema, Beziehung und Attribute) im Skript gemäß den konfigurierten Regeln geändert.

type: experimental_object_rewriter
global:
  outputName:
    regex:
      - match: '\s'
        replaceWith: '_'
      - match: '>='
        replaceWith: 'gte'
      - match: '^[^a-zA-Z_].*'
        replaceWith: '_$0'

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte in etwa so aussehen:

teradata-input.sql

      create table "test special chars >= 12"("42eid" int, "custom column" varchar(10));
    
bq-output.sql

      CREATE TABLE test_special_chars_employees_gte_12
      (
        _42eid INT64,
        custom_column STRING
      )
      ;
    

Mehrere YAML-Konfigurationen anwenden

Wenn Sie eine YAML-Konfigurationsdatei in einer Batch- oder interaktiven SQL-Übersetzung angeben, können Sie mehrere YAML-Konfigurationsdateien in einem einzigen Übersetzungsjob auswählen, um mehrere Transformationen widerzuspiegeln. Wenn mehrere Konfigurationen in Konflikt stehen, wird eine Transformation möglicherweise durch eine andere überschrieben. Wir empfehlen, in jeder Datei verschiedene Arten von Konfigurationseinstellungen zu verwenden, um Konflikte mit Transformationen im selben Übersetzungsjob zu vermeiden.

Im folgenden Beispiel werden zwei separate YAML-Konfigurationsdateien aufgelistet, die für einen einzelnen SQL-Übersetzungsjob bereitgestellt wurden. Eine zum Ändern des Attributs einer Spalte und die andere zum Festlegen der Tabelle als temporärer Job:

change-type-example.config.yaml:

type: object_rewriter
attribute:
  -
    match: "testdb.testschema.x.a"
    type:
      target: NUMERIC(10,2)

make-temp-example.config.yaml:

type: object_rewriter
relation:
  -
    match: "testdb.testschema.x"
    temporary: true

Eine SQL-Übersetzung mit diesen beiden YAML-Konfigurationsdateien könnte so aussehen:

teradata-input.sql

    create table x(a int);
    
bq-output.sql

    CREATE TEMPORARY TABLE x
    (
      a NUMERIC(31, 2)
    )
    ;