Détails de la configuration
Gestion des utilisateurs et des rôles
default ; créez plutôt un utilisateur dédié à utiliser uniquement avec cette destination Fivetran. Les commandes suivantes, exécutées avec l’utilisateur default, créeront un nouvel utilisateur fivetran_user avec les privilèges
requis.
fivetran_user l’accès à certaines bases de données.
Par exemple, en exécutant l’instruction suivante, nous limitons l’accès à la base de données default :
Configuration avancée
Cette configuration est entièrement facultative. Si aucun fichier n’est importé, la destination utilise des paramètres par défaut adaptés à la plupart des cas d’usage.
Tous les champs sont facultatifs. Si un champ n’est pas spécifié, la valeur par défaut est utilisée.
Si une valeur est en dehors de la plage autorisée, la destination signalera une erreur pendant la synchronisation.
Les champs inconnus sont ignorés sans provoquer d’erreur (un avertissement est consigné), ce qui garantit la compatibilité ascendante lorsque de nouveaux paramètres sont ajoutés.
Exemple :
Correspondance de conversion des types
- BINARY, XML, LOCALTIME et JSON sont stockés sous forme de String, car le type
Stringde ClickHouse peut représenter un ensemble arbitraire d’octets. La destination ajoute un commentaire de colonne pour indiquer le type de données d’origine. Le type de données ClickHouse JSON n’est pas utilisé, car il a été marqué comme obsolète et n’a jamais été recommandé pour un usage en production. ** REMARQUE : ticket de suivi de la prise en charge du type LOCALTIME : clickhouse-fivetran-destination #15.
Plages de valeurs des dates et heures
- La borne supérieure de INSTANT est 2262-04-11 23:47:16, car DateTime64(9) stocke les nanosecondes depuis l’epoch sous forme d’int64, et 2^63 - 1 nanosecondes correspondent à cette date. ClickHouse lui-même prend en charge DateTime64 avec une précision <= 9 jusqu’à 2299-12-31 23:59:59.
- La borne supérieure de LOCALDATETIME est également limitée à 2262-04-11 23:47:16 en raison d’un bug connu dans le driver Go ClickHouse, où
time.Time.UnixNano()est appelé pour toutes les précisions de DateTime64 avant la mise à l’échelle, ce qui provoque un overflow d’int64 pour les dates postérieures à 2262, même avec une précision de 0.
Tables de destination
SharedReplacingMergeTree), versionné par la colonne _fivetran_synced.
Chaque colonne, à l’exception des clés primaires (de tri) et des colonnes de métadonnées Fivetran, est créée
en tant que Nullable(T), où T est un
type ClickHouse Cloud basé sur le mappage des types de données.
La structure de la table varie selon le
mode de synchronisation
configuré pour le connecteur : suppression logique (par défaut) ou mode d’historisation (SCD Type 2).
Mode de suppression logique
Clé primaire unique dans la table source
users comporte une colonne de clé primaire id (INT) et une colonne classique name (STRING).
La table de destination sera définie comme suit :
id est utilisée comme clé de tri de la table.
Plusieurs clés primaires dans la table source
items comporte les colonnes de clé primaire id (INT) et name (STRING), ainsi qu’une colonne supplémentaire ordinaire description (STRING). La table de destination sera définie comme suit :
id et name sont retenues comme clés de tri de la table.
Aucune clé primaire dans la table source
_fivetran_id.
Prenons une table events qui, dans la source, ne contient que les colonnes event (STRING) et timestamp (LOCALDATETIME).
La table de destination est alors la suivante :
_fivetran_id est unique et qu’aucune autre clé primaire n’est possible, il est utilisé comme clé de tri de la table.
Mode d’historisation (SCD Type 2)
La colonne
_fivetran_start est toujours incluse dans la clause ORDER BY, comme dernier élément de la clé de tri composite.
Cela permet à plusieurs versions d’un même enregistrement (avec des horodatages de début différents) de coexister dans la table.
Lorsqu’un enregistrement est mis à jour :
- La valeur
_fivetran_endde la version précédente est définie sur la valeur_fivetran_startde la nouvelle version moins une nanoseconde, et_fivetran_activeest défini surfalse. - La nouvelle version est insérée avec
_fivetran_activedéfini surtrueet_fivetran_enddéfini sur2262-04-11 23:47:16.000000000(la valeur maximale deDateTime64(9)).
Une seule clé primaire dans la table source
users possède une colonne de clé primaire id (INT) ainsi que des colonnes ordinaires name (STRING) et status (STRING).
La table de destination en mode d’historisation sera définie comme suit :
id et _fivetran_start forment la clé de tri composite.
Après quelques synchronisations, la table peut contenir les données suivantes :
L’enregistrement
id=1 a deux versions : la version d’origine (name 1, inactive) et la version mise à jour (name 11, active).
L’enregistrement id=2 n’a qu’une seule version, qui est actuellement active.
Plusieurs clés primaires dans la table source
ORDER BY, avec _fivetran_start comme dernier élément.
Par exemple, supposons une table source items avec les colonnes de clé primaire id (INT) et name (STRING), ainsi qu’une
colonne ordinaire supplémentaire description (STRING). La table de destination en mode d’historisation sera définie comme suit :
id, name et _fivetran_start forment la clé de tri composite.
Aucune clé primaire dans la table source
_fivetran_id,
et _fivetran_start sera ajouté à la clé de tri.
Prenons une table events qui, dans la table source, ne comporte que les colonnes event (STRING) et timestamp (LOCALDATETIME).
La table de destination en mode d’historisation est la suivante :
_fivetran_id et _fivetran_start constituent la clé de tri composite.
Sélection de la version la plus récente des données sans doublons
SharedReplacingMergeTree effectue une déduplication des données en arrière-plan
uniquement lors des fusions, à un moment imprévisible.
Cependant, il est possible de sélectionner à la demande la version la plus récente des données sans doublons avec le mot-clé FINAL :
Nouvelles tentatives en cas de défaillances réseau
SharedReplacingMergeTree.