Pular para conteúdo

Convenções de Armazenamento — Fetchers

Esta página cobre a perspectiva do usuário final: como os arquivos são nomeados, como as pastas são organizadas e como a flag -o funciona. Para a perspectiva do contribuidor (como implementar essas convenções num novo fetcher), veja Padronização de CLI.

Este documento define os padrões de nomenclatura de arquivos, estrutura de pastas e interface CLI adotados por todos os pacotes fetcher da Quantilica.


Nomenclatura de Arquivos

O nome de cada arquivo baixado incorpora um timestamp extraído do servidor de origem (cabeçalho Last-Modified ou equivalente). A função stamp_filename() de quantilica.core.storage implementa o padrão.

Formato

{base}@{timestamp}.{ext}

O separador entre a base e o timestamp é sempre @. A base codifica o conjunto de dados e a partição; o timestamp indica quando o arquivo foi publicado na origem, não quando foi baixado.

Precisão do timestamp

Precisão Formato Quando usar
date (padrão) YYYYMMDD Fontes com granularidade diária
datetime YYYYMMDDTHHMMSS Fontes com múltiplas versões no mesmo dia

Quando o servidor não retorna timestamp, o arquivo é salvo sem @ — sem inventar uma data.

Exemplos por pacote

Pacote Exemplo de nome
comex-fetcher [email protected]
datasus-fetcher [email protected]
inmet-fetcher [email protected]
pdet-fetcher [email protected]
rtn-fetcher [email protected]
tesouro-direto-fetcher taxas-dos-titulos-ofertados-pelo-tesouro-direto@20240315T101530.csv

Implementação

from quantilica.core.storage import stamp_filename

# Precisão date (padrão)
stamp_filename("exp_2023", "csv", date(2024, 3, 15))
# → "[email protected]"

# Precisão datetime
stamp_filename("rtn", "xlsx", datetime(2024, 3, 15, 10, 15), precision="datetime")
# → "[email protected]"

# Sem timestamp
stamp_filename("rtn", "xlsx", None)
# → "rtn.xlsx"

Estrutura de Pastas

Os arquivos são organizados em pastas diretamente nomeadas pelo dataset_id, sem camada intermediária de categoria (sem raw//processed//docs/). Esta é a estrutura adotada por todos os fetchers e implementada pelo método BaseDataRepository.dataset_path() do quantilica-core.

Princípio

{output}/
├── {dataset_id}/
│   ├── {partição}/      ← opcional; usada quando há agrupamento temporal ou geográfico
│   │   └── [email protected]
│   └── [email protected]
└── ...

O diretório raiz ({output}) é o único caminho fornecido pelo usuário. A estrutura interna é de responsabilidade exclusiva do pacote.

API do quantilica-core

from quantilica.core.storage import BaseDataRepository

class FooRepository(BaseDataRepository):
    def file_path(self, dataset_id: str, filename: str) -> Path:
        return self.dataset_path(dataset_id, filename)
        # → {root}/{dataset_id}/{filename}

Categorias adicionais (documentação, dados processados, etc.) são responsabilidade do fetcher — use self.storage.path_for(...) diretamente.

Exemplos por pacote

comex-fetcher

{output}/
├── exp/
│   └── [email protected]
├── imp/
│   └── [email protected]
├── exp-mun/
├── imp-mun/
├── auxiliary-tables/
│   └── [email protected]
├── repetro/
└── validacao/

datasus-fetcher

{output}/
├── sih-rd/
│   ├── 202001/
│   │   └── [email protected]
│   └── 202002/
├── sinasc-dn/
│   └── 2023/
│       └── [email protected]
├── _documentacao/
│   ├── sih/
│   │   └── [email protected]
│   └── sinasc/
└── _auxiliar/
    └── sih/
        └── [email protected]

Documentação e tabelas auxiliares são agrupadas pelo sistema (ex: sih, cnes), não pelo subsistema (ex: sih-rd, cnes-dc), pois um mesmo conjunto de documentos cobre todos os subsistemas de um sistema. O prefixo _ faz essas pastas aparecerem antes das pastas de dados em qualquer ordenação alfabética e evita nomes reservados do Windows (como aux).

Para a estrutura detalhada de todos os demais pacotes (inmet-fetcher, pdet-fetcher, rtn-fetcher, tesouro-direto-fetcher), veja a seção de exemplos em Padronização de CLI.


Interface CLI

Todos os fetchers expõem o diretório de saída pelo argumento -o / --output com um valor padrão de /data/<fonte>.

Para especificações detalhadas sobre a implementação desse argumento, as opções do parser e regras adicionais de interface, consulte o guia de Padronização de CLI.

Padrões de Diretório por Pacote

Abaixo estão definidos os diretórios de saída padrão (default de --output) adotados por cada fetcher:

Pacote Diretório Padrão (--output)
comex-fetcher /data/secex-comex
datasus-fetcher /data/datasus
inmet-fetcher /data/inmet
pdet-fetcher /data/pdet
rtn-fetcher /data/rtn
tesouro-direto-fetcher /data/tesouro-direto

Atualizado em: 11 de maio de 2026