As tabelas delta suportam gravação e armazenamento incremental de dados. O MaxCompute oferece uma sintaxe SQL dedicada para consultas incrementais, voltada a pipelines de processamento incremental em tempo quase real. Uma consulta incremental lê apenas os arquivos delta em um intervalo de versões especificado, mescla esses arquivos e retorna o resultado sem ler os arquivos base gerados pela compactação ou pelo clustering.
Funcionamento

O diagrama ilustra uma consulta incremental em uma tabela transacional chamada src, com duas colunas: pk e val.
Linha do tempo das alterações de dados:
Cinco transações de gravação ocorrem nos instantes t1 a t5 e geram cinco arquivos delta.
A compactação é executada em t2 e t4 e produz dois arquivos base: b1 e b2.
Ao enviar uma instrução SQL de consulta incremental, o MaxCompute executa as seguintes etapas:
Analisa o intervalo de versões especificado (valores de
BegineEnd).Localiza todos os arquivos delta com carimbos de data/hora dentro desse intervalo.
Mescla os dados desses arquivos delta conforme a política de mesclagem definida.
Retorna o resultado mesclado como saída da consulta.
Motivo da exclusão dos arquivos base: A compactação e o clustering reorganizam os registros existentes para otimizar o armazenamento, sem adicionar novos registros lógicos. Incluir arquivos base duplicaria dados já capturados em arquivos delta anteriores. O MaxCompute exclui os arquivos base por projeto para garantir que os resultados incrementais reflitam apenas novas gravações líquidas.
Semântica do intervalo de versões
Os valores de Begin e End definem o intervalo de versões. Cada valor identifica uma versão temporal específica no histórico de transações da tabela.
|
Begin |
End |
Arquivos delta lidos |
Resultado |
|
t1-1 |
t1 |
d1 |
Registros do arquivo delta d1 |
|
t2 |
não especificado |
d1, d2 |
Registros dos arquivos delta d1 e d2 |
|
t1 |
t2-1 |
nenhum |
Vazio — nenhuma transação de gravação ocorreu no intervalo (t1, t2) |
Limitações
Exclusão de arquivos base: Registros reorganizados por compactação ou clustering não aparecem nos resultados de consultas incrementais. Como essas operações não adicionam novos registros lógicos, excluir seus arquivos de saída não omite nenhum dado novo líquido.
Resultados vazios em intervalos sem atividade: Se o intervalo especificado estiver totalmente entre dois pontos de compactação, sem transações de gravação, a consulta retornará linhas vazias.