SQL-Übersetzungen mithilfe von YAML-Konfigurationsdateien transformieren

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

Wenn Sie den interaktiven BigQuery-SQL-Übersetzer verwenden oder eine Batch-SQL-Übersetzung durchführen, können Sie YAML-Konfigurationsdateien bereitstellen, um eine SQL-Abfrageübersetzung zu ändern. Mithilfe von YAML-Konfigurationsdateien können Sie bei der Übersetzung von SQL-Abfragen aus Ihrer Quelldatenbank weitere Anpassungen vornehmen.

Sie können eine YAML-Konfigurationsdatei zur Verwendung in einer SQL-Übersetzung auf folgende Weisen angeben:

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

Anforderungen an die YAML-Konfigurationsdatei

Prüfen Sie vor dem Erstellen einer YAML-Konfigurationsdatei die folgenden Informationen, um sicherzustellen, dass Ihre YAML-Datei für die Verwendung 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 zum 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 zum Transformieren eines Namensfalls verwendet:

type: object_rewriter
global:
  case:
    all: UPPERCASE

Entitätsauswahl

Für entitätsspezifische Transformationen geben Sie die Entität in der Konfigurationsdatei an. Alle match-Attribute sind optional. verwenden Sie nur die für eine Transformation erforderlichen match-Attribute. 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-Attribute:

  • db: Die Komponente "project_id".
  • schema: Die Dataset-Komponente.
  • relation: Die Tabellenkomponente.
  • attribute: Die Spaltenkomponente. Nur für die Attributauswahl gültig
  • 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 Gilt 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 und eine Teilmenge von Entitäten auszuwählen. Im folgenden Beispiel werden alle Beziehungen vom tmp_schema-Schema in testdb zu temporär geändert, solange ihr Name mit tmp_ beginnt:

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

Bei den Literal- und regex-Attributen wird die Groß- und Kleinschreibung nicht berücksichtigt. Sie können die Groß- und Kleinschreibung berücksichtigen, indem Sie regex mit einem deaktivierten i-Flag verwenden, wie im folgenden Beispiel gezeigt:

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

Sie können auch vollständig qualifizierte Entitäten mit einer entsprechenden Kurzstring-Syntax angeben. Eine Kurzstring-Syntax erwartet genau drei (für die Beziehungsauswahl) oder vier (für die Attributauswahl) durch Punkte getrennte Namenssegmente, wie im Beispiel testdb.acme.employee. Die Segmente werden dann intern so interpretiert, als wären sie db, schema, relation und attribute respektive übergeben worden. Das heißt, dass Namen exakt abgeglichen werden. Daher sind reguläre Ausdrücke in der abgekürzten Syntax nicht zulässig. Das folgende Beispiel zeigt die Verwendung der Kurzstring-Syntax zur Angabe einer voll 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 in einer abgekürzten Syntax angeben. In diesem Fall müssen Sie eine Objektübereinstimmung verwenden. Im folgenden Beispiel wird die Tabelle testdb.acme.stg.employee zu 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, Entitäten abzugleichen, indem das Attribut db in match weggelassen wird.

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 verwenden, um Attributtyptransformationen durchzuführen, bei denen Sie den Datentyp einer Spalte vom Quelltyp in einen Zieltyp umwandeln. 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

Dieser Abschnitt enthält Beispiele zum Erstellen verschiedener YAML-Konfigurationsdateien für die Verwendung mit Ihren SQL-Übersetzungen. In jedem Beispiel wird die YAML-Syntax zum Transformieren Ihrer SQL-Übersetzung auf bestimmte Weisen beschrieben, und zwar mit einer kurzen Beschreibung. 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 wird auch testdb als Standarddatenbank und testschema als Schemasuchpfad verwendet.

Objektnamen ändern

Mit der folgenden YAML-Konfigurationsdatei wird die Groß- oder Kleinschreibung von Objektnamen geändert:

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

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte 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 als temporär festlegen

Mit der folgenden YAML-Konfigurationsdatei wird eine reguläre Tabelle in eine temporäre Tabelle umgewandelt:

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

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte 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 YAML-Konfigurationsdatei 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 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 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 YAML-Konfigurationsdatei werden der externe Speicherort und die Formatierung für eine 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 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 YAML-Konfigurationsdatei 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 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 YAML-Konfigurationsdatei 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 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-Konfigurationsdatei wird das Clustering-Schema einer Tabelle geändert:

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 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 YAML-Konfigurationsdatei 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 der unterstützten Zielattributtypen umwandeln.

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte 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, die auf in einem externen Data Lake gespeicherte Daten verweist. Der Data Lake wird durch eine Data-Lake-Verbindung angegeben.

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

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte 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 der BigQuery Migration Service die Codierung einer Datei falsch erkennt, können Sie die Zeichencodierung mit einer YAML-Konfigurationsdatei explizit angeben.

Die folgende YAML-Konfigurationsdatei 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

Die folgende YAML-Konfigurationsdatei ändert einen Datentyp in allen Skripts in einen anderen. Außerdem wird 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 Datentypkonvertierungen:

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

Im folgenden Beispiel wandelt die YAML-Konfiguration den Datentyp DATETIME in TIMESTAMP um.

type: experimental_object_rewriter
global:
  typeConvert:
    timestamp: DATETIME

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte 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 (Standard)
  • EXPAND

groupBy und orderBy unterstützen die folgenden Konfigurationen:

  • EXPRESSION
  • ALIAS
  • INDEX

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

type: experimental_statement_rewriter
select:
  starProjection: EXPAND

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte 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-Konfigurationsdatei gibt die Signatur der benutzerdefinierten Funktionen (UDFs) an, die in den Quellskripts verwendet werden. Ähnlich wie Metadaten-ZIP-Dateien können UDF-Definitionen eine genauere Übersetzung von Eingabeskripts ermöglichen.

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

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte 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
      ;
    

Strenge der Dezimalpräzision festlegen

Standardmäßig erhöht der 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 so aussehen:

teradata-input.sql
      create table x(a decimal(3,0));
    
bq-output.sql
      CREATE TABLE x
      (
        a NUMERIC(3)
      )
      ;
    

Zuordnung von Ausgabenamen

Sie können die YAML-Konfigurationsdatei verwenden, um SQL-Objektnamen zuzuordnen. Sie können verschiedene Teile des Namens ändern, je nachdem, welches Objekt zugeordnet wird.

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 ein, die geändert werden müssen.

Mit der folgenden YAML-Konfigurationsdatei 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 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 neue Namen anhand der zugeordneten Objekte zu erstellen.

Mit der folgenden YAML-Konfigurationsdatei wird der Name aller Tabellen geändert. Dazu wird den Tabellen, die zum Schema staging gehören, das Präfix stg_ hinzugefügt. Anschließend 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 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

Die folgende YAML-Konfigurationsdatei gibt eine Standarddatenbank und einen Schemasuchpfad an.

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

Eine SQL-Übersetzung mit dieser YAML-Konfigurationsdatei könnte 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 YAML-Konfigurationsdatei 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 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 einzelnen Übersetzungsjob auswählen, um verschiedene Transformationen widerzuspiegeln. Wenn mehrere Konfigurationen in Konflikt stehen, kann eine Transformation eine andere überschreiben. Wir empfehlen, in jeder Datei unterschiedliche Konfigurationseinstellungen zu verwenden, um widersprüchliche 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 eine, um die Tabelle als temporär zu bestimmen:

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)
    )
    ;