Arquitetura do conjunto de dados em um Qlik Open Lakehouse
Quando você gera conjuntos de dados em um Qlik Open Lakehouse, tabelas de armazenamento, tabelas de alterações e visualizações são geradas automaticamente pelo Qlik Talend Data Integration. Você pode consultar essas exibições para acessar dados atuais e históricos armazenados no formato de tabela aberta do Iceberg.
Uma interface de usuário intuitiva e guiada ajuda você a criar, modelar e executar pipelines de dados. Você pode gerar automaticamente esquemas para armazenamentos de dados operacionais (ODS) e armazenamentos de dados históricos (HDS) sem codificação manual.
Arquitetura para um pipeline de dados do Qlik Open Lakehouse usando o Qlik Data Gateway - Movimentação de dados. Os dados são aterrisados no S3 e armazenados em um open lakehouse do Iceberg. Opcionalmente, como mostrado abaixo, as tabelas podem ser espelhadas para um armazém de dados.

Esquemas
Artefatos são gerados em um esquema interno e um esquema de tarefa de dados.
-
O esquema interno contém uma tabela física com várias partições.
-
O esquema de tarefa de dados contém as exibições que você pode usar para consumir os dados.
Quando um esquema está associado a mais de uma tarefa de dados, cada tarefa de dados deve usar um prefixo exclusivo para tabelas e exibições. Você pode definir o prefixo nas configurações da tarefa de dados.
Somente os esquemas internos são verificados quanto a conflitos de nomenclatura. Para outros esquemas, você deve garantir que não haja conflitos de nomenclatura nos nomes das tabelas. A melhor prática é nomear o esquema interno com o mesmo nome do esquema de tarefa de dados com _internal adicionado. Isso garante que cada combinação de esquema e prefixo seja única.
Tabelas
Para cada tabela de origem, é criada uma tabela no esquema interno com o sufixo _internal, usando o formato:
<INTERNAL_SCHEMA>.<TABLE_NAME>_internal
Essa tabela contém cinco partições, cada uma servindo a um propósito distinto na forma como os dados são processados e armazenados. Cada partição utiliza um subconjunto das colunas da tabela com base em sua função no ciclo de vida dos dados.
O conjunto de dados interno é estruturado para gerenciar com eficiência os dados recebidos do seu sistema de origem, suportando a ingestão em tempo real e o rastreamento histórico. O fluxo de dados é gerenciado por meio de várias partições especializadas, cada uma descrita abaixo:
-
Partição Alterações – ingestão em tempo real
Todas as alterações do sistema de origem – inserções, atualizações e exclusões – são primeiro anexadas à partição Alterações.
-
Atuando como um log de alterações bruto, a partição fornece um feed completo da atividade de origem antes que qualquer transformação ocorra.
-
Cada alteração é marcada com um tipo (I, U ou D), indicando como ela é processada.
-
Os eventos são capturados da fonte à medida que ocorrem. A partição é atualizada quase em tempo real.
-
A partição Alterações está disponível quando as seguintes configurações são aplicadas na tarefa de dados de aterrisagem no lake.
-
Na guia Geral, o Método de atualização está definido como CDC.
-
O carregamento total está ativado.
-
-
-
Partição Asset_state – acompanhamento do progresso
À medida que as alterações são ingeridas, a partição Asset_state registra dois carimbos de data/hora importantes:
-
Quando as alterações foram anexadas pela última vez à partição Alterações.
-
Quando as alterações foram aplicadas pela última vez à partição atual.
Isso proporciona visibilidade total do pipeline de sincronização e ajuda no monitoramento ou na solução de problemas de atrasos.
-
-
Partição atual (ODS) – última réplica da fonte
As alterações da partição Alterações são aplicadas periodicamente à partição Atual para manter uma cópia atualizada e otimizada para consultas dos dados de origem.
-
Uma tarefa em segundo plano é executada automaticamente para aplicar essas atualizações. Isso se baseia no volume de alterações acumuladas, e não em um cronograma fixo.
-
O carregamento total inicial é gravado diretamente na partição Atual.
-
Essa partição reflete o estado atual dos dados e foi projetada para uma consulta eficiente.
-
-
Partição anterior (HDS) – dados históricos
Quando um registro é atualizado ou excluído na partição Atual, uma cópia da versão anterior é gravada na partição Anterior.
-
Os registros contêm metadados, incluindo o histórico de alterações e o intervalo de datas em que os dados são válidos.
-
Isso suporta a dimensão de alteração lenta do Tipo 2 (SCD2).
-
A partição Anterior está disponível quando a opção Manter registros históricos e arquivar registros de alterações está ativada na guia Geral das configurações da tarefa Dados de armazenamento.
-
Quando uma versão atualizada de um registro entra na partição Atual, o registro anterior é movido para a partição Anterior para rastreamento histórico.
-
-
Partição Recarregar
A partição Recarregar atua como uma área de preparação temporária durante recargas completas manuais ou programadas:
-
Os novos dados são gravados primeiro na partição Recarregar.
-
As tarefas de manutenção regulares limpam as alterações pendentes antes de serem pausadas.
-
Os dados são comparados com a partição Atual e somente as diferenças são movidas para a partição Atual.
-
A partição Recarregar é limpa quando a operação é concluída.
Esse processo garante o mínimo de interrupção do conjunto de dados principal durante as operações de recarga completa.
-
Partição atual
| Campo | Tipo | Descrição |
|---|---|---|
| hdr__key_hash | VARBINARY (20) | Hash de todas as chaves primárias de registro. O formato de hash é SHA1. As colunas são separadas por um caractere de backspace. |
| hdr__from_timestamp | TIMESTAMP |
Carimbo de data/hora em UTC:
|
| hdr__operation | VARCHAR (1) |
Operação mais recente deste registro.
|
| hdr__inserted_timestamp | TIMESTAMP | Carimbo de data/hora em UTC da primeira vez em que a chave foi adicionada. Ao usar carregamento total, a hora de início do carregamento total. |
| hdr__modified_timestamp | TIMESTAMP | Carimbo de data/hora em UTC de quando a última atualização foi feita. |
Partição anterior
| Campo | Tipo | Descrição |
|---|---|---|
| hdr__key_hash | VARBINARY (20) | Hash de todas as chaves primárias de registro. |
| hdr__from_timestamp | TIMESTAMP | Carimbo de data/hora em UTC. |
| hdr__to_timestamp | TIMESTAMP | Carimbo de data/hora em UTC. |
| hdr__operation | STRING (1) |
Operação mais recente deste registro.
|
| hdr__was_current_from_timestamp | TIMESTAMP | O carimbo de data/hora em UTC para o primeiro registro de hora era atual. |
| hdr__was_current_to_timestamp | TIMESTAMP | O carimbo de data/hora em UTC para o último registro de hora era atual. |
Partição Alterações
| Campo | Tipo | Descrição |
|---|---|---|
| hdr__change_identifier | VARCHAR (50) |
O identificador de alteração é uma string com duas partes:
|
| hdr__operation | VARCHAR (1) |
Operação mais recente deste registro.
|
| hdr__timestamp | TIMESTAMP | Carimbo de data/hora em UTC. |
| hdr__key_hash | BINARY (20) | Hash de todas as chaves primárias de registro. |
| hdr__inserted_timestamp | TIMESTAMP | Carimbo de data/hora UTC da hora quando a alteração foi processada pelo Qlik. |
Partição Asset_state
| Campo | Tipo | Descrição |
|---|---|---|
| hdr__apply_change_identifier | VARCHAR (50) | O identificador de alteração da última alteração aplicada à partição Atual. |
| hdr__copy_change_identifier | VARCHAR (50) | O identificador de alteração da última alteração anexada à partição Alterações. |
Partição Recarregar
As colunas usadas pela partição Recarga são idênticas às da partição Atual.
Exibições
Todas as visualizações criadas são atualizadas quase em tempo real. As seguintes exibições estão disponíveis para simplificar as consultas e os relatórios:
Atual
A exibição Atual reflete o estado mais recente dos dados. Essa exibição representa uma réplica da tabela de origem, atualizada quase em tempo real. Ela mescla dados das partições Atual e Alterações.
Nome: <EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>
Nenhuma coluna de cabeçalho é adicionada à estrutura da tabela.
Histórico
Uma visualização Histórico é gerada no esquema de ativo de dados para cada tabela de origem selecionada quando o Histórico estiver habilitado nas configurações da tarefa de dados. A visualização Histórico mescla dados das partições Anterior e Alterações. Ela fornece uma linha do tempo completa das alterações, ideal para auditoria ou análise histórica.
Nome: <EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>_<Suffix for history views>
Os seguintes campos de cabeçalho são adicionados à visualização Histórico:
| Campo | Tipo | Descrição |
|---|---|---|
| hdr__key_hash | BINARY (20) | Hash de todas as chaves primárias de registro. |
| hdr__from_timestamp | TIMESTAMP | O carimbo de data/hora em que a alteração ocorreu no sistema de origem. Isso reflete quando o usuário fez a alteração originalmente. |
| hdr__to_timestamp | TIMESTAMP | O carimbo de data/hora em que a alteração foi revertida ou atualizada no sistema de origem. |
| hdr__store | VARCHAR (10) |
Isso indica onde o registro reside:
|
| hdr__operation | STRING (1) |
Operação mais recente deste registro.
|
| hdr__deleted | BIT | Indica se o registro é excluído de forma reversível, com base em se hdr__operation é D ou d. |
| hdr__was _current_from_timestamp | TIMESTAMP | A hora (UTC) em que essa linha entrou na partição Atual. Normalmente, é quando o trabalho de armazenamento foi executado e a alteração foi aplicada. |
| hdr__was _current_to_timestamp | TIMESTAMP | A hora (UTC) em que a linha foi removida da tabela Atual, por exemplo, devido a uma versão mais recente. |