El dato público existe. El problema es dejarlo listo para usar.
Si trabajas con datos de Chile, probablemente ya conoces la fricción: archivos Excel con formatos cambiantes, códigos territoriales que pierden ceros, fuentes dispersas, APIs inconsistentes y cruces que fallan por diferencias mínimas de nombres.
chile-hub convierte esa última milla en infraestructura reutilizable.
| Necesitas |
chile-hub te entrega |
| Cruzar comunas, regiones o distritos sin limpiar claves a mano |
Códigos CUT normalizados y contratos de esquema |
| Analizar datos oficiales desde Python o SQL |
Parquet + Polars + DuckDB + SQLite |
| Llevar datos a Excel o automatizaciones |
JSON y workbook multipestaña listos para consumo |
| Saber de dónde salió un dato y cuándo se obtuvo |
Procedencia, frescura, licencia y estado por capa |
| Detectar cambios silenciosos en las fuentes |
Validaciones, drift detection y pipeline fail-loud |
¿Solo quieres probarlo? Abre el explorador SQL y consulta los Parquet directamente en tu navegador con DuckDB-WASM. Sin instalar nada.
Un artefacto, no una síntesis. Cada cifra viene de una corrida reproducible contra la fuente oficial, con hash, fecha y advertencias. Lo que no se puede verificar, no se publica.
Instalar y usar en 30 segundos
pip install chile-hub
from chile_hub import ChileHub
hub = ChileHub()
comunas = hub.load_polars("comunas") # 346 comunas, códigos CUT como texto
censo = hub.load_polars("censo_comunal") # población censada por comuna
# Cruce territorial garantizado: la clave es el CUT, nunca un int
df = (
comunas.join(censo, on="codigo_comuna")
.select("codigo_comuna", "nombre_comuna", "nombre_region", "poblacion_censada")
.sort("poblacion_censada", descending=True)
.head(5)
)
print(df)
Resultado real (Censo 2024):
shape: (5, 4)
┌───────────────┬───────────────┬─────────────────────────────────┬───────────────────┐
│ codigo_comuna ┆ nombre_comuna ┆ nombre_region ┆ poblacion_censada │
│ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ str ┆ str ┆ i64 │
╞═══════════════╪═══════════════╪═════════════════════════════════╪═══════════════════╡
│ 13201 ┆ Puente Alto ┆ Región Metropolitana de Santia… ┆ 568086 │
│ 13119 ┆ Maipú ┆ Región Metropolitana de Santia… ┆ 503635 │
│ 13101 ┆ Santiago ┆ Región Metropolitana de Santia… ┆ 438856 │
│ 02101 ┆ Antofagasta ┆ Región de Antofagasta ┆ 401096 │
│ 13110 ┆ La Florida ┆ Región Metropolitana de Santia… ┆ 374836 │
└───────────────┴───────────────┴─────────────────────────────────┴───────────────────┘
En el sitio puedes consultar los mismos Parquet con SQL en el navegador (motor
DuckDB-WASM, sin instalar nada):

La primera ejecución descarga el bundle validado desde GitHub Releases, verifica su
integridad SHA256 y lo deja en cache local; a partir de ahí todo corre contra el cache.
La comprobación semanal de novedades no envía datos de uso y se desactiva con
CHILE_HUB_NO_UPDATE_CHECK=1 (CHILE_HUB_LANG=es|en elige el idioma del aviso).
chile-hub cache update # Forzar descarga del bundle más reciente
chile-hub cache status # Ubicación y estado del cache local
chile-hub cache clear # Liberar espacio
Variante pipeline: pip install chile-hub[pipeline] agrega DuckDB, Pandas,
XlsxWriter y curl_cffi para ejecutar el pipeline completo de extracción y build.
La instalación mínima solo incluye Polars, PyArrow, requests y platformdirs —
suficiente para consumir datos.
[!NOTE]
chile-hub no busca “tener todos los datos de Chile”. Busca reducir drásticamente
el costo técnico de encontrar, limpiar, validar, cruzar y consumir datasets
geográficos, demográficos, electorales y económicos críticos de Chile.
Tampoco es un portal ni una fuente oficial: trabaja aguas abajo de
datos.gob.cl y de las instituciones que publican cada dato,
y siempre enlaza a la fuente oficial. Es un proyecto independiente, sin afiliación con
esas instituciones. Misión y principios: docs/product-spec.md.
En la práctica, responde preguntas como:
- ¿Cómo cruzo mi base de clientes, escuelas o centros de salud con comunas oficiales sin perder ceros en los códigos?
- ¿Qué comunas concentran población censada, establecimientos públicos o indicadores urbanos?
- ¿Cómo llevo datos oficiales a Polars, DuckDB, SQLite, Excel o CI sin depender de enlaces cambiantes?
Versionado: Para entornos productivos, fija la versión exacta en requirements.txt
(revisa el badge de PyPI al inicio de este README para la versión más reciente):
chile-hub==1.57.0
El bundle de datos se publica con cada release. La API del módulo ChileHub sigue
versionado semántico: cambios de interfaz pública solo en major releases.
Por qué confiar
Cada decisión de ingeniería de este proyecto está diseñada para que no tengas que
confiar ciegamente: los datos vienen con la evidencia que los respalda.
Trabajar con datos públicos chilenos suele implicar los mismos obstáculos:
| Sin chile-hub |
Con chile-hub |
| Enlaces rotos y APIs inconsistentes |
Pipeline automatizado con fallbacks y verificación de integridad |
| Planillas Excel deformes con celdas combinadas |
Parquet, DuckDB y JSON listos para producción |
Códigos CUT que pierden ceros al leerse como int |
CUT garantizados como VARCHAR de largo fijo ("01101") |
| Nombres de comunas imposibles de cruzar (Ñuñoa vs Nunoa) |
Columna nombre_comuna_clean normalizada para cruces exactos |
| Cero trazabilidad sobre origen y vigencia del dato |
Metadatos con fuente, fecha de extracción, licencia y modo |
Seis pilares, auditables y verificables en cada build
| Pilar |
Descripción |
Artefacto auditable |
| Procedencia documentada |
Cada dataset declara su fuente oficial exacta con URL directa al organismo público emisor (BCN, INE, MINEDUC, BCCh, MINSAL, datos.gob.cl). |
provenance_report.md — fuente, modo y timestamp por capa |
| Auditoría legal explícita |
Licencia, atribución requerida y permiso de redistribución verificados dataset por dataset — reporte regenerado en cada build en redistribution_report.md. |
redistribution_report.md + AGENTS.md §6 |
| Pipeline fail-loud |
Si una validación falla, el pipeline aborta — no publica datos corruptos, no emite advertencias silenciosas. |
ADR-001 — fail-loud como decisión de arquitectura |
| Contratos de esquema |
26 contratos JSON Schema (contracts/datasets/) definen columnas esperadas, tipos, claves primarias y cobertura. Se validan en cada build automáticamente. |
ADR-005 + contracts/datasets/*.json |
| Salud transparente |
Dashboard público con severidad, frescura, cobertura, drift y degradación por dataset — regenerado en cada build en hub_health.md. |
hub_health.md — estado completo actualizado en cada build |
| Calidad medida |
Puntuación compuesta A-F por dataset (validación, contrato, madurez de fuente, frescura, cobertura y política de reúso); scorecard completo en dataset_quality.md. |
dataset_quality.md — scorecard completo |
Cada pilar se audita automáticamente en cada ejecución del pipeline. Los reportes se
regeneran en cada build — no son documentos estáticos mantenidos a mano. Para auditar
el estado exacto de cualquier capa:
chile-hub provenance # fuente, modo y timestamp por dataset
chile-hub health # severidad, frescura, drift y cobertura
El mismo estado se publica en el sitio, con historial de builds y detalle por capa:

Respaldo adicional
- 1505 tests (
pytest --collect-only) que validan extracción, contratos e integridad de datos.
- 25 ADRs (
docs/adr/) que documentan cada decisión de arquitectura con su contexto, consecuencias y tradeoffs — no solo el “qué”, sino el “por qué”.
- Drift monitoreado: todos los datasets bajo vigilancia de deriva de esquema; cualquier
cambio en la fuente se detecta y registra (
drift_report.md).
- Trazabilidad completa: cada build registra timestamp, versión de extractor y
snapshot de entrada en
provenance_report.md.
Menos trabajo repetido
Reconstruir la serie completa de empresas exige 13 archivos anuales (≈215 MB)
y parsear 1,6 millones de filas. El bundle con las 22 capas, ya normalizadas y
validadas, pesa 31 MB. No medimos el ahorro energético: es una propiedad del
diseño —el trabajo pesado se hace una vez por build y se comparte—, no una cifra
de carbono.
Para una explicación más detallada de la arquitectura y las decisiones de diseño,
lee el caso de estudio: cómo está construido chile-hub.
Qué incluye
Cómo leer los conteos: 23 capas construibles (make build local, incl. 1 en carril
candidate) · 22 publicables (bundle ZIP) · 26 registradas en el catálogo (3 sin
datos: geometría, delincuencia —rejected— y autoridades locales). La convención
completa vive junto al badge superior y en data/source_registry.json.

Mapa territorial interactivo: las 346 comunas con 7 métricas seleccionables
(población, pobreza, permisos, equipamiento, MP2.5) y ficha por comuna.

| # |
Capa |
Fuente |
Licencia |
Actualización |
| 1 |
Regiones |
BCN ArcGIS |
CC BY |
— |
| 2 |
Provincias |
BCN ArcGIS |
CC BY |
— |
| 3 |
Comunas |
BCN ArcGIS |
CC BY |
— |
| 4 |
Comunas Enriquecidas |
BCN + INE |
CC BY |
— |
| 5 |
Indicadores Económicos |
BCCh / mindicador.cl |
Libre c/cita |
Diaria |
| 6 |
Censo Comunal 2024 |
INE |
CC BY 4.0 |
Decenal |
| 7 |
Censo Hogares y Viviendas |
INE |
CC BY 4.0 |
Decenal |
| 8 |
Establecimientos de Salud |
MINSAL / datos.gob.cl |
CC0 |
Mensual |
| 9 |
Distritos Electorales |
BCN / Ley 20.840 |
CC0 |
— |
| 10 |
Establecimientos Educacionales |
MINEDUC |
CC BY 3.0 CL |
Anual |
| 11 |
Finanzas Municipales |
SINIM / SUBDERE |
Revisión términos |
Anual |
| 12 |
Resultados Educacionales |
MINEDUC |
CC BY 3.0 CL |
Anual |
| 13 |
Indicadores Urbanos SIEDU |
INE / SIEDU |
Datos abiertos INE |
Anual |
| 14 |
Perfil Territorial Comunal |
chile-hub derivado |
Fuentes abiertas |
Derivada |
| 15 |
Empresas (RES) |
Min. Economía / datos.gob.cl |
CC-BY 3.0 CL |
Mensual |
| 16 |
Pobreza Comunal (SAE) |
MDS / Observatorio Social |
Datos abiertos MDS |
Bienal/trienal |
| 17 |
Consumo Eléctrico Comunal |
CNE / Energía Abierta |
CC BY |
Anual |
| 18 |
Partidos Políticos |
Cámara de Diputados |
CC BY |
Bajo_demanda |
| 19 |
Autoridades Electas |
Cámara de Diputados + Senado |
CC BY |
Bajo_demanda |
| 20 |
Estadísticas Vitales |
INE |
CC BY 4.0 |
Anual |
| 21 |
Permisos de Edificación |
MINVU / CEDOC |
Uso c/cita |
Mensual |
| 22 |
Calidad del Aire |
MMA / SINCA |
Revisión términos |
Diaria |
| 23 |
Precipitaciones DGAC |
DGAC / datos.gob.cl |
CC BY / CC0 |
Trimestral |
| 24 |
Geometría Comunal |
BCN ArcGIS |
CC BY |
— |
| 25 |
Delincuencia Comunal |
CEAD / SPD |
Revisión términos |
— |
| 26 |
Autoridades Locales |
BCN SIIT + Wikipedia |
CC BY / CC BY-SA |
— |
Métricas por build: el modo de la última extracción, el conteo de
registros, la cobertura y la frescura viven en
hub_health.md,
dataset_status.json y
dataset_quality.md, regenerados en cada
build; los badges resumen frescura y estado:
Para auditar el estado exacto de cada capa: chile-hub provenance y chile-hub health.
El schema de columnas, tipos y PK de cada capa vive en
contracts/datasets/ y en docs/datasets/;
el volcado completo está en el apéndice.
Cada ejecución del pipeline genera en data/normalized/:
| Tipo |
Archivo |
Uso |
| Base de datos |
chile_data.duckdb |
Analítica local de alto rendimiento |
| Base de datos |
chile_data.db |
SQLite para aplicaciones embebidas |
| Intercambio |
*.parquet por capa |
Polars / Pandas / DuckDB |
| Intercambio |
*.json por capa |
Pipelines y automatización |
| Intercambio |
chile_data_latest.xlsx |
Excel multipestaña (códigos CUT como texto) |
| Metadatos |
artifact_manifest.json, hub_health.*, dataset_status.json, dataset_changelog.json, dataset_catalog.*, provenance_report.*, redistribution_report.* |
Catálogo físico, salud, changelog y auditoría |
| Bundle |
chile-hub-publishable-bundle.zip |
Paquete público con verificación SHA256 |
🍳 Recetas de uso
¿Prefieres notebooks? Las cuatro recetas están en
examples/notebooks/ con botón de Colab, o ejecutables
en el explorador SQL del sitio.
1. Últimos indicadores económicos disponibles
from chile_hub import ChileHub
df = ChileHub().load_polars("indicadores")
ultimos = (
df.sort("fecha", descending=True)
.group_by("codigo_indicador")
.first()
.select("codigo_indicador", "fecha", "valor")
.sort("codigo_indicador")
)
print(ultimos)
2. Salud y educación por comuna
from chile_hub import ChileHub
hub = ChileHub()
salud = hub.load_polars("establecimientos_salud")
educacion = hub.load_polars("establecimientos_educacionales")
salud_por_comuna = salud.group_by("codigo_comuna").len("establecimientos_salud")
educacion_por_comuna = educacion.group_by("codigo_comuna").len("establecimientos_educacionales")
resumen = (
hub.load_polars("comunas")
.join(salud_por_comuna, on="codigo_comuna", how="left")
.join(educacion_por_comuna, on="codigo_comuna", how="left")
.fill_null(0)
.select(
"codigo_comuna", "nombre_comuna", "establecimientos_salud", "establecimientos_educacionales"
)
)
print(resumen.head())
3. SQL directo con DuckDB
-- Top 10 comunas por población censada
SELECT nombre_comuna, poblacion_censada, hombres, mujeres
FROM 'data/normalized/censo_comunal.parquet'
ORDER BY poblacion_censada DESC
LIMIT 10;
-- Cruce territorial: comunas × distritos electorales
SELECT c.nombre_comuna, c.nombre_region,
e.distrito_electoral, e.circunscripcion_senatorial
FROM 'data/normalized/comunas.parquet' c
JOIN 'data/normalized/distritos_electorales.parquet' e
ON c.codigo_comuna = e.codigo_comuna
WHERE c.nombre_region = 'Valparaíso';
🧰 API y CLI
API Python compacta
| API |
Uso |
ChileHub() |
Inicializa el helper; descarga y verifica el bundle si no hay cache local. |
ChileHub(data_dir="data/normalized") |
Usa artefactos locales generados por el pipeline. |
hub.list_datasets() |
Lista los nombres canónicos disponibles para load_polars(). |
hub.load_polars("comunas") |
Carga una capa como polars.DataFrame desde Parquet. |
hub.summary() / hub.summary_table() |
Resume modo de fuente, filas, validación, frescura y warnings. |
hub.health() / hub.status() |
Reporta salud operativa para personas y CI/CD. |
hub.redistribution() |
Expone estado legal de reúso y atribución por dataset. |
hub.provenance() |
Muestra fuente, URL, modo de extracción y timestamps. |
chile-hub cache update/status/clear |
Administra el cache local del bundle publicado. |
¿Construyes agentes? El proyecto incluye un servidor MCP con catálogo,
consultas y resolución de comunas para que tu agente consuma los datos sin
integraciones propias: docs/mcp.md.
CLI: los comandos más usados
| Comando |
Para qué |
chile-hub list |
Lista todos los datasets registrados. |
chile-hub show <capa> |
Schema y metadatos detallados de una capa. |
chile-hub example <capa> --kind duckdb |
Receta de consumo lista para copiar y pegar. |
chile-hub cross <a> <b> |
Cruza dos datasets por clave territorial común. |
chile-hub export <capa> --output archivo |
Exporta un dataset a CSV, JSON o Parquet. |
chile-hub health |
Reporte consolidado de salud del hub. |
chile-hub status |
JSON ultraliviano para CI/CD. |
chile-hub provenance |
URLs de origen y métodos de extracción. |
chile-hub redistribution |
Reporte legal de reúso por capa. |
chile-hub dataset-quality |
Puntuación de calidad A-F por dataset. |
chile-hub --help |
Listado completo y siempre actualizado. |
Referencia completa de CLI
Inspección y consulta
| Comando |
Descripción |
chile-hub list |
Lista todos los datasets registrados |
chile-hub version |
Muestra la versión instalada del paquete |
chile-hub cache status |
Muestra ubicación y estado del cache local |
chile-hub cache update |
Descarga y verifica el bundle publicado |
chile-hub cache clear |
Elimina el cache local |
chile-hub show <capa> |
Schema y metadatos detallados de una capa |
chile-hub path <capa> --output parquet |
Ruta física al archivo de una capa |
chile-hub example <capa> --kind duckdb |
Receta de consumo lista para copiar y pegar |
chile-hub overview |
Resumen general del build y estado actual |
chile-hub inventory |
Archivos en data/normalized/ con tamaños y hashes |
chile-hub snapshot |
Snapshot humano y compacto del hub |
chile-hub summary |
Resumen breve de datasets |
chile-hub search <keyword> |
Busca datasets por keyword, fuente o madurez |
chile-hub cross <a> <b> |
Cruza dos datasets por clave territorial común |
chile-hub export <capa> --output archivo |
Exporta un dataset a CSV, JSON o Parquet |
Calidad, salud y auditoría
| Comando |
Descripción |
chile-hub health |
Reporte consolidado de salud del hub |
chile-hub freshness-audit |
Auditoría de frescura contra el reloj actual |
chile-hub runtime-status |
Salud registrada + vigencia en vivo |
chile-hub top-issue |
Capa con mayor degradación operativa |
chile-hub drift |
Desvíos, fallbacks activos y regresiones |
chile-hub status |
JSON ultraliviano para CI/CD |
chile-hub dataset-status |
Estado detallado machine-readable por dataset |
chile-hub dataset-changelog |
Cambios entre el build actual y el metadata anterior |
chile-hub source-readiness |
Madurez de fuente por dataset |
chile-hub dataset-quality |
Puntuación de calidad A-F por dataset |
chile-hub check-sources |
Verifica conectividad en vivo con las fuentes oficiales |
chile-hub validate <capa> |
Valida un dataset (o un CSV/Parquet propio) contra su schema |
Distribución e integridad
| Comando |
Descripción |
chile-hub bundle |
Metadata consolidada en un solo JSON |
chile-hub redistribution |
Reporte legal de reúso por capa |
chile-hub provenance |
URLs de origen y métodos de extracción |
chile-hub verify-package |
Instrucción de verificación de integridad del ZIP |
chile-hub artifacts |
Artefactos publicables del hub |
chile-hub shared-artifacts |
Artefactos compartidos del hub (reportes, manifest) |
chile-hub reports |
Lista los reportes compartidos disponibles |
chile-hub report <nombre> |
Resuelve la metadata de un reporte compartido |
chile-hub packages |
Paquetes publicables del hub |
chile-hub package |
Metadata del package principal del hub |
En entorno de desarrollo, usa python -m chile_hub o python -m src.chile_hub
como alternativa al comando chile-hub si el paquete no está instalado en modo editable.
⚙️ Cómo funciona
El pipeline es lineal, determinista y estricto: si una validación falla, el build se cancela antes de publicar datos corruptos.
flowchart TB
classDef extract fill:#e0f2fe,stroke:#0284c7,stroke-width:2px,color:#0f172a;
classDef stage fill:#ecfeff,stroke:#0891b2,stroke-width:2px,color:#0f172a;
classDef build fill:#fef9c3,stroke:#ca8a04,stroke-width:2px,color:#0f172a;
classDef verify fill:#f0fdf4,stroke:#16a34a,stroke-width:2px,color:#0f172a;
classDef test fill:#fae8ff,stroke:#c084fc,stroke-width:2px,color:#0f172a;
classDef publish fill:#ffe4e6,stroke:#f43f5e,stroke-width:2px,color:#0f172a;
subgraph EXTRACT["1. EXTRACT - fuentes oficiales"]
direction TB
X1["Territorio<br/>BCN / SERVEL"]:::extract
X2["Demografía 2024<br/>INE"]:::extract
X3["Servicios públicos<br/>MINSAL / MINEDUC"]:::extract
X4["Economía<br/>BCCh / SINIM / RES"]:::extract
X5["Indicadores urbanos<br/>SIEDU"]:::extract
end
S["data/staging/<br/>CSV + metadata.json"]:::stage
B["2. BUILD<br/>build_dev_db.py"]:::build
N["data/normalized/<br/>artefactos publicables"]:::stage
V["3. VERIFY<br/>verify_pipeline.py"]:::verify
T["4. TEST<br/>pytest"]:::test
L["5. SMOKE + PUBLISH<br/>landing + bundle"]:::publish
X1 --> S
X2 --> S
X3 --> S
X4 --> S
X5 --> S
S --> B --> N --> V --> T --> L
Invariante crítica: El pipeline aborta si la cardinalidad de comunas ≠ 346, si los códigos CUT pierden el formato VARCHAR, o si alguna regla de negocio se rompe. Nunca se publican datos corruptos.
Extractores incluidos en el paso 1
| Dominio |
Extractores |
| Territorio |
subdere_extractor.py, electoral_extractor.py, geometria_comunal_extractor.py |
| Demografía |
censo_extractor.py, censo_hogares_viviendas_extractor.py, pobreza_extractor.py, estadisticas_vitales_extractor.py |
| Servicios públicos |
salud_extractor.py, mineduc_establecimientos_extractor.py, mineduc_resultados_extractor.py |
| Economía |
bcentral_extractor.py, sinim_finanzas_extractor.py, sinim_finanzas_live_extractor.py, res_extractor.py, consumo_electrico_extractor.py, permisos_edificacion_extractor.py |
| Indicadores urbanos |
siedu_extractor.py |
| Medio ambiente |
calidad_aire_extractor.py, precipitaciones_dgac_extractor.py |
| Política |
partidos_politicos_extractor.py, autoridades_electas_extractor.py, autoridades_locales_extractor.py |
Seguridad (carril candidate) |
cead_delincuencia_live_extractor.py |
Derivado en build_dev_db.py (sin extractor) |
perfil_territorial_comunal |
El mapeo autoritativo entre dataset y extractor vive en
data/dataset_catalog_config.json; esta tabla
es solo orientativa. Detalle completo en AGENTS.md §2.
Modelo de datos: códigos CUT
El valor central de chile-hub es que todas las capas se vinculan jerárquicamente mediante los Códigos Únicos Territoriales (CUT) de SUBDERE/INE:
flowchart TB
R["Territorio base<br/><b>REGIONES</b><br/>codigo_region"]
P["<b>PROVINCIAS</b><br/>codigo_provincia + codigo_region"]
C["<b>COMUNAS</b><br/>codigo_comuna + codigo_provincia + codigo_region"]
L["Capas comunales<br/>codigo_comuna<br/>censo · hogares · salud<br/>educación · distritos · enriquecimiento"]
R --> P --> C --> L
| Grupo |
Clave principal |
Capas |
| Territorio base |
codigo_region, codigo_provincia, codigo_comuna |
regiones, provincias, comunas |
| Capas comunales |
codigo_comuna |
censo, hogares y viviendas, salud, educación, distritos electorales, pobreza, permisos de edificación, calidad del aire, estadísticas vitales, perfil territorial y más |
| Series temporales |
fecha o anio + clave propia |
indicadores, calidad_aire, permisos_edificacion |
| Registros |
clave propia |
empresas (RUT), partidos_politicos, autoridades_electas |
El diagrama entidad-relación completo está en el apéndice.
🗺️ Próximos pasos
El roadmap actual prioriza crecer en usabilidad y confianza antes que agregar más capas.
| Horizonte |
Foco |
Entregable |
Estado |
| Now |
Ejemplos, notebooks, errores claros, referencia API |
Usuarios cargan y cruzan datos sin leer el pipeline completo |
En progreso |
| Next |
Contratos de schema, source readiness, criterios públicos |
Contribuidores proponen datasets con reglas claras y verificables |
Planeado |
| Later |
Nuevas capas solo si pasan criterios de inclusión |
El catálogo crece sin perder mantenibilidad ni claridad legal |
Futuro |
Especificación completa: docs/product-spec.md
Criterios de inclusión: docs/dataset-inclusion-criteria.md
Estado del último build: data/normalized/pipeline_status.md
🤝 Desarrollo y contribución
¿Quieres aportar o pedir un dataset?
No necesitas saber programar ni traer los datos limpios: basta con la fuente y
para qué sirve (o la necesidad, si solo quieres pedirlo). La guía de 2 minutos y
los dos formularios están en
Aportar o solicitar un dataset
(criterios completos).
Desarrollar el pipeline
Esta sección es para contribuidores que ejecutan el pipeline de extracción, build y
verificación en su máquina. Si solo necesitas consumir los datos, usa
pip install chile-hub (ver Instalación).
Requiere uv y Git.
Python lo gestiona uv (make bootstrap).
# Entorno
git clone https://github.com/cortega26/chile-hub.git
cd chile-hub
make bootstrap # Crea .venv, instala dependencias + Playwright
make doctor # Verifica versión de Python y dependencias críticas
# Pipeline completo
make refresh # extract → build → verify → test → landing
# Pasos individuales
make extract # Ejecuta los extractores → data/staging/
make build # Compila artefactos → data/normalized/
make verify # Verifica integridad (SHA256, conteos, schema)
make test # pytest (lee data/normalized/, no corre el pipeline)
make coverage # pytest + cobertura de src/ (term-missing + coverage.xml)
make verify-landing # Pruebas de humo de landing page con Playwright
autoridades_electas requiere scrapling para no degradar a 155 registros
(0 senadores); el comando local está en
Carriles de extracción.
El ZIP publicable no se versiona: make build lo genera localmente y el
sitio lo descarga desde el asset del último GitHub Release. Para clones más
livianos: git clone --filter=blob:none https://github.com/cortega26/chile-hub.
Para entender la arquitectura, las reglas no negociables y el flujo de trabajo, revisa
AGENTS.md; el punto de partida rápido es
SOURCE_OF_TRUTH.md.
¿Encontraste un error o tienes un caso de uso? Abre un
issue — ayuda a priorizar el roadmap.
⚖️ Fuentes, licencias y reúso
Semáforo de redistribución
| Semáforo |
Estado |
Licencia típica |
Acción |
| Verde |
open-attribution |
CC BY, CC0 o equivalente |
Se incluye en el bundle público |
| Amarillo |
public-api-review-terms |
API pública sin licencia explícita |
Se distribuye tras verificar el origen primario |
| Rojo |
restricted |
Derechos de autor, Ley 19.628 |
Nunca se integra al bundle público |
Licencia del proyecto
El código Python se distribuye bajo MIT. Los datasets conservan
las licencias, permisos y requisitos de atribución de sus fuentes oficiales.
Consulta DATA_LICENSES.md, chile-hub redistribution y
chile-hub provenance antes de redistribuir artefactos derivados.
Cómo citar
Si usas chile-hub en un paper, tesis, curso o informe, cita el software y
atribuye la fuente de cada capa. GitHub muestra el botón “Cite this
repository” a partir de CITATION.cff; las recetas BibTeX/APA
y la ruta para un DOI Zenodo están en docs/citation.md.
Autor y mantenedor: Carlos Ortega — ORCID 0009-0000-3470-6181.
📚 Apéndice: esquemas y modelo de datos
Schema completo de cada capa
1. regiones — Capa derivada de regiones para filtros, joins y referencias administrativas de alto nivel. (PK: codigo_region)
| Columna |
Tipo |
Ejemplo |
codigo_region |
VARCHAR(2) |
"01" |
nombre_region |
VARCHAR |
"Tarapacá" |
2. provincias — Capa derivada de provincias para cruces intermedios entre region y comuna. (PK: codigo_provincia)
| Columna |
Tipo |
Ejemplo |
codigo_region |
VARCHAR(2) |
"01" |
nombre_region |
VARCHAR |
"Tarapacá" |
codigo_provincia |
VARCHAR(3) |
"011" |
nombre_provincia |
VARCHAR |
"Iquique" |
3. comunas — Base territorial normalizada para cruces por region, provincia y comuna. (PK: codigo_comuna)
| Columna |
Tipo |
Ejemplo |
codigo_comuna |
VARCHAR(5) |
"01101" |
nombre_comuna |
VARCHAR |
"Iquique" |
nombre_comuna_clean |
VARCHAR |
"iquique" |
codigo_provincia |
VARCHAR(3) |
"011" |
codigo_region |
VARCHAR(2) |
"01" |
nombre_region |
VARCHAR |
"Tarapacá" |
latitud_cabecera |
DOUBLE |
-20.2138 |
longitud_cabecera |
DOUBLE |
-70.1508 |
poblacion_estimada |
INTEGER |
223400 |
4. comunas_enriquecidas — Comunas con coordenadas de cabecera y poblacion estimada INE, listas para analisis territorial sin joins adicionales. (PK: codigo_comuna)
| Columna |
Tipo |
Ejemplo |
codigo_comuna |
VARCHAR(5) |
"01101" |
nombre_comuna |
VARCHAR |
"Iquique" |
nombre_comuna_clean |
VARCHAR |
"iquique" |
codigo_provincia |
VARCHAR(3) |
"011" |
codigo_region |
VARCHAR(2) |
"01" |
latitud_cabecera |
DOUBLE |
-20.2138 |
longitud_cabecera |
DOUBLE |
-70.1508 |
poblacion_estimada |
INTEGER |
223400 |
5. indicadores — Serie de indicadores economicos diarios de referencia para analisis y software. (PK: fecha, codigo_indicador)
| Columna |
Tipo |
Ejemplo |
fecha |
DATE |
"2026-05-30" |
codigo_indicador |
VARCHAR |
"uf" |
valor |
DOUBLE |
39420.5 |
6. censo_comunal — Perfil demografico comunal del Censo 2024 con sexo y grandes grupos de edad. (PK: codigo_comuna)
| Columna |
Tipo |
Ejemplo |
codigo_region |
VARCHAR(2) |
"01" |
codigo_provincia |
VARCHAR(3) |
"011" |
codigo_comuna |
VARCHAR(5) |
"01101" |
nombre_comuna |
VARCHAR |
"Iquique" |
poblacion_censada |
INTEGER |
223400 |
hombres / mujeres |
INTEGER |
"111200 / 112200" |
razon_hombre_mujer |
DOUBLE |
99.11 |
poblacion_0_14 … poblacion_65_mas |
INTEGER |
"5 tramos etarios" |
7. censo_hogares_viviendas — Viviendas y hogares censados por comuna, ocupacion y tamano medio del hogar. (PK: codigo_comuna)
| Columna |
Tipo |
Ejemplo |
codigo_comuna |
VARCHAR(5) |
"01101" |
viviendas_censadas |
INTEGER |
85000 |
viviendas_particulares_ocupadas |
INTEGER |
75000 |
viviendas_colectivas |
INTEGER |
200 |
hogares_censados |
INTEGER |
73000 |
promedio_personas_hogar |
DOUBLE |
3.06 |
8. establecimientos_salud — Directorio vigente de establecimientos de salud con tipo, dependencia, urgencia y ubicacion. (PK: codigo_establecimiento)
| Columna |
Tipo |
Ejemplo |
codigo_establecimiento |
VARCHAR |
"101101" |
nombre_establecimiento |
VARCHAR |
"Hospital Dr. Ernesto Torres Galdames" |
tipo_establecimiento |
VARCHAR |
"Hospital" |
nivel_atencion |
VARCHAR |
"Alta Complejidad" |
codigo_comuna |
VARCHAR(5) |
"01101" |
tiene_servicio_urgencia |
VARCHAR |
"SI" / "NO" |
latitud / longitud |
DOUBLE |
"Coordenadas geográficas" |
estado_funcionamiento |
VARCHAR |
"Vigente" |
9. distritos_electorales — Asociación de comunas a distritos electorales (diputados) y circunscripciones senatoriales. (PK: codigo_comuna)
| Columna |
Tipo |
Ejemplo |
codigo_comuna |
VARCHAR(5) |
"01101" |
nombre_comuna |
VARCHAR |
"Las Condes" |
distrito_electoral |
VARCHAR |
"10" |
circunscripcion_senatorial |
VARCHAR |
"3" |
10. establecimientos_educacionales — Directorio oficial del Ministerio de Educación (MINEDUC) con Rol Base de Datos (RBD), ubicación y dependencia administrativa. (PK: rbd)
| Columna |
Tipo |
Ejemplo |
rbd |
VARCHAR |
"1234-5" |
dv_rbd |
VARCHAR |
"4" |
nombre_establecimiento |
VARCHAR |
"Liceo Abate Molina" |
codigo_comuna |
VARCHAR(5) |
"01101" |
dependencia_administrativa |
VARCHAR |
"Municipal" |
latitud / longitud |
DOUBLE |
"Coordenadas geográficas" |
estado_funcionamiento |
VARCHAR |
"Vigente" |
11. finanzas_municipales — Indicadores financieros municipales anuales desde SINIM/SUBDERE. Cobertura 345/346 comunas (año 2024; falta Antártica 12202, hueco conocido de la fuente). Extracción mensual vía monthly-scrape. (PK: anio, codigo_comuna)
| Columna |
Tipo |
Ejemplo |
anio |
INTEGER |
2024 |
codigo_comuna |
VARCHAR(5) |
"01101" |
ingresos_totales / gastos_totales |
DOUBLE |
245000000000.0 |
ingresos_propios_permanentes |
DOUBLE |
162000000000.0 |
fondo_comun_municipal |
DOUBLE |
39000000000.0 |
12. resultados_educacionales — Resultados educacionales agregados por comuna y año, sin registros personales. (PK: anio, codigo_comuna)
| Columna |
Tipo |
Ejemplo |
anio |
INTEGER |
2024 |
codigo_comuna |
VARCHAR(5) |
"01101" |
matricula_total |
INTEGER |
122000 |
asistencia_promedio |
DOUBLE |
86.2 |
tasa_aprobacion / tasa_retiro |
DOUBLE |
"91.4 / 4.5" |
13. indicadores_urbanos_siedu — Indicadores urbanos SIEDU en formato largo con cobertura comunal parcial esperada. (PK: anio, codigo_comuna, codigo_indicador)
| Columna |
Tipo |
Ejemplo |
anio |
INTEGER |
2024 |
codigo_comuna |
VARCHAR(5) |
"01101" |
codigo_indicador |
VARCHAR |
"siedu_acceso_areas_verdes" |
categoria |
VARCHAR |
"Espacio publico" |
valor / unidad |
DOUBLE |
"71.4 / "porcentaje" |
14. perfil_territorial_comunal — Perfil comunal curado que consolida DPA, censo, salud, educación, finanzas, SIEDU y distritos. (PK: codigo_comuna)
| Columna |
Tipo |
Ejemplo |
codigo_comuna |
VARCHAR(5) |
"01101" |
poblacion_censada |
INTEGER |
223400 |
establecimientos_salud_total |
INTEGER |
140 |
establecimientos_educacionales_total |
INTEGER |
410 |
distrito_electoral |
VARCHAR |
"10" |
crecimiento_natural_ultimo_anio |
INTEGER |
12 |
anio_estadisticas_vitales |
INTEGER |
2023 |
viviendas_autorizadas_ultimo_anio |
INTEGER |
2451 |
superficie_autorizada_m2_ultimo_anio |
INTEGER |
187320 |
anio_permisos_edificacion |
INTEGER |
2023 |
mp25_promedio_ultimo_anio |
DOUBLE |
18.4 |
anio_calidad_aire |
INTEGER |
2026 |
tasa_pobreza_ingresos_ultimo_anio |
DOUBLE |
9.0 |
tasa_pobreza_multidimensional_ultimo_anio |
DOUBLE |
19.5 |
anio_pobreza |
INTEGER |
2022 |
15. empresas — Registro de Empresas y Sociedades (RES) con RUT, razon social, tipo societario, capital, fecha de constitucion y comuna de domicilio. (PK: rut)
| Columna |
Tipo |
Ejemplo |
rut |
VARCHAR |
"76286049-K" |
razon_social |
VARCHAR |
"COMERCIALIZADORA EJEMPLO SPA" |
codigo_sociedad |
VARCHAR |
"SPA" |
capital |
INTEGER |
5000000 |
fecha_actuacion |
DATE |
"2020-06-15" |
anio |
INTEGER |
2020 |
comuna_tributaria |
VARCHAR |
"SANTIAGO" |
region_tributaria |
VARCHAR |
"13" |
16. pobreza_comunal — Estimaciones de pobreza comunal por ingresos y multidimensional derivadas de la encuesta CASEN mediante metodología SAE (Estimación de Áreas Pequeñas). Incluye tasa, límite inferior y superior del intervalo de confianza por comuna, año y dimensión. (PK: codigo_comuna, anio, dimension)
| Columna |
Tipo |
Ejemplo |
codigo_region |
VARCHAR(2) |
"01" |
codigo_comuna |
VARCHAR(5) |
"01101" |
nombre_comuna |
VARCHAR |
"Santiago" |
anio |
INTEGER |
2022 |
dimension |
VARCHAR |
"ingresos" / "multidimensional" |
tasa |
DOUBLE |
15.3 |
limite_inferior |
DOUBLE |
12.1 |
limite_superior |
DOUBLE |
18.9 |
metodologia |
VARCHAR |
"SAE" |
fuente |
VARCHAR |
"Observatorio Social — MDS" |
17. consumo_electrico_comunal — Consumo eléctrico anual por comuna y tipo de cliente (Residencial, Comercial, Industrial, Agrícola, Alumbrado Público, Otros), publicado por la Comisión Nacional de Energía (CNE) en el portal Energía Abierta. DEPRECATED: la fuente Junar de energiaabierta.cl fue decomisionada (investigado 2026-07-07); el dataset solo publica datos de muestra (FALLBACK_ROWS), no está en el bundle público. Ver data/source_registry.json. (PK: codigo_comuna, anio, tipo_cliente)
| Columna |
Tipo |
Ejemplo |
codigo_region |
VARCHAR(2) |
"01" |
codigo_comuna |
VARCHAR(5) |
"01101" |
nombre_comuna |
VARCHAR |
"Santiago" |
anio |
INTEGER |
2023 |
tipo_cliente |
VARCHAR |
"Residencial" |
consumo_kwh |
DOUBLE |
1523400.5 |
numero_clientes |
INTEGER |
45800 |
fuente |
VARCHAR |
"CNE — Energía Abierta" |
18. partidos_politicos — Roster de partidos políticos de Chile (Cámara de Diputadas y Diputados), con estado_legal y fecha_constitucion completados por join de nombre contra el registro público de SERVEL. (PK: id_partido)
| Columna |
Tipo |
Ejemplo |
id_partido |
VARCHAR |
"DC" |
nombre |
VARCHAR |
"Partido Demócrata Cristiano" |
sigla |
VARCHAR |
"DC" |
estado_legal |
VARCHAR |
"constituido" (nulo si no matchea con SERVEL)"` |
fecha_constitucion |
DATE |
"1988-05-02" |
ambito |
VARCHAR |
"null (sin fuente que lo provea)"` |
fuente |
VARCHAR |
"Cámara de Diputadas y Diputados" |
19. autoridades_electas — Autoridades electas en ejercicio de Chile (diputados y senadores): partido, distrito electoral/circunscripción senatorial, región y período de mandato. (PK: id_autoridad)
| Columna |
Tipo |
Ejemplo |
id_autoridad |
VARCHAR |
"diputado_1009" |
nombre |
VARCHAR |
"Jorge Alessandri Vergara" |
cargo |
VARCHAR |
"diputado" / "senador" |
institucion |
VARCHAR |
"Cámara de Diputadas y Diputados" / "Senado" |
partido |
VARCHAR |
"Unión Demócrata Independiente" |
distrito_electoral |
VARCHAR |
"10" (solo diputados)"` |
circunscripcion_senatorial |
VARCHAR |
"3" (solo senadores)"` |
codigo_region |
VARCHAR(2) |
"02" (solo senadores)"` |
periodo_inicio / periodo_fin |
DATE |
"2026-03-11 / 2030-03-10" |
estado_mandato |
VARCHAR |
"vigente" |
20. estadisticas_vitales — Nacimientos y defunciones por comuna de residencia y sexo, desde los Anuarios de Estadísticas Vitales del INE (definitivos, 2010 en adelante). (PK: anio, codigo_comuna, evento, sexo)
| Columna |
Tipo |
Ejemplo |
anio |
INTEGER |
2023 |
codigo_region |
VARCHAR(2) |
"13" |
codigo_comuna |
VARCHAR(5) |
"13101" |
nombre_comuna |
VARCHAR |
"Santiago" |
evento |
VARCHAR |
"nacimiento" |
sexo |
VARCHAR |
"hombre" |
cantidad |
INTEGER |
4521 |
estado_dato |
VARCHAR |
"definitivo" |
fuente |
VARCHAR |
"Instituto Nacional de Estadísticas (INE) — Estadísticas Vitales" |
url_fuente |
VARCHAR |
"https://www.ine.gob.cl/docs/default-source/.../2023/....xlsx" |
fecha_fuente |
VARCHAR |
"2026-09-14" |
21. permisos_edificacion — Viviendas en unidades y superficie (m2) por comuna y año —casas y departamentos— desde las estadísticas de permisos de edificación del CEDOC (MINVU), serie desde 2002. (PK: anio, codigo_comuna)
| Columna |
Tipo |
Ejemplo |
anio |
INTEGER |
2023 |
codigo_region |
VARCHAR(2) |
"13" |
codigo_comuna |
VARCHAR(5) |
"13101" |
nombre_comuna |
VARCHAR |
"Santiago" |
unidades_total |
INTEGER |
2451 |
superficie_m2_total |
INTEGER |
187320 |
unidades_casas |
INTEGER |
312 |
superficie_m2_casas |
INTEGER |
24810 |
unidades_departamentos |
INTEGER |
2139 |
superficie_m2_departamentos |
INTEGER |
162510 |
estado_dato |
VARCHAR |
"definitivo" |
fuente |
VARCHAR |
"MINVU — Centro de Estudios de Ciudad y Territorio (CEDOC)" |
url_fuente |
VARCHAR |
"https://catalogo.minvu.cl/cgi-bin/koha/opac-retrieve-file.pl?id=..." |
fecha_fuente |
VARCHAR |
"2026-09-15" |
22. calidad_aire — Promedios diarios de contaminantes atmosféricos (MP2.5, MP10, SO2, NO2, CO, O3) por estación de monitoreo, desde el SINCA (MMA). Cobertura parcial: ~65 comunas con estación. (PK: fecha, id_estacion, codigo_contaminante)
| Columna |
Tipo |
Ejemplo |
fecha |
VARCHAR |
"2026-09-14" |
id_estacion |
VARCHAR |
"271" |
nombre_estacion |
VARCHAR |
"Quilicura" |
codigo_region |
VARCHAR(2) |
"13" |
codigo_comuna |
VARCHAR(5) |
"13144" |
nombre_comuna |
VARCHAR |
"Quilicura" |
latitud |
DOUBLE |
-33.36 |
longitud |
DOUBLE |
-70.73 |
codigo_contaminante |
VARCHAR |
"mp25" |
nombre_contaminante |
VARCHAR |
"MP 2,5" |
unidad |
VARCHAR |
"ug/m3" |
valor_promedio_diario |
DOUBLE |
18.4 |
valor_max_horario |
DOUBLE |
42.0 |
horas_validas |
INTEGER |
24 |
estado_dato |
VARCHAR |
"definitivo" |
fuente |
VARCHAR |
"SINCA — Ministerio del Medio Ambiente" |
url_fuente |
VARCHAR |
"https://sinca.mma.gob.cl/index.php/json/listadomapa2k19/" |
fecha_fuente |
VARCHAR |
"2026-09-15" |
23. precipitaciones_dgac — Precipitaciones diarias por estación meteorológica DGAC: serie 2013–2026 con 143 meses verificables, sin interpolación ni asignación de CUT; lagunas de cobertura y licencias explícitas. (PK: fecha, id_estacion)
| Columna |
Tipo |
Ejemplo |
fecha |
VARCHAR |
"2013-01-01" |
id_estacion |
VARCHAR(6) |
"180005" |
nombre_estacion |
VARCHAR |
"Chacalluta, Arica Ap." |
latitud_dms |
VARCHAR |
"18° 21' 20'' S" |
altitud_m |
DOUBLE |
50 |
precipitacion_mm |
DOUBLE |
0.5 |
url_fuente |
VARCHAR |
"https://datos.gob.cl/dataset/.../download/precipitacion_012013.csv" |
licencia_fuente |
VARCHAR |
"cc-by" |
24. geometria_comunal — Límites poligonales de las 346 comunas de Chile (GeoParquet, geometría ‘generalizada’ — simplificada para cartografía a escala nacional, no apta para trabajo de precisión geodésica ni catastral). Fuente: BCN ArcGIS (tematico/Comunas_Generalizadas). Artefacto separado de comunas, unido por codigo_comuna. (en carril candidate — datos no incluidos en el bundle público) (PK: codigo_comuna)
| Columna |
Tipo |
Ejemplo |
codigo_region |
VARCHAR(2) |
"01" |
codigo_comuna |
VARCHAR(5) |
"01101" |
nombre_comuna |
VARCHAR |
"Iquique" |
nombre_comuna_clean |
VARCHAR |
"iquique" |
nombre_region |
VARCHAR |
"Región de Tarapacá" |
geometry |
BINARY |
"WKB — Polygon o MultiPolygon en EPSG:4326 (WGS84), geoparquet 1.0" |
25. delincuencia_comunal — DEPRECATED 2026-09-15: Casos policiales de Delitos de Mayor Connotación Social (DMCS) y otras categorías por comuna y mes. Sin fuente estructurada oficial (solo scraping frágil) y no redistribuible; extractor neutralizado y fuera del scrape mensual. Ver docs/datasets/delincuencia_comunal.md. (en carril candidate — datos no incluidos en el bundle público) (PK: anio, mes, codigo_comuna, familia_delito)
| Columna |
Tipo |
Ejemplo |
codigo_comuna |
VARCHAR(5) |
"01101" |
nombre_comuna |
VARCHAR |
"Santiago" |
anio |
INTEGER |
2024 |
mes |
INTEGER |
1 |
familia_delito |
VARCHAR |
"robos_violentos" |
casos |
INTEGER |
245 |
26. autoridades_locales — Autoridades locales/subnacionales de Chile: gobernadores regionales (Wikipedia, CC-BY-SA) y alcaldes (BCN SIIT, dato público gubernamental). Wikipedia se mantiene como fuente de gobernadores y enriquecimiento opcional de periodo_inicio para alcaldes. Dataset segregado de autoridades_electas por licencia mixta. (en carril candidate — datos no incluidos en el bundle público) (PK: id_autoridad)
| Columna |
Tipo |
Ejemplo |
id_autoridad |
VARCHAR |
"gobernador_01" |
nombre |
VARCHAR |
"null si no hay evidencia clara del titular"` |
cargo |
VARCHAR |
"gobernador_regional" / "alcalde" |
codigo_region |
VARCHAR(2) |
"01" |
codigo_comuna |
VARCHAR(5) |
"01101" (solo alcaldes)"` |
partido |
VARCHAR |
"nulo si no identificado" |
estado_mandato |
VARCHAR |
"vigente" / "sin_identificar" |
Diagrama entidad-relación (capas principales)
erDiagram
REGIONES {
VARCHAR codigo_region PK "Ej: '01' (Tarapacá)"
VARCHAR nombre_region
}
PROVINCIAS {
VARCHAR codigo_provincia PK "Ej: '011' (Iquique)"
VARCHAR codigo_region FK
VARCHAR nombre_provincia
}
COMUNAS {
VARCHAR codigo_comuna PK "Ej: '01101' (Iquique)"
VARCHAR codigo_provincia FK
VARCHAR codigo_region FK
VARCHAR nombre_comuna
VARCHAR nombre_comuna_clean "Ej: 'iquique' (sin tildes)"
}
COMUNAS_ENRIQUECIDAS {
VARCHAR codigo_comuna PK
VARCHAR nombre_comuna
DOUBLE latitud_cabecera
DOUBLE longitud_cabecera
INTEGER poblacion_estimada
}
CENSO_COMUNAL {
VARCHAR codigo_comuna PK
INTEGER poblacion_censada
INTEGER hombres
INTEGER mujeres
INTEGER poblacion_0_14
}
CENSO_HOGARES_VIVIENDAS {
VARCHAR codigo_comuna PK
INTEGER viviendas_censadas
INTEGER hogares_censados
DOUBLE promedio_personas_hogar
}
ESTABLECIMIENTOS_SALUD {
VARCHAR codigo_establecimiento PK
VARCHAR codigo_comuna FK
VARCHAR nombre_establecimiento
VARCHAR tipo_establecimiento
}
DISTRITOS_ELECTORALES {
VARCHAR codigo_comuna PK
VARCHAR distrito_electoral
VARCHAR circunscripcion_senatorial
}
ESTABLECIMIENTOS_EDUCACIONALES {
VARCHAR rbd PK "Rol Base de Datos"
VARCHAR codigo_comuna FK
VARCHAR nombre_establecimiento
}
INDICADORES {
DATE fecha PK
VARCHAR codigo_indicador PK "Ej: 'uf', 'dolar'"
DOUBLE valor
}
REGIONES ||--o{ PROVINCIAS : "contiene"
PROVINCIAS ||--o{ COMUNAS : "contiene"
COMUNAS ||--|| COMUNAS_ENRIQUECIDAS : "enriquece"
COMUNAS ||--o| CENSO_COMUNAL : "demografía"
COMUNAS ||--o| CENSO_HOGARES_VIVIENDAS : "hogares"
COMUNAS ||--o{ ESTABLECIMIENTOS_SALUD : "salud"
COMUNAS ||--o{ ESTABLECIMIENTOS_EDUCACIONALES : "educación"
COMUNAS ||--o| DISTRITOS_ELECTORALES : "electoral"
Hecho con datos públicos chilenos, para quienes construyen sobre Chile.
Parte del ecosistema Tooltician — datos públicos, interoperables y listos para IA.
评论