Incremental Refresh in Power BI: Handling Large Datasets Efficiently

Master Power BI incremental refresh to handle datasets with millions of rows — configure partitions, set refresh policies, and maintain fast model performance at scale.

E
ECOSIRE Research and Development Team
|19 de marzo de 202614 min de lectura3.0k Palabras|

Parte de nuestra serie Performance & Scalability

Leer la guía completa

Actualización incremental en Power BI: manejo eficiente de grandes conjuntos de datos

Cada implementación de Power BI eventualmente choca contra el mismo muro: el conjunto de datos se vuelve lo suficientemente grande como para que las actualizaciones completas demoren demasiado, consuman demasiados recursos y excedan las ventanas de tiempo disponibles antes de que los usuarios necesiten los datos.

Una tabla de transacciones con 50 millones de filas, que se actualiza completamente cada 4 horas, no sólo lleva mucho tiempo: desperdicia recursos al volver a cargar datos que no han cambiado. La actualización incremental resuelve esto cargando solo registros nuevos y modificados, mientras conserva los datos históricos que no cambian. Si se hace correctamente, un conjunto de datos que anteriormente tardaba 3 horas en actualizarse puede actualizarse en menos de 10 minutos.

Esta guía cubre la actualización incremental en Power BI desde los primeros principios hasta la configuración avanzada, incluidos los errores comunes que interrumpen las implementaciones y las mejores prácticas que las hacen confiables para la producción.

Conclusiones clave

  • La actualización incremental divide los conjuntos de datos por fecha, cargando solo datos recientes en cada ciclo de actualización : requiere una columna de fecha y hora en la tabla de hechos y dos parámetros de Power Query (RangeStart, RangeEnd)
  • Los datos históricos se conservan en particiones más antiguas que nunca se vuelven a consultar después de la carga inicial
  • Se requiere Power BI Premium (o Fabric) para la actualización incremental con más de 10 particiones
  • La opción Detectar cambios de datos reduce aún más el procesamiento al actualizar solo las particiones donde los datos cambiaron
  • Las tablas híbridas (que combinan importación y DirectQuery) permiten datos en tiempo real junto con particiones de importación históricas.
  • La configuración adecuada requiere comprender el plegado de Power Query: las consultas no plegables interrumpen la actualización incremental
  • La supervisión del estado de la partición a través del punto final XMLA y herramientas de terceros evita fallos silenciosos

Cómo funciona la actualización incremental

La comprensión de la actualización incremental comienza con la comprensión de cómo Power BI particiona los datos.

En un modelo de importación estándar, todo el conjunto de datos reside en una única partición. Cada actualización reemplaza esta partición por completo. Para conjuntos de datos pequeños, esto está bien. Para tablas grandes, crea los problemas descritos anteriormente.

La actualización incremental divide la tabla de hechos en varias particiones, cada una de las cuales cubre un rango de fechas específico:

  • Partición 1: 2020-01-01 a 2020-12-31 (histórico, nunca actualizado)
  • Partición 2: 2021-01-01 a 2021-12-31 (histórico, nunca actualizado)
  • Partición 3: 2022-01-01 a 2022-12-31 (histórico, nunca actualizado)
  • Partición 4: 2023-01-01 a 2023-12-31 (histórico, nunca actualizado)
  • Partición 5: 2024-01-01 a 2024-12-31 (actualizada mensualmente)
  • Partición 6: 2025-01-01 a 2025-03-31 (actualizada diariamente)
  • Partición 7: 2025-04-01 al actual (actualizado cada hora o según demanda)

En cada actualización programada, solo se procesan las particiones más recientes (5, 6 y 7 en este ejemplo). Las particiones históricas permanecen intactas desde que se cargaron por primera vez. Esto significa que un ciclo de actualización procesa solo una fracción de los datos totales, lo que reduce drásticamente el tiempo, la memoria y la carga del sistema de origen.


Prerrequisitos y requisitos

Antes de configurar la actualización incremental, verifique que se cumplan estos requisitos previos:

Licencias: la actualización incremental está disponible en Power BI Pro (con limitaciones) y Power BI Premium/Fabric (capacidad completa). Con Pro, puedes configurar hasta 10 períodos de actualización. Premium elimina este límite y agrega la función "detectar cambios de datos".

Columna de fecha y hora: la tabla de hechos debe tener una columna de fecha y hora (no un entero de clave de fecha; debe ser un tipo de fecha y hora real) que Power BI usará para particionar los datos. Suele ser la fecha de la transacción, la marca de tiempo del evento o la columna de creación.

Plegado de consultas: la consulta de Power Query que carga la tabla de hechos debe admitir el plegado de consultas: la capacidad de traducir los pasos de transformación de Power Query en una consulta de origen (SQL, etc.) que ejecuta el sistema de origen. Si el plegado de consultas se interrumpe, la actualización incremental falla silenciosamente: carga todos los datos en cada actualización, lo que frustra su propósito.

Compatibilidad con el sistema de origen: el origen debe admitir el filtrado de rango de fechas de manera eficiente. Una tabla de origen sin un índice en la columna de fecha y hora producirá actualizaciones lentas incluso con la actualización incremental configurada, porque cada actualización de partición realizará un escaneo completo de la tabla para buscar registros en el rango de fechas.


Configuración paso a paso

Paso 1: Cree los parámetros de Power Query necesarios

En Power BI Desktop, abra Power Query Editor. Vaya a Administrar parámetros → Nuevo parámetro.

Cree dos parámetros exactamente de la siguiente manera (los nombres distinguen entre mayúsculas y minúsculas y deben coincidir exactamente):

ParámetroNombreTipoValor
Inicio de rangoRangoInicioFecha/HoraCualquier fecha histórica
Fin de rangoFin del rangoFecha/HoraFecha actual

Estos parámetros deben ser de tipo Fecha/Hora, no Fecha. El motor de actualización de Power BI los invalidará en tiempo de ejecución, pero necesitan valores predeterminados válidos para el desarrollo y las pruebas.

Paso 2: filtrar la tabla de hechos usando estos parámetros

En el Editor de Power Query, seleccione su tabla de hechos. Aplique un filtro en la columna de fecha y hora usando los parámetros:

= Table.SelectRows(Source, each [TransactionDate] >= RangeStart and [TransactionDate] < RangeEnd)

Este paso de filtrado es fundamental: debe plegarse a la fuente de datos. Para verificar el plegado, haga clic derecho en el último paso de la consulta y verifique si "Ver consulta nativa" está disponible. Si está atenuado, el plegado se ha roto: investigue qué pasos de transformación superiores están rompiendo la cadena de plegado.

Paso 3: Verificar el plegado de consultas

El plegado de consultas se interrumpe más comúnmente debido a:

  • Funciones personalizadas que no se pueden traducir a SQL
  • Fusionar (unir) dos consultas donde una o ambas no se pliegan
  • Ciertas funciones de transformación de texto (Text.Upper, Text.PadStart)
  • Uso de operaciones de lista (List.Contains)
  • Agregar una columna de índice
  • Ciertas operaciones de conversión de tipos.

Si el plegado se rompe, refactorice la consulta para llevar las operaciones problemáticas a un paso posterior después del filtro de fecha, o realice la transformación en una vista en la base de datos de origen en lugar de en Power Query.

Paso 4: Configurar la política de actualización incremental

En Power BI Desktop, haga clic con el botón derecho en la tabla de hechos en el panel Campos → Actualización incremental.

Las opciones de configuración:

  • Almacenar filas en los últimos N años/meses/días calendario: Esto define la ventana histórica total mantenida en el modelo. Los datos anteriores a esta se eliminan automáticamente del modelo (particiones eliminadas).

  • Solo actualizar filas en los últimos N años/meses/días calendario: esto define la ventana móvil que se vuelve a actualizar en cada ciclo. Los datos anteriores a esta ventana se tratan como históricos (inmutables) y nunca se actualizan nuevamente.

  • Detectar cambios de datos: (solo Premium) Utiliza una columna de fecha y hora separada (generalmente una columna de "última modificación") para detectar qué particiones históricas han cambiado datos y solo vuelve a procesar esas particiones.

Ejemplo de configuración para una base de datos transaccional con 5 años de historia:

  • Filas de tiendas en los últimos 5 años
  • Actualizar solo filas en los últimos 3 días

Esto crea particiones que cubren 5 años de datos, pero solo las particiones de los últimos 3 días se actualizan en cada ciclo.

Paso 5: Publicar y validar

Publique el informe en el servicio Power BI. La primera actualización después de la publicación tardará más que las actualizaciones posteriores: carga todos los datos históricos y crea todas las particiones por primera vez. Esto es lo que se espera.


Configuración avanzada: detectar cambios de datos

La opción "Detectar cambios de datos" en Premium agrega otra capa de eficiencia. Funciona consultando una columna designada (normalmente una columna last_modified_date) para determinar si se ha actualizado algún registro en una partición histórica. Sólo se actualizan las particiones donde los datos realmente han cambiado.

Sin detectar cambios en los datos: la ventana móvil de 3 días siempre se actualiza, incluso si no hubo cambios en los datos en los últimos 3 días.

Con la detección de cambios de datos: el motor de actualización verifica si algún registro en la ventana móvil se modificó antes de decidir si procesar cada partición. Si los datos del lunes se actualizaron el lunes por la noche y no se modificó ningún registro desde entonces, la actualización del martes por la noche omite la partición del lunes.

Esto es particularmente valioso para escenarios donde:

  • Los datos de origen se escriben una vez y rara vez se actualizan (eventos inmutables de solo agregar)
  • La ventana móvil es grande (por ejemplo, 30 días), pero la mayoría de los días no tienen cambios.
  • La capacidad de consulta del sistema fuente está limitada

La columna de detección de cambios de datos debe estar indexada en la base de datos de origen; el motor de actualización consulta esta columna para cada partición en cada ciclo de actualización.


Tablas híbridas: tiempo real + datos históricos

Power BI Fabric/Premium presenta tablas híbridas: una poderosa combinación de modo de importación (particiones históricas) y modo DirectQuery (datos del día actual). Esto habilita paneles que muestran datos actualizados al minuto actual junto con datos históricos de importación.

En una configuración de tabla híbrida:

  • Las particiones históricas (de ayer y anteriores) están en modo de importación: rápidas, en caché y totalmente agregables.
  • La partición actual está en modo DirectQuery: las consultas se ejecutan en vivo en la base de datos de origen.

La experiencia del usuario es perfecta: las consultas abarcan ambos modos de forma transparente. Una consulta de "ventas de esta semana frente a la semana pasada" extrae los datos de ayer de la partición de importación y los datos de hoy a través de DirectQuery, combinándolos en un único resultado.

Consideraciones para tablas híbridas:

  • El rendimiento de DirectQuery depende completamente del rendimiento de la base de datos de origen: una base de datos lenta significa consultas lentas en el momento actual.
  • La partición DirectQuery no se beneficia de las optimizaciones del modo de importación (sin compresión VertiPaq, sin agregaciones previas)
  • Requiere un espacio de trabajo Premium o Fabric

Monitoreo del estado de actualización incremental

Los errores de actualización incremental suelen ser silenciosos: el modelo se muestra como "actualizado correctamente" incluso si algunas particiones fallaron o volvieron a la actualización completa. El monitoreo es esencial para la confiabilidad de la producción.

Inspección de puntos de conexión XMLA: Power BI Premium expone un punto de conexión XMLA al que se pueden conectar herramientas como SQL Server Management Studio (SSMS), Tabular Editor o Azure Analysis Services. Desde allí, puede consultar los metadatos de la partición para ver la última hora de actualización de cada partición y si alguna partición está en estado de error.

Tabular Editor 2 (gratis): conéctese al espacio de trabajo Premium a través de XMLA e inspeccione la tabla de particiones en el modelo. Cada partición muestra su nombre, rango de fechas, marca de tiempo de la última actualización y estado. Esta es la herramienta más práctica para diagnosticar problemas de actualización incremental.

Registro de actividad de Power BI: el registro de actividad del administrador registra las operaciones de actualización, incluidas las particiones que se procesaron y los errores. Disponible a través de la API REST de Power BI.

Patrones de falla comunes:

ProblemaSíntomaResolución
Consulta plegable rotaActualización completa en cada ciclo, tiempos de actualización lentosRefactorizar Power Query para restaurar el plegado
Falta índice en la columna de fecha y horaActualización lenta de la particiónAgregar índice a la base de datos de origen
Cambios en los datos de origen no capturadosLas particiones históricas tienen datos obsoletosHabilitar la detección de cambios en los datos o ampliar la ventana móvil
El recuento de particiones supera el límiteLa actualización falla después de 10 particiones (Pro)Actualice a Premium o Fabric
Discrepancia de zona horariaRegistros incorrectos en cada particiónAsegúrese de que RangeStart/RangeEnd utilice UTC

Verificación del plegado de consultas en la práctica

El plegado de consultas es la razón más común por la que la actualización incremental no logra las ganancias de rendimiento prometidas. A continuación se explica cómo diagnosticar y reparar roturas de plegado comunes.

Prueba 1: Ver consulta nativa. Después de agregar el paso de filtro RangeStart/RangeEnd en Power Query, haga clic derecho en el paso. Si "Ver consulta nativa" está disponible y muestra una consulta SQL con una cláusula WHERE que filtra el rango de fechas, el plegado está funcionando.

Prueba 2: Verifique el SQL generado. La consulta nativa debería contener algo como:

WHERE [TransactionDate] >= @RangeStart AND [TransactionDate] < @RangeEnd

Si falta la cláusula WHERE, el plegado se ha roto y el filtro se está aplicando en el motor de Power Query después de cargar todos los datos del origen.

Restauración del plegado: si una transformación personalizada interrumpió el plegado, muévala después del paso del filtro de fecha o realice la transformación en una vista SQL en la base de datos de origen y conecte Power BI a la vista en lugar de a la tabla.


Preguntas frecuentes

¿La actualización incremental funciona con todas las fuentes de datos?

La actualización incremental funciona con cualquier origen de datos que admita el plegado de consultas y el filtrado de intervalos de fechas, incluidos SQL Server, Azure SQL, PostgreSQL, Snowflake, BigQuery, Azure Synapse y Databricks. No funciona bien con fuentes que no admiten el plegado de consultas (archivos Excel, CSV planos, algunas API REST); en esos casos, aún se requiere una actualización completa. Para orígenes no plegables, la solución alternativa recomendada es almacenar los datos en una base de datos SQL antes de que Power BI se conecte.

¿Qué licencia de Power BI se requiere para la actualización incremental?

La actualización incremental está disponible en Power BI Pro (limitada a 10 períodos de actualización), Power BI Premium por capacidad, Power BI Premium por usuario (PPU) y capacidades de Microsoft Fabric. La función "detectar cambios de datos" y las tablas híbridas requieren Premium o Fabric. Para la mayoría de las implementaciones empresariales con más de 10 particiones históricas, se requiere Premium o Fabric.

¿Cómo maneja la actualización incremental los datos que llegan tarde?

Los datos que llegan tarde (registros que llegan después de la fecha de su transacción (por ejemplo, una transacción de diciembre que llega en el extracto de datos de enero)) se manejan configurando la ventana de actualización continua lo suficientemente amplia para capturar las llegadas tardías. Si los datos pueden llegar con hasta 7 días de retraso, configurar la ventana móvil en 14 días garantiza que las llegadas tardías se capturen cuando se vuelva a actualizar la partición correspondiente. Alternativamente, la opción de detección de cambios de datos con una columna de última modificación captura las llegadas tarde independientemente de la configuración de la ventana móvil.

¿Puede la actualización incremental funcionar en tablas de dimensiones, no solo en hechos?

La actualización incremental está diseñada para tablas de hechos grandes y requiere una columna de filtro de fecha y hora. La mayoría de las tablas de dimensiones (productos, clientes, ubicaciones) no tienen una columna de partición de fecha y hora adecuada y son lo suficientemente pequeñas como para que sea apropiada una actualización completa. Para tablas de dimensiones que cambian lentamente y que han crecido (tablas de clientes con más de 50 millones de filas), un enfoque alternativo es usar vistas SQL en la base de datos de origen para filtrar registros modificados recientemente y manejar la retención del historial en la capa de base de datos en lugar de Power BI.

¿Cómo veo qué particiones existen en mi modelo de actualización incremental?

La forma más sencilla es conectar Tabular Editor (versión 2 gratuita) a su espacio de trabajo de Power BI Premium a través del punto final XMLA. En Tablas → [su tabla] → Particiones, verá todas las particiones creadas con sus rangos de fechas y las últimas marcas de tiempo procesadas. SQL Server Management Studio (SSMS) también se conecta a través de XMLA y muestra detalles de la partición en el Explorador de objetos.

¿Qué sucede si la actualización incremental falla a la mitad?

Si una actualización falla a mitad de camino, Power BI vuelve a intentar las particiones fallidas. Las particiones que se completaron exitosamente antes del error no se vuelven a procesar; solo se vuelven a intentar las particiones fallidas. Este comportamiento de reintento significa que la actualización incremental es más resistente a interrupciones transitorias del sistema fuente que la actualización completa. Si una partición falla constantemente, la partición permanece en su último estado cargado exitosamente mientras las nuevas particiones continúan actualizándose normalmente.


Próximos pasos

La actualización incremental es fundamental para cualquier implementación de Power BI que maneje grandes conjuntos de datos transaccionales. Hacerlo bien desde el principio (con un plegado de consultas adecuado, ventanas móviles apropiadas y monitoreo) evita los problemas de rendimiento que obligan a una costosa reestructuración posterior.

Los servicios de optimización del rendimiento de Power BI de ECOSIRE incluyen diseño e implementación de actualización incremental para conjuntos de datos empresariales a gran escala. Contáctenos para evaluar su arquitectura de actualización actual e identificar oportunidades de optimización.

E

Escrito por

ECOSIRE Research and Development Team

Construyendo productos digitales de nivel empresarial en ECOSIRE. Compartiendo perspectivas sobre integraciones Odoo, automatización de eCommerce y soluciones empresariales impulsadas por IA.

Chatea en whatsapp