Detalhes da configuração
Gerenciamento de usuários e funções
default; em vez disso, crie um usuário dedicado para ser usado exclusivamente com este
destino do Fivetran. Os comandos a seguir, executados com o usuário default, criarão um novo fivetran_user com os
privilégios necessários.
fivetran_user a determinados bancos de dados.
Por exemplo, ao executar a instrução a seguir, restringimos o acesso ao banco de dados default:
Configuração avançada
Essa configuração é totalmente opcional. Se nenhum arquivo for enviado, o destino usará valores padrão adequados, que funcionam bem para a maioria dos casos de uso.
Todos os campos são opcionais. Se um campo não for especificado, o valor padrão será usado.
Se um valor estiver fora da faixa permitida, o destino gerará um erro durante a sincronização.
Campos desconhecidos são ignorados silenciosamente (um aviso é registrado no log) e não causam erros, o que permite compatibilidade futura quando novas configurações forem adicionadas.
Exemplo:
Mapeamento de conversão de tipos
- BINARY, XML, LOCALTIME e JSON são armazenados como String porque o tipo
Stringdo ClickHouse pode representar um conjunto arbitrário de bytes. O destination adiciona um comentário na coluna para indicar o tipo de dados original. O tipo de dados JSON do ClickHouse não é usado, pois foi marcado como obsoleto e nunca foi recomendado para uso em produção. ** OBSERVAÇÃO: Issue para acompanhar o suporte ao tipo LOCALTIME: clickhouse-fivetran-destination #15.
Intervalos de valores de data e hora
- O limite superior de INSTANT é 2262-04-11 23:47:16 porque DateTime64(9) armazena nanossegundos desde o epoch como int64, e 2^63 - 1 nanossegundos correspondem a essa data. O próprio ClickHouse suporta DateTime64 com precisão <= 9 até 2299-12-31 23:59:59.
- O limite superior de LOCALDATETIME também é limitado a 2262-04-11 23:47:16 devido a um bug conhecido no driver Go do ClickHouse, em que
time.Time.UnixNano()é chamado para todas as precisões de DateTime64 antes de aplicar a escala, causando estouro de int64 para datas após 2262 mesmo com precisão 0.
Tabelas de destino
SharedReplacingMergeTree), com versionamento pela coluna _fivetran_synced.
Todas as colunas, exceto as chaves primárias (de ordenação) e as colunas de metadados do Fivetran, são criadas
como Nullable(T), em que T é um
tipo do ClickHouse Cloud baseado no mapeamento de tipos.
A estrutura da tabela varia de acordo com o
modo de sincronização
configurado para o conector do Fivetran: exclusão lógica (padrão) ou modo histórico (SCD Type 2).
Modo de exclusão lógica
Chave primária única na tabela de origem
users tem como chave primária a coluna id (INT) e uma coluna regular name (STRING).
A tabela de destino será definida da seguinte forma:
id é usada como chave de ordenação da tabela.
Múltiplas chaves primárias na tabela de origem
items com as colunas da chave primária id (INT) e name (STRING), além de uma
coluna comum adicional description (STRING). A tabela de destino será definida da seguinte forma:
id e name são usadas como chaves de ordenação da tabela.
Sem chaves primárias na tabela de origem
_fivetran_id.
Considere uma tabela events que tenha apenas as colunas event (STRING) e timestamp (LOCALDATETIME) na origem.
Nesse caso, a tabela de destino será a seguinte:
_fivetran_id é único e não há outras opções de chave primária, ele é usado como chave de ordenação da tabela.
Modo histórico (SCD Type 2)
A coluna
_fivetran_start é sempre incluída na cláusula ORDER BY como o último elemento da chave de ordenação composta.
Isso permite que várias versões do mesmo registro (com diferentes horários de início) coexistam na tabela.
Quando um registro é atualizado:
- O
_fivetran_endda versão anterior é definido como o_fivetran_startda nova versão menos um nanossegundo, e_fivetran_activeé definido comofalse. - A nova versão é inserida com
_fivetran_activedefinido comotruee_fivetran_enddefinido como2262-04-11 23:47:16.000000000(o valor máximo deDateTime64(9)).
Chave primária única na tabela de origem
users tem a coluna de chave primária id (INT) e as colunas regulares name (STRING) e status (STRING).
A tabela de destino no modo de histórico será definida da seguinte forma:
id e _fivetran_start formam a chave de ordenação composta.
Após algumas sincronizações, a tabela pode conter os seguintes dados:
O registro
id=1 tem duas versões: a original (name 1, inativa) e a atualizada (name 11, ativa).
O registro id=2 tem apenas uma versão, que no momento está ativa.
múltiplas chaves primárias na tabela de origem
ORDER BY, com _fivetran_start como último elemento.
Por exemplo, há uma tabela de origem items com as colunas de chave primária id (INT) e name (STRING), além de uma
coluna regular adicional description (STRING). A tabela de destino no modo de histórico será definida da seguinte forma:
id, name e _fivetran_start formam a chave de ordenação composta.
Sem chaves primárias na tabela de origem
_fivetran_id,
e _fivetran_start será acrescentado à chave de ordenação.
Considere uma tabela events que tenha apenas as colunas event (STRING) e timestamp (LOCALDATETIME) na tabela de origem.
A tabela de destino no modo histórico é a seguinte:
_fivetran_id e _fivetran_start formam a chave de ordenação composta.
Selecionando a versão mais recente dos dados sem duplicatas
SharedReplacingMergeTree realiza a desduplicação de dados em segundo plano
apenas durante merges, em um momento imprevisível.
No entanto, é possível selecionar sob demanda a versão mais recente dos dados sem duplicatas com a palavra-chave FINAL:
Novas tentativas em falhas de rede
SharedReplacingMergeTree.