Compartir a través de


Uso de la actualización incremental con flujos de datos

Con los flujos de datos, puede traer grandes cantidades de datos a Power BI o al almacenamiento proporcionado de la organización. Sin embargo, en algunos casos, no es práctico actualizar una copia completa de los datos de origen en cada actualización. Una buena alternativa es la actualización incremental, que proporciona las siguientes ventajas para los flujos de datos:

  • La actualización se produce más rápido: solo es necesario actualizar los datos que se han cambiado. Por ejemplo, actualice solo los últimos cinco días de un flujo de datos de 10 años.
  • La actualización es más confiable: por ejemplo, no es necesario mantener conexiones de larga duración a sistemas de origen volátiles.
  • El consumo de recursos se reduce: menos datos para actualizar reduce el consumo general de memoria y otros recursos.

La actualización incremental está disponible en flujos de datos creados en Power BI y flujos de datos creados en Power Apps. En este artículo se muestran las pantallas de Power BI, pero estas instrucciones se aplican a los flujos de datos creados en Power BI o en Power Apps.

Nota:

Cuando cambia el esquema de una tabla en un flujo de datos analítico, se realiza una actualización completa para asegurarse de que todos los datos resultantes coincidan con el nuevo esquema. Como resultado, los datos almacenados incrementalmente se actualizan y, en algunos casos, si el sistema de origen no conserva los datos históricos, se pierde.

Captura de pantalla del cuadro de diálogo de configuración de actualización incremental que se usa para actualizar flujos de datos.

El uso de la actualización incremental en flujos de datos creados en Power BI requiere que el flujo de datos resida en un área de trabajo en capacidad Premium. La actualización incremental en Power Apps requiere planes por aplicación o por usuario de Power Apps y solo está disponible para flujos de datos con Azure Data Lake Storage como destino.

En Power BI o Power Apps, el uso de la actualización incremental requiere que los datos de origen ingeridos en el flujo de datos tengan un campo DateTime en el que la actualización incremental pueda filtrar.

Configuración de la actualización incremental para flujos de datos

Un flujo de datos puede contener muchas tablas. La actualización incremental se configura en el nivel de tabla, lo que permite que un flujo de datos contenga tanto tablas totalmente actualizadas como tablas actualizadas incrementalmente.

Para configurar una tabla actualizada incrementalmente, empiece por configurar la tabla como haría con cualquier otra tabla.

Después de crear y guardar el flujo de datos, seleccione Actualización incremental en la vista de tabla, como se muestra en la imagen siguiente.

Captura de pantalla de Power BI con el icono de actualización incremental de los flujos de datos resaltados.

Al seleccionar el icono, aparece la ventana Configuración de actualización incremental . Active la actualización incremental.

Captura de pantalla del cuadro de diálogo de configuración de actualización incremental con la actualización incremental activada.

En la lista siguiente se explica la configuración de la ventana Configuración de actualización incremental .

  • Alternancia de actualización incremental activada o desactivada: activa o desactiva la directiva de actualización incremental para la tabla.

  • Desplegable de campo de filtro: selecciona el campo de consulta en el que se debe filtrar la tabla para incrementos. Este campo solo contiene campos DateTime. No puede usar la actualización incremental si la tabla no contiene un campo DateTime.

    Importante

    Elija un campo de fecha sin cambiar para el filtro de actualización incremental. Si el valor del campo cambia (por ejemplo, con un campo modificado con fecha ), este cambio puede provocar errores de actualización debido a valores duplicados en los datos.

  • Almacenar o actualizar filas del pasado: en el ejemplo de la imagen anterior se muestran estas siguientes opciones de configuración.

    En este ejemplo, definimos una directiva de actualización para almacenar cinco años de datos en total y actualizar incrementalmente 10 días de datos. Suponiendo que la tabla se actualice diariamente, se llevan a cabo las siguientes acciones para cada operación de actualización:

    • Agregue un nuevo día de datos.

    • Actualice los últimos 10 días hasta hoy.

    • Quite los años naturales que tienen más de cinco años antes de la fecha actual. Por ejemplo, si la fecha actual es el 1 de enero de 2019, se quita el año 2013.

    La primera actualización del flujo de datos puede tardar un tiempo en importar los cinco años, pero es probable que las actualizaciones posteriores se completen mucho más rápidamente.

  • Detectar cambios de datos: una actualización incremental de 10 días es mucho más eficaz que una actualización completa de cinco años, pero es posible que pueda hacerlo aún mejor. Al activar la casilla Detectar cambios de datos , puede seleccionar una columna de fecha y hora para identificar y actualizar solo los días en los que cambiaron los datos. Esto supone que existe una columna de este tipo en el sistema de origen, que normalmente es para fines de auditoría. El valor máximo de esta columna se evalúa para cada uno de los períodos en la frecuencia incremental. Si esos datos no han cambiado desde la última actualización, no es necesario actualizar el período. En el ejemplo, esto podría reducir aún más de 10 a quizás 2 los días que se refrescan incrementalmente.

    Sugerencia

    El diseño actual requiere que la columna utilizada para detectar los cambios de datos se conserve y se almacene en caché en la memoria. Podría considerar una de las siguientes técnicas para reducir cardinalidad y consumo de memoria:

    • Conserve solo el valor máximo de esta columna en el momento de la actualización, quizás mediante una función de Power Query.
    • Reduzca la precisión a un nivel aceptable según los requisitos de frecuencia de actualización.
  • Actualizar solo períodos completos: imagine que la actualización está programada para ejecutarse a las 4:00 a.m. todos los días. Si los datos aparecen en el sistema de origen durante las cuatro primeras horas de ese día, es posible que no quiera tener en cuentalos. Algunas métricas empresariales, como barricas al día en la industria del petróleo y el gas, no son prácticas o razonables para tener en cuenta en función de días parciales.

    Otro ejemplo en el que es adecuado actualizar solo períodos completos es al actualizar los datos de un sistema financiero. Imagine un sistema financiero en el que se aprueban los datos del mes anterior en el día natural 12 del mes. Puede establecer el intervalo incremental en un mes y programar la actualización para que se ejecute el día 12 del mes. Con esta opción seleccionada, el sistema actualizará los datos de enero (el período mensual completo más reciente) el 12 de febrero.

Nota:

La actualización incremental del flujo de datos determina las fechas según la lógica siguiente: si se programa una actualización, la actualización incremental para los flujos de datos usa la zona horaria definida en la directiva de actualización. Si no existe ninguna programación para la actualización, la actualización incremental usa la hora del equipo que ejecuta la actualización.

Una vez configurada la actualización incremental, el flujo de datos modifica automáticamente la consulta para incluir el filtrado por fecha. Si el flujo de datos se creó en Power BI, también puede editar la consulta generada automáticamente mediante el editor avanzado de Power Query para ajustar o personalizar la actualización. Obtenga más información sobre la actualización incremental y cómo funciona en las secciones siguientes.

Nota:

Al editar el flujo de datos, el editor de Power Query se conecta directamente al origen de datos y no muestra los datos almacenados en caché ni filtrados en el flujo de datos después de que la directiva de actualización incremental la procese. Para comprobar los datos almacenados en caché dentro del flujo de datos, conéctese desde Power BI Desktop al flujo de datos después de configurar la directiva de actualización incremental y actualizar el flujo de datos.

Actualización incremental y tablas vinculadas frente a tablas calculadas

En el caso de las tablas vinculadas , la actualización incremental actualiza la tabla de origen. Dado que las tablas vinculadas son simplemente un puntero a la tabla original, la actualización incremental no afecta a la tabla vinculada. Cuando la tabla de origen se actualiza según su directiva de actualización definida, cualquier tabla vinculada debe asumir que se actualizan los datos del origen.

Las tablas calculadas se basan en consultas que se ejecutan en un almacén de datos, que puede ser otro flujo de datos. Por lo tanto, las tablas calculadas se comportan del mismo modo que las tablas vinculadas.

Dado que las tablas calculadas y las tablas vinculadas se comportan de forma similar, los requisitos y los pasos de configuración son los mismos para ambos. Una diferencia es que para las tablas calculadas, en determinadas configuraciones, la actualización incremental no se puede ejecutar de forma optimizada debido a la forma en que se compilan las particiones.

Cambiar entre actualización incremental y completa

Los flujos de datos admiten el cambio de la directiva de actualización entre la actualización incremental y completa. Cuando se produce un cambio en cualquier dirección (completa a incremental o incremental a completa), el cambio afecta al flujo de datos después de la siguiente actualización.

Al mover un flujo de datos de una actualización completa a incremental, la nueva lógica de actualización actualiza el flujo de datos al adherirse a la ventana de actualización e incrementar según se define en la configuración de actualización incremental.

Al mover un flujo de datos de una actualización incremental a completa, todos los datos acumulados en la actualización incremental sobrescriben la directiva definida en la actualización completa. Debe aprobar esta acción.

Compatibilidad con la zona horaria en la actualización incremental

La actualización progresiva de flujo de datos depende del momento de su ejecución. El filtrado de la consulta depende del día en que se ejecute.

Para dar cabida a esas dependencias y garantizar la coherencia de los datos, la actualización incremental de los flujos de datos implementa la siguiente heurística para los escenarios de actualizar ahora.

  • En el caso de que se defina una actualización programada en el sistema, la actualización incremental usa la configuración de zona horaria de la sección actualización programada. Este proceso garantiza que, independientemente de la zona horaria en la que la persona actualice el flujo de datos, siempre es coherente con la definición del sistema.

  • Si no se define ninguna actualización programada, los flujos de datos usan la zona horaria del equipo del usuario que realiza la actualización.

La actualización incremental también se puede invocar mediante API. En este caso, la llamada API puede contener una configuración de zona horaria que se usa en la actualización. El uso de LAS API puede resultar útil con fines de prueba y validación.

Detalles de implementación de actualización incremental

Los flujos de datos usan la creación de particiones para la actualización incremental. La actualización incremental en flujos de datos mantiene el número mínimo de particiones para cumplir los requisitos de la política de actualización. Las particiones antiguas que salen del rango se eliminan, lo que mantiene una ventana deslizante. Las particiones se combinan de forma oportunista, lo que reduce el número total de particiones necesarias. Este número mínimo de particiones mejora la compresión y, en algunos casos, puede mejorar el rendimiento de las consultas.

Los ejemplos de esta sección comparten la siguiente directiva de actualización:

  • Almacenar filas en el último trimestre
  • Actualizar filas en los últimos 10 días
  • Detectar cambios de datos = Falso
  • Actualizar solo días completos = True

Combinar particiones

En este ejemplo, las particiones de día se fusionan automáticamente al nivel de mes después de quedar fuera del rango incremental. Las particiones del intervalo incremental deben mantener una granularidad diaria para permitir que solo se actualicen los días correspondientes. La operación de actualización con la fecha de ejecución 12/11/2016 combina los días de noviembre, ya que se encuentran fuera del intervalo incremental.

Diagrama con particiones de fusión en los flujos de datos.

Eliminar particiones antiguas

Se quitan las particiones antiguas que se encuentran fuera del intervalo total. La operación de refrescamiento con fecha de ejecución 1/2/2017 elimina la partición para el Q3 de 2016 porque se encuentra fuera del intervalo total.

Diagrama que muestra las particiones antiguas que se eliminan en flujos de datos.

Recuperación de fallos prolongados

En este ejemplo se simula cómo el sistema se recupera correctamente de un error prolongado. Supongamos que la actualización no se ejecuta correctamente porque las credenciales del origen de datos han expirado y el problema tarda 13 días en resolverse. El intervalo incremental es de solo 10 días.

La siguiente operación de actualización correcta, con la fecha de ejecución 1/15/2017, debe rellenar los 13 días que faltan y actualizarlos. También debe actualizar los nueve días anteriores porque no se actualizaron según la programación normal. En otras palabras, el intervalo incremental se incrementa de 10 a 22 días.

La siguiente operación de actualización, con la fecha de ejecución 1/16/2017, aprovecha la oportunidad de combinar los días en diciembre y los meses de la Q4 de 2016.

Diagrama que muestra la recuperación de errores prolongados en flujos de datos.

Actualización incremental de flujo de datos y conjuntos de datos

La actualización incremental del flujo de datos y la actualización incremental del conjunto de datos están diseñadas para funcionar conjuntamente. Es aceptable y compatible tener una tabla que se actualice de forma incremental en un flujo de datos, completamente cargada en un conjunto de datos, o una tabla completamente cargada en un flujo de datos cargada de manera incremental en un conjunto de datos.

Ambos enfoques funcionan según las definiciones especificadas en la configuración de actualización. Más información: Actualización incremental en Power BI Premium

En este artículo se describe la actualización incremental de los flujos de datos. Estos son algunos artículos más que pueden resultar útiles:

Para obtener más información sobre Power Query y la actualización programada, puede leer estos artículos:

Para más información sobre Common Data Model, puede leer su artículo de información general: