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, puede actualizar solo los últimos cinco días de un flujo de datos de 10 años.
  • La actualización es más fiable: por ejemplo, no es necesario mantener conexiones de larga duración a sistemas de origen volátiles.
  • Se reduce el consumo de recursos: al haber menos datos que actualizar, se reduce el consumo total de memoria y de otros recursos.

La actualización incremental está disponible en flujos de datos creados en Power BI y 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.

Actualización incremental de los 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 espacio de trabajo con 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 incrementalActualización incremental en la vista de tabla, como se muestra en la imagen siguiente.

Icono de actualización incremental de los flujos de datos.

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

Actualización incremental de los flujos de datos.

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

  • Opción de activación/desactivación de actualización incremental: activa o desactiva la política de actualización incremental para la tabla.

  • Lista desplegable de campos 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), esto 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 las siguientes opciones de configuración.

    En este ejemplo, definimos una política 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:

    • Agregar un nuevo día de datos.

    • Actualizar 10 días hasta la fecha actual.

    • Quitar 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 han cambiado los datos. Esto supone que dicha columna existe 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 los días actualizados incrementalmente de 10 a quizás 2.

    Sugerencia

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

    • Conservar solo el valor máximo de esta columna en el momento de la actualización, tal vez mediante una función de Power Query.
    • Reducir la precisión a un nivel aceptable dados sus 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 tenerlos en cuenta. Algunas métricas empresariales, como los barriles por día en la industria del petróleo y el gas, no son prácticas ni sensatas de contabilizar basándose en días parciales.

    Otro ejemplo en el que solo es adecuado actualizar periodos completos es la actualización de datos de un sistema financiero. Imagine un sistema financiero en el que los datos del mes anterior se aprueban el duodécimo día natural 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 política 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é o filtrados en el flujo de datos después de que la directiva de actualización incremental 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 de acuerdo con su política de actualización definida, cualquier tabla vinculada debe asumir que los datos del origen se actualizan.

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 ambas. 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 crean las particiones.

Cambio entre actualización incremental y completa

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

Al mover un flujo de datos de 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, la política definida en la actualización completa sobrescribe todos los datos acumulados en la actualización incremental. Debe aprobar esta acción.

Compatibilidad con la zona horaria en la actualización incremental

La actualización incremental del flujo de datos depende del momento en el que se ejecuta. 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 de actualización programada. Esto garantiza que, independientemente de la zona horaria en la que la persona actualice el flujo de datos, siempre será 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 a la API puede contener una configuración de zona horaria que se utiliza en la actualización. El uso de API puede resultar útil para 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 los 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 se salen del rango se descartan, lo que mantiene una ventana gradual. Las particiones se combinan de forma oportunista, lo que reduce el número total de particiones necesarias. Esto mejora la compresión y, en algunos casos, puede mejorar el rendimiento de las consultas.

Los ejemplos de esta sección comparten la siguiente política de actualización:

  • Almacenar filas del último 1 Trimestre
  • Actualizar filas de los últimos 10 días
  • Detectar cambios de datos = False
  • Actualizar solo días completos = True

Combinar particiones

En este ejemplo, las particiones de día se combinan automáticamente con el nivel de mes después de salir del intervalo incremental. Las particiones del intervalo incremental deben mantenerse con granularidad diaria para permitir que solo se actualicen esos días. 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.

Combinar particiones en flujos de datos.

Eliminar particiones antiguas

Se eliminan las particiones antiguas que quedan fuera del rango total. La operación de actualización con fecha de ejecución 1/2/2017 eliminar la partición para el Q3 de 2016 porque se encuentra fuera del intervalo total.

Anule las particiones antiguas en flujos de datos.

Recuperación tras un fallo prolongado

Este ejemplo simula cómo el sistema se recupera correctamente de un fallo 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 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 del Q4 de 2016.

Recuperación tras un fallo prolongado en los flujos de datos.

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

La actualización incremental del flujo de datos y del conjunto de datos están diseñadas para funcionar conjuntamente. Es aceptable y compatible tener una tabla de actualización incremental en un flujo de datos, totalmente cargado en un conjunto de datos, o una tabla totalmente cargada en un flujo de datos cargado incrementalmente 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

Consulte también

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

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

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