[ MSP, APIs e integrações ]

Paginação, filtragem e janelas de tempo nas exportações de relatórios

Exporte cada relatório pretendido uma vez, definindo semântica de carimbo de data/hora, regras de continuação e limites verificáveis ​​de forma independente.

Pela equipe de pesquisa EmailAuth · 3 minutos de leitura

[Pontos-chave]

  • Exporte cada relatório pretendido uma vez, definindo semântica de carimbo de data/hora, regras de continuação e limites verificáveis ​​de forma independente.
  • Compare as identidades do relatório, bem como os totais, preserve o campo de carimbo de data/hora selecionado e siga o contrato de continuação real.
Nesta página

As exportações de relatórios tornam-se não confiáveis ​​quando um filtro de tempo, limite de página e chegada tardia são tratados como detalhes não relacionados. Um resultado que parece completo pode omitir registros que compartilham um carimbo de data/hora ou contar o mesmo relatório duas vezes. Anote as regras de seleção antes de construir o ciclo de exportação.

Escolha o horário que será filtrado

Relatórios agregados ter um período de avaliação; o cobrador também tem um horário de recebimento. RFC 9990 define a estrutura do relatório agregado, incluindo seu intervalo de datas. Uma exportação filtrada por horário de recebimento responde o que chegou durante a janela, não necessariamente quais mensagens foram avaliadas durante ela. Nomeie o campo escolhido e preserve ambos os significados quando disponíveis.

Use carimbos de data/hora UTC com uma convenção de limite explícita. O exemplo hipotético de tempo de recebimento abaixo usa uma janela entreaberta: incluir início, excluir fim. As exportações diárias adjacentes não se sobrepõem apenas porque compartilham a meia-noite. Para um provedor com semântica documentada diferente, traduza deliberadamente e desduplique, em vez de fingir que seu limite final é exclusivo.

Siga o mecanismo de continuação do serviço

Não ache que todo endpoint usa números de página ou que uma página curta sempre termina o resultado. Documentação de paginação do GitHub demonstra os seguintes cabeçalhos de link, quando fornecidos. Outros serviços usam cursores opacos. Siga o contrato real, mantenha o filtro ativo e pare somente sob a condição de conclusão definida.

Pergunte se a paginação observa um instantâneo estável. Se os recém-chegados puderem alterar a associação à página, a paginação deslocada poderá pular ou repetir registros. Use ordem estável e cursores vinculados a instantâneos quando houver suporte. Para um projeto proposto, um tempo de recebimento estável, uma ordem de identidade e um cursor vinculado ao instantâneo/filtro podem tornar a continuação auditável. Use a chave de identidade completa do provedor como desempate; apenas um ID de relatório não precisa ser exclusivo entre os repórteres. Estas são recomendações de design, não garantias verificadas do fornecedor.

Teste limites com entradas conhecidas

Suponha um instantâneo fixo para um relator e inquilino, filtrado por horário de recebimento para um dia UTC. O relatório 0 chegou um segundo antes do dia e contém 10 observações. Os relatórios 1 e 2 chegaram ao meio-dia e possuem 30 e 20 observações; o relatório 3 chegou às 18h e tem 50. O relatório 4 chegou exatamente na meia-noite seguinte e tem 50. Sob uma regra de inclusão-início/exclusão-fim, selecione os IDs 1, 2 e 3: 30 + 20 + 50 = 100 observações. Com o tamanho de página assumido de dois e desempate de identidade estável, os registros selecionados ocupam páginas de dois e um.

Estes são fatos de entrada inventados e aritmética esperada, não uma exportação ou teste de paginação executado. Verifique as identidades e os totais: substituir o relatório 4 fora da janela pelo relatório 3 preservaria 100, mas selecionaria o conjunto errado. Este exemplo filtra todos os tempos de recebimento do relatório; ele não infere carimbos de data/hora de mensagens individuais a partir de um intervalo de relatório agregado. Uma consulta de corte de coleção ou de período histórico precisa de suas próprias regras documentadas.

Preservar evidências de integridade

Armazene o filtro original, versão, sequência de continuação, contagem de linhas, identidades distintas e status final com os dados exportados. Se uma página falhar, rotule a exportação como incompleta e retome ou reinicie no mecanismo compatível do provedor. Nunca mostre um resultado parcial como uma métrica mensal completa.

Revise janelas vazias, filtros alterados, cursores repetidos e expiração do cursor. Um cursor expirado pode exigir um novo instantâneo e reconciliação, em vez de continuar a partir de uma página adivinhada. Para relatórios históricos do período de avaliação, permita um limite de cobrança e explique as correções tardias. O leitor deverá ser capaz de dizer quais observações foram incluídas e quais fontes esperadas estavam ausentes.

[ Remover ]

Compare as identidades do relatório, bem como os totais, preserve o campo de carimbo de data/hora selecionado e siga o contrato de continuação real.

[Por função]

O que isso significa para você

Escolha sua função para ver as próximas etapas práticas.

Administrador de TI/Correio

Teste as bordas exatas

Os acessórios de limite tornam as linhas perdidas visíveis.

Próximas etapas

  1. Inclui registros simultâneos.
  2. Estado de continuação de registro.
  3. Compare os IDs esperados.

CISO/SecOps

Retenha o contexto de auditoria

Um CSV simples oculta decisões de seleção e acesso.

Próximas etapas

  1. Mantenha os metadados de exportação.
  2. Revise os controles de escopo.
  3. Rastreie trabalhos incompletos.

Fundador / Não técnico

Exija totais explicáveis

Uma métrica é tão útil quanto as suas regras de seleção.

Próximas etapas

  1. Aprove a janela de relatórios.
  2. Pergunte sobre correções tardias.
  3. Rejeite resultados parciais não rotulados.

[ Perguntas frequentes ]

Perguntas frequentes

Qual carimbo de data/hora uma exportação diária deve usar?

Escolha explicitamente a semântica do horário de recebimento ou do período de avaliação de acordo com a tarefa do leitor.

O que é uma janela entreaberta?

Inclui o seu início e exclui o seu fim.

Por que testar carimbos de data/hora iguais?

Um cursor somente de carimbo de data e hora pode pular registros distintos que compartilham o mesmo horário.

Uma página curta sempre significa conclusão?

Somente se o contrato real da API assim o indicar.

Quais são os IDs hipotéticos selecionados?

IDs 1, 2 e 3: 30 + 20 + 50 = 100 observações, em páginas presumidas de dois e um. Nenhum teste de paginação foi executado.

Por que comparar identidades e totais?

Erros opostos podem ser cancelados numericamente enquanto o conjunto de dados ainda está errado.

E se um cursor expirar?

Use o processo documentado de reinicialização ou retomada e reconcilie identidades.

Uma exportação parcial pode apoiar um relatório final?

Somente se estiver claramente rotulado como parcial; não deve ser apresentado como uma cobertura completa.

[ Fontes ]

Fontes

  1. Relatório agregado RFC 9990 DMARC

    Seções §3.1 · §3.1.1.4 · §3.1.2 · §3.5.1 · §3.5.4 · §4 · §7 · §8

  2. Paginação da API REST do GitHub

    Seções Usando cabeçalhos de link · Alterando o número de itens por página

[ Glossário ]

Glossário

Janela entreaberta
Um intervalo de tempo incluindo seu início e excluindo seu fim.
Instantâneo estável
Um conjunto de dados definido cuja associação permanece fixa enquanto é paginado.

Proveniência da empresa

Por que as principais instituições financeiras e governos retiraram seus painéis de segurança de e-mail.

As plataformas tradicionais de autenticação de e-mail vendem um painel e pedem que seus engenheiros façam o trabalho. Em ambientes de alto risco, a supervisão manual significa aplicação atrasada, desvios de configuração e domínios ocultos não monitorados.

EmailAuth é a plataforma de origem de e-mail agente. Nossos agentes impõem p=reject, mantenha remetentes terceiros alinhados e mova seus domínios para full RFC 9989 conformidade, o novo padrão DMARC , com auditabilidade humana no circuito.

Governos Grandes empresas Instituições financeiras de nível 1

SaaS · Locação dedicada · Air gap no local · Criptografia BYOK

Base de conhecimento