Para qué sirve
Nace con dos objetivos: mostrar de extremo a extremo cómo se construye un producto de datos (ingesta, transformación, API y frontend) y servir como laboratorio personal para profundizar en data engineering sobre Azure: lakehouse, orquestación, procesamiento distribuido y exposición analítica. De momento el dashboard refleja un snapshot de agosto de 2026; la idea es ampliarlo para medir la evolución estadística mes a mes.
Obtención de datos
Los datos públicos del mercado inmobiliario suelen ser limitados, inexactos y desactualizados. Por eso los anuncios de vivienda se obtienen mediante web scraping de portales inmobiliarios: una fuente más fresca y detallada. Se ha reunido un volumen grande de anuncios; la extracción captura atributos de oferta (precio, superficie, tipología, ubicación, equipamiento, rebajas, etc.) que alimentan el lakehouse.
Pipeline · Bronze / Silver / Gold
Los datos viven en Azure Data Lake Storage Gen2, organizados en contenedores por capa medallion:
- Bronze — datos crudos tal como llegan del scraping: JSON/CSV o dumps sin limpiar, con el máximo de fidelidad a la fuente.
- Silver — datos limpios y tipados: deduplicación, normalización de municipios/distritos/barrios, validación de precios y superficies, y un modelo tabular listo para analizar.
- Gold — agregados de negocio en Delta Lake (panorama, municipios, distritos, barrios, tipologías, liquidez, oportunidades, etc.) pensados para consumir desde la API y el dashboard.
Procesamiento y orquestación
El procesamiento se ejecuta en Azure Databricks (PySpark / notebooks) sobre las capas del lake: limpieza Bronze→Silver y generación de tablas Gold. La orquestación y el movimiento de datos entre entornos y capas se coordina con Azure Data Factory (pipelines, disparos y programación de cargas).
API · App Service
La API analítica se aloja en Azure App Service.
Stack: Python + FastAPI, lectura de tablas Delta
Gold vía DuckDB (Azure ADLS), caché en memoria,
autenticación por API key y contrato REST
(/api/v1/…, /stats/…).
Frontend
El dashboard es una SPA con Vite, JavaScript vanilla, CSS propio y Leaflet para el mapa. Se publica en Azure Static Web Apps, con un BFF en Azure Functions que proxyfica las peticiones a App Service e inyecta la API key en servidor (sin exponerla en el navegador). Las vistas de Gráficos y Mapa se crearán pronto; hoy el foco está en el Resumen con KPIs, tipología, liquidez y oportunidades.
Qué muestra el Resumen
Cada bloque del Resumen se calcula en Gold a partir de los anuncios Silver y se filtra en el front según localidad, distrito o barrio:
-
KPIs principales — precio medio y mediano
€/m², número de anuncios y % rebajados. Salen de
panorama_global_agg,municipios_solo_agg,distritos_aggobarrios_aggsegún el nivel de filtro. -
Tipología — % exterior/interior, €/m²
mediano por tipología, habitaciones y €/m² con terraza.
Tipología desde
tipologias_agg(municipio / distrito); el precio con terraza desdeprimas_equipamiento_agg. En barrio solo se muestra si hay más de 80 anuncios (si no, mensaje de muestra insuficiente). -
Liquidez y descuentos — % rebajadas, rebaja
media en € y %, y rebaja máxima %. Agregado por zona en
liquidez_descuentos_agg(municipio / distrito). Misma regla de muestra en barrio (> 80 anuncios). -
Oportunidades — anuncios con z-score de
€/m² ≤ −1.5 frente a la media de su barrio
(
oportunidades_outliers): candidatos sustancialmente más baratos que su entorno. - Listado inferior — ranking de localidades, distritos o barrios (precio €/m² y anuncios) según el filtro activo, usando las mismas tablas de agregación del nivel correspondiente.