Detalles de la configuración
Gestión de usuarios y roles
default; en su lugar, cree uno específico para usarlo únicamente con este
destino de Fivetran. Los siguientes comandos, ejecutados con el usuario default, crearán un nuevo fivetran_user con los
privilegios necesarios.
fivetran_user a determinadas bases de datos.
Por ejemplo, al ejecutar la siguiente sentencia, restringimos el acceso a la base de datos default:
Configuración avanzada
Esta configuración es completamente opcional. Si no se carga ningún archivo, el destino usa valores predeterminados razonables que funcionan bien para la mayoría de los casos de uso.
Todos los campos son opcionales. Si no se especifica un campo, se usa el valor predeterminado.
Si un valor está fuera del rango permitido, el destino informará de un error durante la sincronización.
Los campos desconocidos se ignoran silenciosamente (se registra una advertencia) y no causan errores, lo que permite la compatibilidad con versiones futuras cuando se añaden nuevas configuraciones.
Ejemplo:
Asignación de conversión de tipos
- BINARY, XML, LOCALTIME y JSON se almacenan como String porque el tipo
Stringde ClickHouse puede representar un conjunto arbitrario de bytes. El destino añade un comentario a la columna para indicar el tipo de dato original. El tipo de dato JSON de ClickHouse no se usa, ya que fue marcado como obsoleto y nunca se recomendó para uso en producción. ** NOTA: Incidencia para hacer seguimiento del soporte del tipo LOCALTIME: clickhouse-fivetran-destination #15.
Rangos de valores de fecha y hora
- El límite superior de INSTANT es 2262-04-11 23:47:16 porque DateTime64(9) almacena nanosegundos desde la época Unix como int64, y 2^63 - 1 nanosegundos corresponde a esta fecha. ClickHouse admite DateTime64 con precisión <= 9 hasta 2299-12-31 23:59:59.
- El límite superior de LOCALDATETIME también está limitado a 2262-04-11 23:47:16 debido a un error conocido en el driver de Go para ClickHouse, donde se llama a
time.Time.UnixNano()para todas las precisiones de DateTime64 antes del escalado, lo que provoca un overflow de int64 para fechas posteriores a 2262 incluso con precisión 0.
Tablas de destino
SharedReplacingMergeTree), con control de versiones mediante la columna _fivetran_synced.
Cada columna, excepto las claves primarias (de ordenación) y las columnas de metadatos de Fivetran, se crea
como Nullable(T), donde T es un
tipo de ClickHouse Cloud basado en la asignación de tipos de datos.
La estructura de la tabla varía según el
modo de sincronización
configurado para el conector: eliminación lógica (predeterminado) o modo de historial (SCD Type 2).
Modo de eliminación lógica
Una única clave primaria en la tabla de origen
users tiene como clave primaria la columna id (INT) y una columna normal name (STRING).
La tabla de destino se definirá de la siguiente manera:
id se utiliza como clave de ordenación de la tabla.
Múltiples claves primarias en la tabla de origen
items con las columnas de clave primaria id (INT) y name (STRING), además de una columna adicional normal description (STRING). La tabla de destino se definirá de la siguiente manera:
id y name se seleccionan como claves de ordenación de la tabla.
Sin claves primarias en la tabla de origen
_fivetran_id.
Considere una tabla events que en el origen solo tiene las columnas event (STRING) y timestamp (LOCALDATETIME).
La tabla de destino en ese caso es la siguiente:
_fivetran_id es único y no hay otras opciones de clave primaria, se utiliza como clave de ordenación para la tabla.
Modo de historial (SCD Type 2)
La columna
_fivetran_start siempre se incluye en la cláusula ORDER BY como último elemento de la clave de ordenación compuesta.
Esto permite que varias versiones del mismo registro (con distintas horas de inicio) coexistan en la tabla.
Cuando se actualiza un registro:
- El valor de
_fivetran_endde la versión anterior se establece en el valor de_fivetran_startde la nueva versión menos un nanosegundo, y_fivetran_activese establece enfalse. - La nueva versión se inserta con
_fivetran_activeestablecido entruey_fivetran_endestablecido en2262-04-11 23:47:16.000000000(el valor máximo deDateTime64(9)).
Una única clave primaria en la tabla de origen
users tiene una columna de clave primaria id (INT) y columnas regulares name (STRING) y status (STRING).
La tabla de destino en modo de historial se definirá de la siguiente manera:
id y _fivetran_start forman la clave de ordenación compuesta.
Tras unas cuantas sincronizaciones, la tabla podría contener los siguientes datos:
El registro
id=1 tiene dos versiones: la original (name 1, inactiva) y la actualizada (name 11, activa).
El registro id=2 tiene solo una versión, que está activa actualmente.
Múltiples claves primarias en la tabla de origen
ORDER BY, junto con _fivetran_start como último elemento.
Por ejemplo, la tabla de origen items tiene las columnas de clave primaria id (INT) y name (STRING), además de una
columna adicional normal description (STRING). La tabla de destino en modo de historial se definirá de la siguiente manera:
id, name y _fivetran_start forman la clave de ordenación compuesta.
Sin claves primarias en la tabla de origen
_fivetran_id,
y _fivetran_start se añade a la clave de ordenación.
Considere una tabla events que solo tiene las columnas event (STRING) y timestamp (LOCALDATETIME) en el origen.
La tabla de destino en modo de historial es la siguiente:
_fivetran_id y _fivetran_start constituyen la clave de ordenación compuesta.
Seleccionar la versión más reciente de los datos sin duplicados
SharedReplacingMergeTree realiza la deduplicación de datos en segundo plano
solo durante los merges, en un momento desconocido.
Sin embargo, es posible seleccionar ad hoc la versión más reciente de los datos sin duplicados con la palabra clave FINAL:
Reintentos ante fallos de red
SharedReplacingMergeTree.