Compartir a través de


Actualización incremental en Dataflow Gen2

En este artículo se describe la actualización incremental de datos en Dataflow Gen2 para Data Factory de Microsoft Fabric. Cuando se usan flujos de datos para la ingesta y transformación de datos, a veces es necesario actualizar solo los datos nuevos o actualizados, especialmente a medida que los datos crecen más grandes.

La actualización incremental le ayuda a:

  • Reducir los tiempos de actualización
  • Hacer que las operaciones sean más confiables evitando procesos de ejecución prolongada
  • Uso de menos recursos

Prerequisites

Para usar la actualización incremental en Dataflow Gen2, necesita:

  • Una capacidad de Tejido
  • Origen de datos que admite el plegado (recomendado) y que contiene una columna Date/DateTime para filtrar datos
  • Un destino de datos que admita la actualización incremental (consulte Compatibilidad con destino)
  • Revise las limitaciones antes de empezar.

Compatibilidad con destino

Estos destinos de datos admiten la actualización incremental:

  • Fabric Lakehouse
  • Fabric Warehouse
  • Azure SQL Database

Puede usar otros destinos con actualización incremental también. Cree una segunda consulta que haga referencia a los datos almacenados provisionalmente para actualizar el destino. Este enfoque permite seguir usando la actualización incremental para reducir los datos que necesitan procesamiento desde el sistema de origen. Sin embargo, deberá realizar una actualización completa de los datos almacenados provisionalmente en el destino final.

Además, no se admite la configuración de destino predeterminada para la actualización incremental. Debe definir explícitamente el destino en la configuración de la consulta.

Uso de la actualización incremental

  1. Cree un nuevo flujo de datos Gen2 o abra uno existente.

  2. En el editor de flujos de datos, cree una nueva consulta que obtenga los datos que desea actualizar incrementalmente.

  3. Compruebe la vista previa de datos para asegurarse de que la consulta devuelve datos con una columna DateTime, Date o DateTimeZone para el filtrado.

  4. Asegúrese de que la consulta se plega por completo, lo que significa que la consulta se empuja al sistema de origen. Si no se plega por completo, modifique la consulta para que lo haga. Puede comprobar si la consulta se plega por completo si examina los pasos de consulta en el editor de consultas.

    Captura de pantalla del editor de consultas en Dataflow Gen2.

  5. Haga clic con el botón derecho en la consulta y seleccione Actualización incremental.

    Captura de pantalla del menú desplegable de Dataflow Gen2.

  6. Configure los valores necesarios para la actualización incremental.

    Captura de pantalla de la configuración de actualización incremental.

    1. Elija una columna de DateTime por la que filtrar.
    2. Extraiga datos del pasado.
    3. Tamaño del cubo.
    4. Solo extraiga nuevos datos cuando cambie el valor máximo de esta columna.
  7. Configure las opciones avanzadas si es necesario.

    1. Requerir una consulta de actualización incremental para plegar por completo.
  8. Seleccione Aceptar para guardar la configuración.

  9. Si lo desea, configure un destino de datos para la consulta. Haga esto antes de la primera actualización incremental, o el destino solo contendrá los datos modificados incrementalmente desde la última actualización.

  10. Publique Dataflow Gen2.

Después de configurar la actualización incremental, el flujo de datos actualiza automáticamente los datos de forma incremental en función de la configuración. El flujo de datos solo obtiene los datos que han cambiado desde la última actualización, por lo que se ejecuta más rápido y usa menos recursos.

Funcionamiento de la actualización incremental en segundo plano

La actualización incremental divide los datos en segmentos en función de la columna DateTime. Cada cubo contiene datos que cambiaron desde la última actualización. El flujo de datos sabe qué ha cambiado comprobando el valor máximo de la columna especificada.

Si el valor máximo cambia para ese segmento, el flujo de datos obtiene todo el segmento y reemplaza los datos en el destino. Si el valor máximo no ha cambiado, el flujo de datos no obtiene ningún dato. Así es como funciona paso a paso.

Primer paso: Evaluar los cambios

Cuando se ejecuta el flujo de datos, primero comprueba qué ha cambiado en la fuente de datos. Examina el valor máximo de la columna DateTime y lo compara con el valor máximo de la última actualización.

Si el valor máximo ha cambiado (o si se trata de la primera actualización), el flujo de datos marca ese cubo como "cambiado" y lo procesará. Si el valor máximo es el mismo, el flujo de datos omite ese cubo por completo.

Segundo paso: Obtener los datos

Ahora, el flujo de datos obtiene los datos de cada cubo que ha cambiado. Procesa varios contenedores al mismo tiempo para optimizar el procesamiento.

El flujo de datos carga estos datos en un área de almacenamiento provisional. Solo obtiene datos que se encuentran dentro del intervalo de tiempo del cubo, lo que significa solo los datos que realmente cambiaron desde la última actualización.

Último paso: Reemplazar los datos en el destino

El flujo de datos actualiza el destino con los nuevos datos. Usa un enfoque de "reemplazo": primero elimina los datos antiguos de ese cubo específico y, a continuación, inserta los datos nuevos.

Este proceso solo afecta a los datos dentro del rango de tiempo del bucket. Los datos fuera de ese intervalo (como los datos históricos más antiguos) permanecen intactos.

Configuración de actualización incremental explicada

Para configurar la actualización incremental, debe especificar estas opciones.

Captura de pantalla de la configuración de actualización incremental.

Configuración general

Estas opciones son necesarias y especifican la configuración básica para la actualización incremental.

Elija una columna de DateTime por la que filtrar

Esta configuración necesaria especifica la columna que usan los flujos de datos para filtrar los datos. Esta columna debe ser de tipo DateTime, Date o DateTimeZone. El flujo de datos usa esta columna para filtrar los datos y solo obtiene los datos que han cambiado desde la última actualización.

Extraiga datos del pasado.

Esta configuración necesaria especifica la distancia en el tiempo que el flujo de datos debe extraer datos. Este ajuste obtiene la carga de datos inicial. El flujo de datos obtiene todos los datos del sistema de origen dentro del intervalo de tiempo especificado. Los valores posibles son:

  • x días
  • x semanas
  • x meses
  • x trimestres
  • x años

Por ejemplo, si especifica 1 mes, el flujo de datos obtiene todos los datos nuevos del sistema de origen en el último mes.

Tamaño del cubo

Esta configuración necesaria especifica el tamaño de los cubos que usa el flujo de datos para filtrar los datos. El flujo de datos divide los datos en segmentos en función de la columna DateTime. Cada cubo contiene datos que cambiaron desde la última actualización. El tamaño del cubo determina la cantidad de datos que se procesan en cada iteración:

  • Un tamaño de cubo menor significa que el flujo de datos procesa menos datos en cada iteración, pero requiere más iteraciones para procesar todos los datos.
  • Un tamaño de cubo mayor significa que el flujo de datos procesa más datos en cada iteración, pero requiere menos iteraciones para procesar todos los datos.

Solo extraiga nuevos datos cuando cambie el valor máximo de esta columna

Esta configuración necesaria especifica la columna que usa el flujo de datos para determinar si han cambiado los datos. El flujo de datos compara el valor máximo de esta columna con el valor máximo de la actualización anterior. Si el valor máximo ha cambiado, el flujo de datos obtiene los datos que han cambiado desde la última actualización. Si el valor máximo no ha cambiado, el flujo de datos no obtiene ningún dato.

Extraer solo datos para períodos de conclusión

Esta configuración opcional especifica si el flujo de datos solo debe extraer datos durante períodos de conclusión. Si habilita esta configuración, el flujo de datos solo extrae datos durante períodos que concluyeron. El flujo de datos solo extrae los datos de los períodos completados y no contienen ningún dato futuro. Si deshabilita esta configuración, el flujo de datos extrae datos para todos los períodos, incluidos los períodos que no se completan y contienen datos futuros.

Por ejemplo, si tiene una columna DateTime que contiene la fecha de la transacción y solo desea actualizar meses completos, puede habilitar esta configuración con el tamaño del cubo de month. El flujo de datos solo extraerá datos durante meses completos y no extraerá datos durante meses incompletos.

Configuración avanzada

Algunas opciones de configuración se consideran avanzadas y no son necesarias para la mayoría de los escenarios.

Requerir una consulta de actualización incremental para plegar por completo

Esta configuración controla si la consulta de actualización incremental debe "plegarse completamente". Cuando una consulta se plega por completo, se inserta completamente en el sistema de origen para su procesamiento.

Si habilita esta configuración, la consulta debe plegarse por completo. Si lo deshabilita, el flujo de datos puede procesar parcialmente la consulta en lugar del sistema de origen.

Se recomienda encarecidamente mantener esta configuración habilitada. Se asegura de que, después de guardar el flujo de datos, comprobamos si es posible el plegado de consultas al origen. Si se produce un error en esta validación, el flujo de datos puede sufrir un rendimiento reducido y podría acabar recuperando datos innecesarios y sin filtrar.

En algunos casos, es posible que vea un indicador de plegado verde durante la edición. Sin embargo, cuando validamos la definición final del flujo de datos, es posible que el plegado ya no sea posible; Por ejemplo, si un paso como Table.SelectRows interrumpe el plegado. Esto puede provocar un error de validación.

Limitations

El soporte técnico de Lakehouse incluye advertencias adicionales

Al trabajar con lakehouse como destino de datos, tenga en cuenta estas limitaciones:

  • El número máximo de evaluaciones simultáneas es 10. Esto significa que el flujo de datos solo puede evaluar 10 cubos al mismo tiempo. Si tiene más de 10 buckets, debe limitar el número de buckets o limitar el número de evaluaciones simultáneas. Captura de pantalla de la configuración del control de simultaneidad del flujo de datos.

  • Al escribir en una instancia de Lakehouse, el flujo de datos realiza un seguimiento de los archivos que escribe. Esto sigue las prácticas estándar de lakehouse.

    Pero aquí está el inconveniente: si otras herramientas (como Spark) o procesos escriben en la misma tabla, pueden interferir con la actualización incremental. Se recomienda evitar otros escritores mientras se usa la actualización incremental.

    Si debe usar otros escritores, asegúrese de que no entran en conflicto con el proceso de actualización incremental. Además, no se admiten operaciones de mantenimiento de tablas como OPTIMIZE o REORG TABLE para las tablas que usan la actualización incremental.

  • Si aprovecha una puerta de enlace de datos para conectarse a los orígenes de datos, asegúrese de que la puerta de enlace se actualiza al menos a la actualización de mayo de 2025 (3000.270) o posterior. Esto es fundamental para mantener la compatibilidad y asegurarse de que las funciones de actualización incremental funcionan correctamente con los destinos de Lakehouse.

  • No se admite la transición de actualización no incremental a incremental cuando existen datos superpuestos en el destino. Si el destino de lakehouse ya contiene datos para cubos que se superponen con los cubos incrementales definidos en la configuración, el sistema no puede realizar con seguridad la actualización incremental sin tener que reescribir toda la tabla Delta. Se recomienda filtrar la ingesta inicial para incluir solo los datos antes del cubo incremental más antiguo para evitar superposición y garantizar un comportamiento de actualización correcto.

El destino de datos debe establecerse en un esquema fijo.

El destino de datos debe establecerse en un esquema fijo, lo que significa que el esquema de la tabla en el destino de datos debe ser fijo y no puede cambiar. Si el esquema de la tabla en el destino de datos está establecido en esquema dinámico, debe cambiarlo a esquema fijo antes de configurar la actualización incremental.

El único método de actualización admitido en el destino de datos es replace

El único método de actualización admitido en el destino de datos es replace, lo que significa que el flujo de datos reemplaza los datos de cada cubo del destino de datos por los nuevos datos. Sin embargo, los datos fuera del rango de agrupamiento no se ven afectados. Si tiene datos en el destino de datos anterior al primer cubo, la actualización incremental no afecta a estos datos.

El número máximo de cubos es 50 para una sola consulta y 150 para todo el flujo de datos

Cada consulta puede gestionar hasta 50 cubos. Si tiene más de 50 cubos, deberá aumentar el tamaño del cubo o reducir el intervalo de tiempo para reducir el recuento.

Para todo el flujo de datos, el límite es de un total de 150 depósitos. Si alcanza este límite, puede reducir el número de consultas mediante la actualización incremental o aumentar el tamaño del cubo en las consultas.

Diferencias entre la actualización incremental en Dataflow Gen1 y Dataflow Gen2

Hay algunas diferencias en el funcionamiento de la actualización incremental entre Dataflow Gen1 y Dataflow Gen2. Estas son las principales diferencias:

  • Característica de primera clase: la actualización incremental es ahora una característica de primera clase en Dataflow Gen2. En Dataflow Gen1, configuró la actualización incremental después de publicar el flujo de datos. En Dataflow Gen2, puede configurarlo directamente en el editor de flujos de datos. Esto facilita la configuración y reducción del riesgo de errores.

  • Sin rango de datos históricos: En Dataflow Gen1, especificó el rango de datos históricos al configurar la actualización incremental. En Dataflow Gen2, no se especifica este intervalo. El flujo de datos no quita ningún dato del destino que esté fuera del intervalo de cubos. Si tiene datos en el destino que son anteriores al primer cubo, la actualización incremental no los afecta.

  • Parámetros automáticos: en Dataflow Gen1, especificó los parámetros para la actualización incremental al configurarlo. En Dataflow Gen2, no se especifican estos parámetros. El flujo de datos agrega automáticamente los filtros y parámetros como último paso de la consulta.

FAQ

Recibí la advertencia de que había usado la misma columna para detectar cambios y filtrar. ¿Qué significa esto?

Si recibe esta advertencia, significa que la columna especificada para detectar cambios también se usa para filtrar los datos. No se recomienda esto porque puede provocar resultados inesperados.

En su lugar, use una columna diferente para detectar cambios y filtrar los datos. Si los datos cambian entre depósitos, es posible que el flujo de datos no detecte los cambios correctamente y podría crear datos duplicados en el destino.

Puede resolver esta advertencia mediante una columna diferente para detectar cambios y filtrar los datos. O bien, puede omitir la advertencia si está seguro de que los datos no cambian entre las actualizaciones de la columna especificada.

Quiero usar la actualización incremental con un destino de datos que no es compatible. ¿Qué se puede hacer?

Si desea usar la actualización incremental con un destino de datos que no lo admita, esto es lo que puede hacer:

Habilite la actualización incremental en la consulta y cree una segunda consulta que haga referencia a los datos almacenados provisionalmente. A continuación, use esa segunda consulta para actualizar el destino final. Este enfoque sigue reduciendo el procesamiento de datos del sistema de origen, pero deberá realizar una actualización completa de los datos almacenados provisionalmente al destino final.

Asegúrese de configurar correctamente la ventana y el tamaño del cubo. No garantizamos que los datos almacenados provisionalmente permanezcan disponibles fuera del intervalo de cubos.

Otra opción es usar el patrón de acumulación incremental. Consulte nuestra guía: Amasar datos incrementales con Dataflow Gen2.

¿Cómo sé si mi consulta tiene habilitada la actualización incremental?

Puede ver si la consulta tiene habilitada la actualización incremental comprobando el icono situado junto a la consulta en el editor de flujos de datos. Si el icono contiene un triángulo azul, se habilita la actualización incremental. Si el icono no contiene un triángulo azul, la actualización incremental no está habilitada.

Mi fuente recibe demasiadas solicitudes cuando uso la actualización incremental. ¿Qué se puede hacer?

Puede controlar cuántas solicitudes envía el flujo de datos al sistema de origen. A continuación se muestra cómo hacerlo:

Vaya a la configuración global del flujo de datos y busque la configuración de evaluaciones de consultas paralelas. Establézcalo en un número inferior para reducir las solicitudes enviadas al sistema de origen. Esto ayuda a reducir la carga en el origen y puede mejorar su rendimiento.

Para encontrar esta configuración: vaya a la pestaña >Escalado global > y establezca el número máximo de evaluaciones de consultas paralelas.

Solo se recomienda usar este límite si el sistema de origen no puede controlar el número predeterminado de solicitudes simultáneas.

Captura de pantalla de la configuración del control de simultaneidad del flujo de datos.

Quiero usar la actualización incremental, pero veo que, después de la habilitación, el flujo de datos tarda más tiempo en actualizarse. ¿Qué se puede hacer?

La actualización incremental debe hacer que el flujo de datos sea más rápido mediante el procesamiento de menos datos. Pero a veces sucede lo contrario. Normalmente, esto significa que la sobrecarga de administrar cubos y comprobar si hay cambios tarda más tiempo que ahorrar al procesar menos datos.

Esto es lo que puede probar:

Ajuste la configuración: aumente el tamaño del cubo para reducir el número de cubos. Menos cubos reducen la sobrecarga de gestionarlos.

Pruebe una actualización completa: si ajustar la configuración no ayuda, considere la posibilidad de deshabilitar la actualización incremental. Una actualización completa podría ser realmente más eficaz para su escenario específico.

Pasos siguientes