Detalles y opciones de la migración de Teradata

En este documento, se describen más detalles, opciones y características Beta cuando se usa el Servicio de transferencia de datos de BigQuery para migrar datos de Teradata a BigQuery.

Archivo de esquema personalizado

Realiza transformaciones con un archivo de esquema

Como parte de la migración, puedes especificar un archivo de esquema personalizado para cambiar los campos name de cualquier objeto y agregar el arreglo usageType a cualquier columna. Esto es especialmente útil para incluir información adicional sobre una tabla (como las particiones) que, si no se especificara ningún archivo de esquema, se perdería en la migración.

Se admiten los siguientes tipos de uso:

  • PARTITIONING: solo una columna por tabla se puede anotar con este usageType. El campo de tipo de una columna debe ser DATE o TIMESTAMP. Esta columna se usará para la definición de tabla particionada con el objeto tablas.
  • CLUSTERING: se pueden anotar varias columnas en una tabla con este useType. Los tipos de columna deben seguir las restricciones para los agrupamiento en clústeres en BigQuery. Si se especifica un campo PARTITIONING para la misma tabla, BigQuery usará estas columnas a fin de crear una tabla agrupada. Solo las columnas con los tipos INT64, STRING, DATE, TIMESTAMP, BOOL o NUMERIC se pueden marcar con este usageType.
  • COMMIT_TIMESTAMP: solo se puede anotar una columna por tabla con este usageType. Usa este usageType para anotar una columna de marca de tiempo de actualización. Esta columna se usará para extraer filas creadas o actualizadas desde la última ejecución de la transferencia. Debe tener un tipo TIMESTAMP o DATE.

Ejemplo de archivo de esquema personalizado


{
  "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"]
            }
          ]
        }
      ]
    }
  ]
}

Para obtener más información sobre cómo se particionan o agrupan las tablas en una transferencia, consulta la sección transferencias incrementales.

Asignación de tipos de datos de Teradata a BigQuery

Tipo de Teradata Tipo de BigQuery Diferencias entre los tipos
INTEGER INTEGER
SMALLINT INTEGER
BYTEINT INTEGER
BIGINT INTEGER
DECIMAL NUMERIC El tipo NUMERIC de BigQuery tiene 38 dígitos de precisión y 9 dígitos decimales de escala.
FLOAT NUMERIC El tipo NUMERIC de BigQuery tiene 38 dígitos de precisión y 9 dígitos decimales de escala.
NUMERIC NUMERIC El tipo NUMERIC de BigQuery tiene 38 dígitos de precisión y 9 dígitos decimales de escala.
NUMBER NUMERIC El tipo NUMERIC de BigQuery tiene 38 dígitos de precisión y 9 dígitos decimales de escala.
REAL FLOAT64
CHAR STRING
CHARACTER STRING
VARCHAR STRING
CLOB STRING
JSON STRING
BLOB BYTES
BYTE BYTES
VARBYTE BYTES
DATE DATE
TIME TIME El TIME de BigQuery está en UTC. El Servicio de transferencia de datos de BigQuery extraerá los valores respectivos en formato UTC.
TIMETZ TIME El TIME de BigQuery está en UTC. El Servicio de transferencia de datos de BigQuery extraerá los valores respectivos en formato UTC.
TIMESTAMP TIMESTAMP La TIMESTAMP de BigQuery está en UTC. El Servicio de transferencia de datos de BigQuery extraerá los valores respectivos en formato UTC.

La precisión de TIMESTAMP se limita a microsegundos.
TIMESTAMPTZ TIMESTAMP La TIMESTAMP de BigQuery está en UTC. El Servicio de transferencia de datos de BigQuery extraerá los valores respectivos en formato UTC.

La precisión de TIMESTAMP se limita a microsegundos.
ARRAY STRING
MULTIDIMENSIONALARRAY STRING
HORA INTEGER
MINUTO INTEGER
SECOND INTEGER
DÍA INTEGER
MONTH INTEGER
YEAR INTEGER
PERIODDATE STRING
PERIODTIMESTAMPTZ STRING
PERIODTIMESTAMP STRING
PERIODTIME STRING
PERIODTIMETZ STRING
USERDEFINED STRING
XML STRING
ANYTYPE STRING

Transferencias incrementales

El Servicio de transferencia de datos de BigQuery admite transferencias periódicas de filas nuevas y actualizadas ("transferencias incrementales"). Cuando configures una transferencia, puedes designarla como a pedido o de forma incremental en las opciones de programación.

La tabla de origen en Teradata debe tener una columna de seguimiento de cambios con el tipo de datos TIMESTAMP.

En las transferencias incrementales, la primera transferencia siempre crea una instantánea de tabla en BigQuery. Todas las transferencias posteriores capturarán, transferirán y agregarán datos nuevos y modificados a la tabla existente en BigQuery. Esto significa que, para las filas modificadas, la tabla de BigQuery podría tener filas duplicadas con valores antiguos y nuevos.

Para cada ejecución de transferencia, se guarda una marca de tiempo de la ejecución de la transferencia. Para cada ejecución de transferencia posterior, un agente recibe la marca de tiempo de una ejecución de transferencia anterior (T1) y una marca de tiempo de cuándo comenzó la ejecución de transferencia actual (T2).

Para cada transferencia después de la ejecución inicial, el agente de migración extraerá los datos con la siguiente lógica por tabla:

  • Si un objeto de tabla en un archivo de esquema no tiene una columna con un usageType de COMMIT_TIMESTAMP, se omite la tabla.
  • Si una tabla tiene una columna con el usageType de COMMIT_TIMESTAMP, todas las filas con una marca de tiempo entre T1 y T2 se extraen y se anexan a la tabla existente en BigQuery.

Operaciones DDL/DML en transferencias incrementales

Operación de Teradata Tipo Asistencia de Teradata a BigQuery
CREAR DDL Si el nombre de la tabla coincide con el patrón determinado, se crea una nueva instantánea completa para la tabla en BigQuery.
DROP DDL No compatible
ALTER (CAMBIAR NOMBRE) DDL Si el nombre de una tabla coincide con un patrón determinado, se crea una instantánea completa para la tabla con el nuevo nombre en BigQuery. La instantánea anterior no se borra de BigQuery. El usuario no recibe ninguna notificación sobre la tabla con el nombre cambiado.
INSERT DML Se agregarán filas nuevas a la tabla de BigQuery que coincida.
ACTUALIZAR DML Las filas no se modifican. Las filas se agregan a la tabla de BigQuery coincidente como nuevas, como un INSERT. Las filas de las transferencias anteriores no se actualizan ni se borran.
UNIR DML No compatible. Ver en su lugar INSERT, UPDATE y DELETE.
BORRAR DML No compatible

Qué sigue