Mejora un 90% el rendimiento de Power Query con SQLite
Power Query es una herramienta potente para consolidar, combinar y calcular datos, pero cuando trabajamos con millones de registros y calculos complejos por fila, el rendimiento se degrada drasticamente. En esta sesion partimos de un caso real: una tabla de 2.3 millones de pedidos donde hay que cruzar centros, zonas, descuentos, comisiones y rappels por tramos de volumen.
Con Power Query puro, el proceso completo tarda unos 90-110 segundos en una buena maquina (i7 13a gen, 32GB RAM). Pero el paso critico -- el calculo del rappel por tramos, que requiere buscar por fila en otra tabla -- sin usar Table.Buffer pasa de 25 segundos a 487 (casi 10 minutos). Y si ademas necesitas ordenar los 2 millones de filas, sube otros 200 segundos mas.
La alternativa: usar SQLite como motor intermedio. SQLite es una base de datos que se instala como un simple driver en tu PC, sin servidores ni licencias. La idea es volcar los datos de origen a SQLite (una sola vez o incrementalmente) y dejar que el motor SQL haga los joins y calculos pesados. Luego Power Query solo tiene que leer el resultado final.
El fichero adjunto (InfluLite_v1.xlsm) es un framework con macros VBA y un ribbon personalizado que facilita toda la operativa desde Excel:
- Crear tabla: seleccionas un rango en Excel y lo conviertes en tabla SQLite
- Insertar: anyades registros a una tabla existente (por lotes, ideal para cargas grandes)
- Query: ejecutas consultas SQL directamente desde una celda y ves el resultado en la hoja
- Tabla: traes una tabla entera de la base de datos a Excel
- Log: cada accion queda registrada para trazabilidad (saber que se cargo, cuando y como)
- Borrar log: deshace una carga concreta si detectas un error
Resultados de rendimiento:
| Metodo | Tiempo |
|--------|--------|
| Power Query completo | ~110 seg |
| Power Query (rappel sin buffer) | ~490 seg |
| SQLite via ODBC + Power Query | ~14-18 seg |
| SQLite consulta directa (VBA) | ~7 seg |
La mejora es de un 85-90% en el caso general, y la consulta directa SQL reduce el tiempo a menos de 10 segundos para los mismos 2.3 millones de registros. Ademas, la arquitectura incremental evita reprocesar historicos: si llega un fichero nuevo, solo insertas ese fichero en SQLite, no recalculas todo.
| Descargas SQLite | URL |
|------------------|-----|
| Driver (obligatorio) | http://www.ch-werner.de/sqliteodbc/ |
| SQLite Admin (recomendable) | https://sqlite.org/ |
Sesion impartida por Nacho Cardenal en el canal de Sergio Alejandro Campos (EXCELeINFO).
Más contenido de Excel en InflueXcel
- BUSCARX con valor devuelto dinámico: elige la columna con un botón o un segmentador CasoUna integrante de la comunidad planteó un reto muy habitual al trabajar con tablas de varias columnas: tiene una lista de municipios con cua
- Saldo acumulado por mes: tres enfoques (REDUCE+BYROW, PIVOTARPOR+acumulado, MMULT) CasoJuan plantea una pregunta que parece sencilla y se acaba convirtiendo en tres clases magistrales sobre cómo recorrer una matriz mes a mes. T
- Mapa de España con burbujas: ubicar variables por provincia usando coordenadas X/Y CasoEsta semana surgió una duda muy visual en el grupo: cómo mostrar dos variables por provincia en un mapa de España — una pintada en intensida
- Regularización trimestral con AGRUPARPOR y ARCHIVOMAKEARRAY: del caos a una fórmula CasoCaso fresquito de la comunidad. Juan plantea un problema contable: tiene una tabla de movimientos (Nombre, Cuenta, Importe, Fecha) y necesit
- Grado de avance por proyecto: despivotar y volver a pivotar por fecha CasoNuevo caso de la comunidad con mucho jugo para los que trabajan con reporting de proyectos. Juan plantea un problema habitual en oficinas té
- Reto de Excel: El cumpleaños de Bilbo 🎂 | CONTAR.SI y SUMAR.SI desde cero (Nivel 1) TutorialEn La Comarca se celebra el cumpleaños número 111 de Bilbo Bolsón: cerveza, pasteles, fuegos artificiales… y algún curioso escondido tras el
- ¡Excel PowerQuery Hack! Conexiones con rutas relativas en 10 minutos! Tutorial¿Harto de ajustar las conexiones en PowerQuery cada vez que compartes tu archivo de Excel? 🙄 Convierte las conexiones de PowerQuery con ruta
- Nueva Función IMPORTTEXT TutorialNueva función IMPORTTEXT en Excel!! https://techcommunity.microsoft.com/blog/microsoft365insiderblog/bring-data-into-excel-with-the-new-impo
- ¿Columnas con nombres distintos en Power Query? Tutorial¿Columnas con nombres distintos en Power Query? Aquí tienes la solución definitiva para normalizar tus datos y evitar errores al combinar fi
- ¿Por qué nadie te contó esto? Funciones CUBO en Excel Tutorial¿Sabías que puedes acceder a los datos del modelo en Excel sin usar tablas dinámicas? En este tutorial aprenderás cómo usar las funciones CU