| Title: | CAGED Microdata Download and Storage in 'DuckDB' |
|---|---|
| Description: | Tools to download, parse, and store Brazilian CAGED (Cadastro Geral de Empregados e Desempregados) microdata using 'DuckDB'. Supports both legacy CAGED (pre-2020), Novo CAGED (2020+), and adjustment files, enabling efficient local storage and analysis workflows. Data is sourced from the HuggingFace repository <https://huggingface.co/datasets/alexsandroprado/caged>. |
| Authors: | Alexsandro Prado [aut, cre] (ORCID: <https://orcid.org/0000-0002-7072-3621>) |
| Maintainer: | Alexsandro Prado <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 0.2.3 |
| Built: | 2026-10-13 03:44:35 UTC |
| Source: | https://github.com/gecomt/datacaged |
O pacote datacaged facilita o acesso aos microdados do CAGED
(Cadastro Geral de Empregados e Desempregados), cobrindo:
Novo CAGED (janeiro/2020 em diante): layout reformulado pelo MTE
CAGED antigo (até dezembro/2019): séries históricas (CAGEDEST_*.7z)
CAGED Ajustes (até dezembro/2019): correções retroativas do antigo
Os dados são baixados do repositório HuggingFace
(https://huggingface.co/datasets/alexsandroprado/caged),
extraídos de arquivos .7z e carregados em um banco DuckDB local
para consultas rápidas com SQL ou dplyr.
library(datacaged)
# Baixa, parseia e grava tudo em um comando
caged_load(
years = 2022:2023,
months = seq_len(12L),
db_path = "meu_caged.duckdb"
)
# Conecta e consulta
con <- caged_connect("meu_caged.duckdb")
dplyr::tbl(con, "caged_mov") |>
dplyr::filter(uf == 35) |>
dplyr::count(competenciamov)
Novo CAGED (2020+) e CAGED antigo (até 2019):
caged_load(): pipeline completo (download -> parse -> DuckDB)
caged_download(): só baixa os arquivos .7z
caged_parse(): lê e normaliza um arquivo .7z
caged_parse_batch(): lê e normaliza múltiplos arquivos .7z
caged_to_duckdb(): grava um data.frame no banco
caged_connect(): abre conexão com o banco DuckDB
caged_info(): lista tabelas e registros disponíveis no banco
CAGED Ajustes (correções retroativas até 2019):
caged_adjustments_load(): pipeline completo para o CAGED Ajustes
Manutenção e exportação do banco:
caged_update(): baixa apenas as competências que faltam no banco
caged_to_parquet(): exporta as tabelas do banco para Parquet
Utilitários:
caged_status(): verifica se o repositório HuggingFace está acessível
caged_hf_files(): lista competências disponíveis no repositório HuggingFace
caged_download_layouts(): baixa os dicionários de variáveis do MTE
As mensagens do console (erros, avisos e progresso) são escritas em inglês
e traduzidas para o português. Com o R configurado em português, elas
aparecem em português automaticamente. Para trocar o idioma na sessão, use
Sys.setLanguage("pt_BR") ou Sys.setLanguage("en").
| Tabela | Fonte | Período |
caged_mov |
CAGEDMOV*.7z |
Jan/2020+ |
caged_for |
CAGEDFOR*.7z |
Jan/2020+ |
caged_exc |
CAGEDEXC*.7z |
Jan/2020+ |
caged_antigo |
CAGEDEST_*.7z |
Jan/2007--Dez/2019 |
caged_ajustes |
CAGEDEST_AJUSTES_*.7z |
2002--Dez/2019 |
Maintainer: Alexsandro Prado [email protected] (ORCID)
Authors:
Alexsandro Prado [email protected] (ORCID)
Useful links:
Baixa, parseia e grava os arquivos do CAGED Ajustes no banco DuckDB local.
caged_adjustments_load( years, months = seq_len(12L), db_path, destdir = NULL, force_download = FALSE, overwrite_competencies = FALSE, timeout = 300 )caged_adjustments_load( years, months = seq_len(12L), db_path, destdir = NULL, force_download = FALSE, overwrite_competencies = FALSE, timeout = 300 )
years |
integer vector. Desired years. Maximum: 2019. |
months |
integer vector. Desired months (1–12). Default: |
db_path |
character. Path to the file |
destdir |
character or NULL. Cache directory for |
force_download |
logical. If TRUE, re-downloads even if already cached. Default: FALSE. |
overwrite_competencies |
logical. If TRUE, overwrites competencies already in the database. Default: FALSE. |
timeout |
integer. Timeout in seconds. Default: 300. |
O CAGED Ajustes contém correções retroativas de vínculos do CAGED antigo
(até 2019). Cada arquivo CAGEDEST_AJUSTES_{MM}{AAAA}.7z registra
movimentações ajustadas após a declaração original — essencial para
reconstrução de séries históricas mais precisas.
Os dados são gravados na tabela caged_ajustes do banco DuckDB, com o mesmo
schema do caged_antigo.
invisível: tibble com estatísticas do banco após a carga.
caged_load() para Novo CAGED (2020+) e CAGED antigo (até 2019).
caged_hf_files() com type = "ajustes" para listar disponibilidade.
## Not run: # List available adjustment competencies first avail <- caged_hf_files(type = "ajustes", n = 3, verbose = FALSE) if (nrow(avail) > 0) { db <- file.path(tempdir(), "caged_ajustes.duckdb") # Download and load adjustments caged_adjustments_load( years = avail$ano[1], months = avail$mes[1], db_path = db ) con <- caged_connect(db) # List tables and records dplyr::tbl(con, "caged_ajustes") |> dplyr::group_by(competencia) |> dplyr::count() |> dplyr::collect() DBI::dbDisconnect(con, shutdown = TRUE) } ## End(Not run)## Not run: # List available adjustment competencies first avail <- caged_hf_files(type = "ajustes", n = 3, verbose = FALSE) if (nrow(avail) > 0) { db <- file.path(tempdir(), "caged_ajustes.duckdb") # Download and load adjustments caged_adjustments_load( years = avail$ano[1], months = avail$mes[1], db_path = db ) con <- caged_connect(db) # List tables and records dplyr::tbl(con, "caged_ajustes") |> dplyr::group_by(competencia) |> dplyr::count() |> dplyr::collect() DBI::dbDisconnect(con, shutdown = TRUE) } ## End(Not run)
Cria o arquivo .duckdb se ainda não existir. A conexão retornada é
compatível com dplyr::tbl(), DBI::dbGetQuery() e dbplyr.
caged_connect(db_path, read_only = FALSE, quiet = FALSE)caged_connect(db_path, read_only = FALSE, quiet = FALSE)
db_path |
character. Path to the file |
read_only |
logical. If TRUE, abre somente leitura. Default: FALSE. |
quiet |
logical. If TRUE, suppresses the connection message. Default: FALSE. |
Lembre-se de fechar a conexão com DBI::dbDisconnect() ao terminar.
objeto de conexão DBI (duckdb_connection).
caged_info() para listar tabelas no banco.
con <- caged_connect(file.path(tempdir(), "caged.duckdb")) # Listar tabelas disponíveis DBI::dbListTables(con) # Sempre fechar ao terminar DBI::dbDisconnect(con, shutdown = TRUE)con <- caged_connect(file.path(tempdir(), "caged.duckdb")) # Listar tabelas disponíveis DBI::dbListTables(con) # Sempre fechar ao terminar DBI::dbDisconnect(con, shutdown = TRUE)
Baixa os arquivos .7z para um diretório local, criando uma estrutura
de pastas por ano. Arquivos já baixados não são re-baixados (cache local).
caged_download( years, months = seq_len(12L), states = NULL, destdir = NULL, force = FALSE, timeout = 300, workers = getOption("datacaged.workers", min(3L, future::availableCores())) )caged_download( years, months = seq_len(12L), states = NULL, destdir = NULL, force = FALSE, timeout = 300, workers = getOption("datacaged.workers", min(3L, future::availableCores())) )
years |
integer vector. Desired years (ex: |
months |
integer vector. Desired months (1–12). Default: |
states |
character vector or NULL. Ignorado — mantido por compatibilidade. |
destdir |
character or NULL. Local directory to save os arquivos.
If NULL, uses the default directory do sistema via
|
force |
logical. If TRUE, re-downloads files already in cache. Default: FALSE. |
timeout |
integer. Timeout por arquivo em segundos. Default: 300. |
workers |
integer. Number of parallel downloads. Default: 3.
Use |
Para o Novo CAGED (2020+), são baixados três tipos por competência:
movimentações (MOV), fora do prazo (FOR) e exclusões (EXC).
Para o CAGED antigo (até 2019), o download é nacional (arquivo único por competência).
Compatibilidade entre plataformas:
| Recurso | Windows | macOS | Linux |
| Download (HTTPS) | OK | OK | OK |
| Downloads paralelos | OK | OK | OK |
| Novo CAGED (2020+, LZMA) | OK | OK | OK |
| CAGED antigo (PPMd) | (!) | (!) | (!) |
O CAGED antigo (pré-2020) usa PPMd e requer 7-Zip instalado. O Novo CAGED usa LZMA e funciona em todas as plataformas sem dependências extras.
data.frame invisível com colunas arquivo, competencia, type,
uf e status (baixado / cache / nao_encontrado / erro).
caged_load() para o pipeline completo (download + parse + DuckDB).
caged_hf_files() para listar competências disponíveis no HuggingFace.
## Not run: # Baixa Novo CAGED de jan-mar/2023 manifest <- caged_download(years = 2023, months = c(1L, 2L, 3L)) # Ver status de cada arquivo (baixado / cache / nao_encontrado / erro) dplyr::count(manifest, status) # Baixa CAGED antigo de 2018 caged_download(years = 2018) # Forçar re-download mesmo com cache caged_download(years = 2023, months = 1, force = TRUE) # Salvar em diretório personalizado caged_download(years = 2023, months = 1, destdir = file.path(tempdir(), "caged_cache")) ## End(Not run)## Not run: # Baixa Novo CAGED de jan-mar/2023 manifest <- caged_download(years = 2023, months = c(1L, 2L, 3L)) # Ver status de cada arquivo (baixado / cache / nao_encontrado / erro) dplyr::count(manifest, status) # Baixa CAGED antigo de 2018 caged_download(years = 2018) # Forçar re-download mesmo com cache caged_download(years = 2023, months = 1, force = TRUE) # Salvar em diretório personalizado caged_download(years = 2023, months = 1, destdir = file.path(tempdir(), "caged_cache")) ## End(Not run)
Lista os dicionários de variáveis disponíveis no repositório HuggingFace
(alexsandroprado/caged), na pasta raiz de cada série, e baixa todos os
arquivos .xls ou .xlsx cujo nome contenha a palavra "layout"
(case-insensitive).
caged_download_layouts( type = "ambos", destdir = NULL, force = FALSE, timeout = 120, verbose = TRUE )caged_download_layouts( type = "ambos", destdir = NULL, force = FALSE, timeout = 120, verbose = TRUE )
type |
character. Qual base consultar: |
destdir |
character or NULL. Local directory to save os arquivos.
Se |
force |
logical. If |
timeout |
integer. Timeout por arquivo em segundos. Default |
verbose |
logical. Se |
Os arquivos são gravados com o nome original sem acentos, para evitar
problemas de encoding em sistemas de arquivos e locales não-UTF-8; o nome
original fica na coluna arquivo do resultado.
tibble invisível com colunas base, arquivo, url, destino
e status ("baixado", "cache" ou "naoencontrado").
caged_status() para verificar conectividade.
caged_hf_files() para consultar os microdados disponíveis.
## Not run: caged_download_layouts() caged_download_layouts(type = "antigo") caged_download_layouts(type = "novo") caged_download_layouts(type = "ajustes") ## End(Not run)## Not run: caged_download_layouts() caged_download_layouts(type = "antigo") caged_download_layouts(type = "novo") caged_download_layouts(type = "ajustes") ## End(Not run)
Consulta a API do HuggingFace e retorna os meses disponíveis para download, ordenados do mais recente para o mais antigo.
caged_hf_files(type = "novo", n = 12, timeout = 15, verbose = TRUE)caged_hf_files(type = "novo", n = 12, timeout = 15, verbose = TRUE)
type |
character. Which series to query:
|
n |
integer. Number of most recent competencies to return.
Use |
timeout |
integer. Timeout in seconds. Default: 15. |
verbose |
logical. If TRUE, exibe tabela no console. Default: TRUE. |
tibble invisível com colunas competencia (AAAAMM),
ano, mes e url, ordenado do mais recente para o mais antigo.
caged_status() para verificar se o repositório HF está acessível.
caged_load() para baixar após identificar as competências.
## Not run: # Últimos 12 meses disponíveis (padrão) caged_hf_files() # Todos os meses do Novo CAGED caged_hf_files(n = Inf) # CAGED antigo caged_hf_files(type = "antigo") # CAGED Ajustes caged_hf_files(type = "ajustes") # Usar o resultado para baixar automaticamente o mês mais recente disp <- caged_hf_files(n = 1, verbose = FALSE) caged_load( years = disp$ano, months = disp$mes, db_path = file.path(tempdir(), "caged.duckdb") ) ## End(Not run)## Not run: # Últimos 12 meses disponíveis (padrão) caged_hf_files() # Todos os meses do Novo CAGED caged_hf_files(n = Inf) # CAGED antigo caged_hf_files(type = "antigo") # CAGED Ajustes caged_hf_files(type = "ajustes") # Usar o resultado para baixar automaticamente o mês mais recente disp <- caged_hf_files(n = 1, verbose = FALSE) caged_load( years = disp$ano, months = disp$mes, db_path = file.path(tempdir(), "caged.duckdb") ) ## End(Not run)
Exibe no console uma tabela com nome, número de registros, competências disponíveis e tamanho estimado de cada tabela CAGED.
caged_info(db_path)caged_info(db_path)
db_path |
character. Path to the file |
tibble invisível com as estatísticas.
caged_connect() para obter uma conexão DBI com o banco.
caged_info(file.path(tempdir(), "caged.duckdb"))caged_info(file.path(tempdir(), "caged.duckdb"))
Combina caged_download(), caged_parse() e caged_to_duckdb()
em um único comando. É o jeito mais simples de popular o banco local.
caged_load( years, months = seq_len(12L), states = NULL, db_path = file.path(tempdir(), "caged.duckdb"), destdir = NULL, force_download = FALSE, overwrite_competencies = FALSE, timeout = 300, workers = getOption("datacaged.workers", min(3L, future::availableCores())) )caged_load( years, months = seq_len(12L), states = NULL, db_path = file.path(tempdir(), "caged.duckdb"), destdir = NULL, force_download = FALSE, overwrite_competencies = FALSE, timeout = 300, workers = getOption("datacaged.workers", min(3L, future::availableCores())) )
years |
integer vector. Desired years. |
months |
integer vector. Desired months (1–12). Default: |
states |
character vector or NULL. Ignored — the parameter is validated but does not filter downloads for any series (Novo CAGED, antigo or Ajustes), as all files are national in scope. Kept for backwards compatibility. |
db_path |
character. Path to the file |
destdir |
character or NULL. Cache directory for |
force_download |
logical. Re-downloads files already in cache. Default: FALSE. |
overwrite_competencies |
logical. Overwrites competencies already in the database. Default: FALSE. |
timeout |
integer. Timeout per file in seconds. Default: 300. |
workers |
integer. Number of parallel downloads. Default: 3.
Use |
invisible: tibble with final database statistics (via caged_info()).
caged_adjustments_load() para o CAGED Ajustes (correções retroativas até 2019).
caged_download() para baixar sem gravar no banco.
caged_info() para inspecionar o banco após a carga.
## Not run: # Download real --- exemplos nao executados automaticamente (requerem rede e tempo) # Novo CAGED: 1 mes recente caged_load( years = 2024, months = 1, db_path = file.path(tempdir(), "caged.duckdb") ) # CAGED antigo: 1 ano caged_load( years = 2019, months = seq_len(12L), db_path = file.path(tempdir(), "caged_historico.duckdb") ) # Conecta e consulta con <- caged_connect(file.path(tempdir(), "caged.duckdb")) if ("caged_mov" %in% DBI::dbListTables(con)) { dplyr::tbl(con, "caged_mov") |> dplyr::group_by(competencia, uf) |> dplyr::summarise(saldo = sum(saldomovimentacao, na.rm = TRUE)) |> dplyr::collect() } DBI::dbDisconnect(con, shutdown = TRUE) ## End(Not run)## Not run: # Download real --- exemplos nao executados automaticamente (requerem rede e tempo) # Novo CAGED: 1 mes recente caged_load( years = 2024, months = 1, db_path = file.path(tempdir(), "caged.duckdb") ) # CAGED antigo: 1 ano caged_load( years = 2019, months = seq_len(12L), db_path = file.path(tempdir(), "caged_historico.duckdb") ) # Conecta e consulta con <- caged_connect(file.path(tempdir(), "caged.duckdb")) if ("caged_mov" %in% DBI::dbListTables(con)) { dplyr::tbl(con, "caged_mov") |> dplyr::group_by(competencia, uf) |> dplyr::summarise(saldo = sum(saldomovimentacao, na.rm = TRUE)) |> dplyr::collect() } DBI::dbDisconnect(con, shutdown = TRUE) ## End(Not run)
Lê os .txt internos diretamente via stream (sem extrair para disco),
usando archive::archive_read(). Se o stream falhar, faz fallback para
extração em diretório temporário. Devolve um único tibble normalizado.
caged_parse(path, type = NULL)caged_parse(path, type = NULL)
path |
Path to the file |
type |
character or NULL. File type ("MOV", "FOR", "EXC", "ANTIGO"). Se NULL, detecta pelo nome. |
tibble com os microdados, ou NULL se o arquivo estiver vazio/inválido.
caged_parse_batch() para processar múltiplos arquivos de uma vez.
caged_to_duckdb() para gravar o resultado no banco.
# Toy example com arquivo incluído no pacote (executa sem internet) path_mov <- system.file("extdata", "CAGEDMOV202301_exemplo.7z", package = "datacaged") df <- caged_parse(path_mov, type = "MOV") head(df) ## Not run: # Com arquivo baixado manualmente via caged_download() ou pelo navegador: df_mov <- caged_parse(file.path("~", "Downloads", "CAGEDMOV202301.7z")) dplyr::glimpse(df_mov) # Tipo detectado automaticamente df_for <- caged_parse(file.path("~", "Downloads", "CAGEDFOR202301.7z")) ## End(Not run)# Toy example com arquivo incluído no pacote (executa sem internet) path_mov <- system.file("extdata", "CAGEDMOV202301_exemplo.7z", package = "datacaged") df <- caged_parse(path_mov, type = "MOV") head(df) ## Not run: # Com arquivo baixado manualmente via caged_download() ou pelo navegador: df_mov <- caged_parse(file.path("~", "Downloads", "CAGEDMOV202301.7z")) dplyr::glimpse(df_mov) # Tipo detectado automaticamente df_for <- caged_parse(file.path("~", "Downloads", "CAGEDFOR202301.7z")) ## End(Not run)
Wrapper sobre caged_parse() que processa um vetor de caminhos,
empilha os resultados e reporta progresso.
caged_parse_batch(paths, .progress = TRUE)caged_parse_batch(paths, .progress = TRUE)
paths |
character vector. Caminhos dos arquivos |
.progress |
logical. Exibe barra de progresso. Default: TRUE. |
Tipicamente você não chama esta função diretamente — ela é usada
internamente por caged_load(). Mas é útil quando você quer controle
manual sobre o que parsear.
tibble empilhado com todos os registros, ou NULL se nenhum arquivo for legível.
caged_parse() para processar um arquivo individual.
caged_to_duckdb() para gravar o resultado no banco.
# Ler todos os arquivos MOV de um diretório de cache cache <- tools::R_user_dir("datacaged", "cache") arquivos_mov <- list.files( file.path(cache, "NOVO_CAGED", "2023"), pattern = "CAGEDMOV", full.names = TRUE ) df <- caged_parse_batch(arquivos_mov) # Gravar no banco após parsear caged_to_duckdb(df, db_path = file.path(tempdir(), "caged.duckdb"))# Ler todos os arquivos MOV de um diretório de cache cache <- tools::R_user_dir("datacaged", "cache") arquivos_mov <- list.files( file.path(cache, "NOVO_CAGED", "2023"), pattern = "CAGEDMOV", full.names = TRUE ) df <- caged_parse_batch(arquivos_mov) # Gravar no banco após parsear caged_to_duckdb(df, db_path = file.path(tempdir(), "caged.duckdb"))
Faz uma requisição leve à API do HuggingFace e retorna o status.
Útil para diagnosticar problemas de conectividade antes de iniciar
um download com caged_load() ou caged_download().
caged_status(timeout = 10, verbose = TRUE)caged_status(timeout = 10, verbose = TRUE)
timeout |
integer. Timeout in seconds. Default: 10. |
verbose |
logical. If TRUE, exibe mensagem detalhada no console. Default: TRUE. |
invisível: lista com campos online (logical), latencia_ms
(numeric), url (character) e mensagem (character).
caged_hf_files() para listar competências disponíveis.
## Not run: caged_status() # Só verificar sem imprimir st <- caged_status(verbose = FALSE) st$online ## End(Not run)## Not run: caged_status() # Só verificar sem imprimir st <- caged_status(verbose = FALSE) st$online ## End(Not run)
Evita duplicatas por competência: antes de inserir, verifica quais
competências do data.frame já existem na tabela e insere apenas as
novas via DBI::dbAppendTable() (útil para re-rodar o pipeline sem
apagar dados anteriores). Com overwrite_competencies = TRUE, as
competências presentes no data.frame são apagadas e regravadas.
caged_to_duckdb( df, db_path = NULL, table = NULL, overwrite_competencies = FALSE, .con = NULL )caged_to_duckdb( df, db_path = NULL, table = NULL, overwrite_competencies = FALSE, .con = NULL )
df |
data.frame or tibble. Data returned by |
db_path |
character or NULL. Path to the file |
table |
character or NULL. Name of the destination table. If NULL,
detecta automaticamente pela coluna |
overwrite_competencies |
logical. If TRUE, deletes records for the competency before inserting (avoids duplicates on re-runs). Default: FALSE. |
.con |
a DBI connection object (optional). If provided, |
A coluna competencia usada como chave identifica o arquivo de origem:
competenciamov em caged_mov, competenciadec em caged_for,
competenciaexc em caged_exc e competencia_declarada em
caged_antigo e caged_ajustes. Para análises pelo mês da
movimentação, use a coluna competenciamov.
As tabelas criadas são:
caged_mov, caged_for, caged_exc — para dados de 2020 em diante
caged_antigo — para dados até 2019 (CAGED antigo)
caged_ajustes — ajustes retroativos do CAGED antigo
invisible: number of rows inserted.
caged_parse() para gerar o data.frame de entrada.
caged_load() para o pipeline completo.
## Not run: # Parse e grava em um único fluxo (requer arquivo baixado) df <- caged_parse("CAGEDMOV202301.7z") caged_to_duckdb(df, db_path = file.path(tempdir(), "caged.duckdb")) # Regravar uma competência já existente caged_to_duckdb(df, db_path = file.path(tempdir(), "caged.duckdb"), overwrite_competencies = TRUE) ## End(Not run)## Not run: # Parse e grava em um único fluxo (requer arquivo baixado) df <- caged_parse("CAGEDMOV202301.7z") caged_to_duckdb(df, db_path = file.path(tempdir(), "caged.duckdb")) # Regravar uma competência já existente caged_to_duckdb(df, db_path = file.path(tempdir(), "caged.duckdb"), overwrite_competencies = TRUE) ## End(Not run)
Usa o mecanismo nativo COPY TO ... (FORMAT PARQUET) do DuckDB para
exportação eficiente. Significativamente mais rápido que collect() +
arrow::write_parquet() para grandes volumes.
caged_to_parquet( db_path, output_dir, tables = NULL, partition_by = NULL, overwrite = FALSE )caged_to_parquet( db_path, output_dir, tables = NULL, partition_by = NULL, overwrite = FALSE )
db_path |
character. Path to the file |
output_dir |
character. Output directory for |
tables |
character vector or NULL. Tables to export. If NULL, exporta todas as tabelas CAGED presentes no banco. |
partition_by |
character vector or NULL. Column(s) for Hive-style
partitioning (ex: |
overwrite |
logical. Overwrite existing files or partition
directories. Se |
invisível: tibble com tabela, arquivo, registros e status
("exportado", "pulado" ou "erro").
caged_info() para listar tabelas disponíveis.
## Not run: db <- file.path(tempdir(), "caged.duckdb") caged_load(years = 2023, months = 1, db_path = db) # Exportar todas as tabelas caged_to_parquet(db, output_dir = tempdir()) # Exportar só caged_mov, particionado por UF caged_to_parquet( db, output_dir = tempdir(), tables = "caged_mov", partition_by = "uf" ) # Particionar por mais de uma coluna caged_to_parquet( db, output_dir = tempdir(), tables = "caged_mov", partition_by = c("competencia", "uf"), overwrite = TRUE ) ## End(Not run)## Not run: db <- file.path(tempdir(), "caged.duckdb") caged_load(years = 2023, months = 1, db_path = db) # Exportar todas as tabelas caged_to_parquet(db, output_dir = tempdir()) # Exportar só caged_mov, particionado por UF caged_to_parquet( db, output_dir = tempdir(), tables = "caged_mov", partition_by = "uf" ) # Particionar por mais de uma coluna caged_to_parquet( db, output_dir = tempdir(), tables = "caged_mov", partition_by = c("competencia", "uf"), overwrite = TRUE ) ## End(Not run)
Consulta o HuggingFace para descobrir as competências disponíveis, compara com o que já existe no banco e baixa apenas o que está faltando. É o modo mais prático de manter o banco atualizado sem re-baixar tudo.
caged_update( db_path, series = "novo", destdir = NULL, workers = getOption("datacaged.workers", min(3L, future::availableCores())), timeout = 300, verbose = TRUE )caged_update( db_path, series = "novo", destdir = NULL, workers = getOption("datacaged.workers", min(3L, future::availableCores())), timeout = 300, verbose = TRUE )
db_path |
character. Path to the file |
series |
character vector. Series to update: |
destdir |
character or NULL. Cache directory for |
workers |
integer. Number of parallel downloads. Default: 3. |
timeout |
integer. Timeout por arquivo em segundos. Default: 300. |
verbose |
logical. Displays details in the console. Default: TRUE. |
A comparação é feita competência a competência e tabela a tabela
(caged_mov, caged_for e caged_exc são verificadas separadamente).
Assim, além das competências novas, também são recuperadas lacunas
dentro do período já presente no banco, por exemplo um arquivo FOR
cujo download falhou em uma carga anterior. Competências anteriores à
primeira competência já gravada não são baixadas; para ampliar o
período para trás, use caged_load(). Com o banco vazio, todas as
competências disponíveis da série são baixadas.
invisível: tibble com estatísticas do banco após a atualização, ou NULL se o banco já estiver atualizado.
caged_load() para carga inicial completa.
caged_info() para inspecionar o banco.
caged_hf_files() para listar competências disponíveis.
## Not run: # Atualizar Novo CAGED com as competências mais recentes caged_update(db_path = file.path(tempdir(), "caged.duckdb")) # Atualizar todas as séries caged_update( db_path = file.path(tempdir(), "caged.duckdb"), series = c("novo", "antigo", "ajustes") ) ## End(Not run)## Not run: # Atualizar Novo CAGED com as competências mais recentes caged_update(db_path = file.path(tempdir(), "caged.duckdb")) # Atualizar todas as séries caged_update( db_path = file.path(tempdir(), "caged.duckdb"), series = c("novo", "antigo", "ajustes") ) ## End(Not run)
Data frame com as 27 unidades federativas do Brasil, seus códigos numéricos do IBGE e suas regiões geográficas. Útil para joins com os microdados do CAGED, que armazenam apenas o código numérico da UF.
uf_codigosuf_codigos
Data frame com 27 linhas e 3 colunas:
Sigla da UF (character), ex: "SP", "RJ", "RN".
Código numérico IBGE da UF (integer), ex: 35, 33, 24.
Região geográfica (character): "Norte", "Nordeste", "Sudeste", "Sul" ou "Centro-Oeste".
IBGE (Instituto Brasileiro de Geografia e Estatistica).
data(uf_codigos) head(uf_codigos) # Join com microdados do CAGED (requer banco populado com caged_load()) ## Not run: con <- caged_connect(file.path(tempdir(), "caged.duckdb")) if ("caged_mov" %in% DBI::dbListTables(con)) { df <- dplyr::tbl(con, "caged_mov") |> dplyr::collect() dplyr::left_join(df, uf_codigos, by = c("uf" = "codigo")) } DBI::dbDisconnect(con, shutdown = TRUE) ## End(Not run)data(uf_codigos) head(uf_codigos) # Join com microdados do CAGED (requer banco populado com caged_load()) ## Not run: con <- caged_connect(file.path(tempdir(), "caged.duckdb")) if ("caged_mov" %in% DBI::dbListTables(con)) { df <- dplyr::tbl(con, "caged_mov") |> dplyr::collect() dplyr::left_join(df, uf_codigos, by = c("uf" = "codigo")) } DBI::dbDisconnect(con, shutdown = TRUE) ## End(Not run)