Contrato — series_economicas¶
O dataset series_economicas reutiliza o contrato registrado como bcb_sgs, versão 3.0, sem alias próprio no registry de contratos. A fonte única é bcb.sgs; não há normalização de unidade, frequência ou valor na camada de datasets.
| Coluna | dtype pandas | Nula | Semântica |
|---|---|---|---|
data |
datetime64[ns] |
Não | Referência civil publicada, sem horário/fuso |
valor |
float64 |
Sim | Valor finito na unidade da série; negativos são permitidos |
codigo |
Int64 |
Não | Código positivo, até 2**63 - 1 |
nome_serie |
texto | Sim | Alias conhecido pelo SDK; não é título obtido do catálogo |
data_fim |
datetime64[ns] |
Sim | Opcional: fim do período publicado em dataFim (ex.: TR); só existe quando a fonte publica o campo |
São quatro colunas estáveis, nessa ordem, seguidas de data_fim quando a série publica dataFim. Chave primária: codigo, data. As linhas são ordenadas por código e referência; ultimos, quando local, é aplicado depois da reconciliação. Um código numérico sem alias conhecido conserva nome_serie nulo, sem fabricar um nome. Texto não nulo nessa coluna deve ser não vazio.
Nulos explícitos em valores permanecem ausências, sem zero ou interpolação. NaN/infinito publicados como texto inválido não são confundidos com null JSON. Duplicatas no mesmo corpo e conflitos entre blocos falham; apenas coincidências entre blocos são reconciliadas, com origens nos metadados.
Datas mensais/trimestrais podem anteceder o início diário pedido. O SDK mantém a referência e seu diagnóstico; não presume que ela represente uma observação diária. Sábado não é um erro de calendário. Unidade e periodicidade dependem do código e devem ser consultadas no catálogo SGS.
O contrato é obrigatório mesmo sem metadados, antes de converter para Polars e em resultados vazios. Vazios usam o quadro vazio do contrato: as quatro colunas com os dtypes acima e data_fim. Um envelope de ausência de valores não prova existência da série; erro de layout não é tratado como vazio legítimo.
from agrobr import contracts, datasets
df = await datasets.series_economicas("ipca", inicio="01/01/2024", fim="31/12/2024")
contracts.validate_dataset(df, "bcb_sgs")
meta.contract_version e schema_version são 3.0. Hash/tamanho brutos identificam um manifesto de consulta e recursos, não os bytes de um único corpo; estes estão em source_details.resources. Cobertura desconhecida não é promovida a completude histórica. O período não representa revisão as-of; deterministic é recusado antes de I/O.