Todos los productos
Search
Centro de documentos

DataWorks:Configurar un nodo de sincronización por lotes para datos incrementales

Última actualización: Sep 04, 2026

Puede utilizar una condición de filtro en un nodo de sincronización por lotes para sincronizar datos completos o incrementales. Con esta condición, Data Integration sincroniza únicamente los datos que cumplen con los criterios especificados. También puede combinar parámetros de programación con la condición de filtro para filtrar datos dinámicamente según el tiempo de ejecución del nodo, lo que permite realizar una sincronización incremental. Este tema explica cómo configurar un nodo de sincronización por lotes para la sincronización incremental.

Notas de uso

  • Algunos orígenes de datos, como Hbase y Tablestore (OTSStream), no admiten la sincronización incremental. Para comprobar si un origen de datos específico es compatible con esta función, consulte la documentación del complemento de lector correspondiente.

  • Los parámetros obligatorios para la sincronización incremental varían según el complemento de lector. Para obtener más detalles, consulte la documentación del complemento específico y Supported data sources and plug-ins. Por ejemplo:

    Complemento de lector

    Parámetro obligatorio

    Sintaxis compatible

    MySQL Reader

    where

    Nota

    En el modo asistente, este es el parámetro de condición de filtro.

    Sintaxis de base de datos

    Nota

    Puede usar este parámetro junto con parámetros de programación para leer datos de un intervalo de tiempo específico cada día.

    MongoDB Reader

    query

    Nota

    En el modo asistente, este es el parámetro Search Condition.

    Similar a la sintaxis de base de datos

    Nota

    Puede usar este parámetro junto con parámetros de programación para leer datos de un intervalo de tiempo específico cada día.

    OSS Reader

    Object

    Especifique la ruta del objeto

    Nota

    Puede usar este parámetro junto con parámetros de programación para leer datos de un archivo específico cada día.

    ...

    ...

    ...

Configurar la sincronización incremental

En un nodo de sincronización por lotes de Data Integration, puede usar parámetros de programación para especificar las rutas y los rangos de datos de las tablas de origen y destino. La configuración es la misma que para otros tipos de nodos.

Durante la ejecución, el sistema reemplaza todos los parámetros de marcador de posición configurados en el nodo con los valores reales representados por las expresiones de los parámetros de programación y, posteriormente, ejecuta la sincronización de datos.

Tome como ejemplo la sincronización de datos de MySQL:

  • Si no configura Data Filtering, todos los datos se sincronizan con la tabla de destino de forma predeterminada.

  • Si configura Data Filtering, solo los datos que cumplen con la condición de filtro se sincronizan con la tabla de destino.

El nombre de la partición de la tabla de MaxCompute de destino se especifica mediante un parámetro de programación. $bizdate representa la fecha de negocio. Cuando se ejecuta una tarea programada, la expresión de partición configurada para la tarea se reemplaza con la fecha de negocio representada por el parámetro de programación. Para obtener instrucciones detalladas sobre la configuración de expresiones de parámetros de programación, consulte Application scenarios of scheduling parameters in Data Integration. Tome como ejemplo una tarea de sincronización por lotes. Debe configurar el parámetro bizdate en tres lugares para implementar la sincronización incremental: En la sección Data Filtering del origen, introduzca STR_TO_DATE('${bizdate}','%Y%m%d') <= gmt_modify_time AND gmt_modify_time < DATE_ADD(STR_TO_DATE('${bizdate}','%Y%m%d'), interval 1 day) para filtrar los datos modificados en la fecha de negocio. En la sección Partition Information del destino, introduzca pt=${bizdate} para escribir los datos en la partición de fecha correspondiente y establezca la Cleanup Rule en Clean up existing data before writing (Insert Overwrite). En la sección Parameters de Schedule Settings, en el lado derecho, introduzca bizdate=$bizdate para que el sistema de programación reemplace automáticamente ${bizdate} con la fecha de negocio real durante la ejecución. Al configurar la sincronización de datos incrementales:

  • Sincronización incremental basada en columnas de tipo temporal: Puede usar parámetros de programación para reemplazar dinámicamente los datos de tipo temporal. Durante la programación de tareas, los parámetros de programación se reemplazan automáticamente con valores específicos basados en la fecha de negocio. Para obtener más información sobre los parámetros de programación, consulte Configure scheduling parameters.

  • Sincronización incremental basada en columnas de tipo no temporal: Puede usar un nodo de asignación para convertir la columna al tipo de datos objetivo y luego pasarla a Data Integration para su sincronización. Para obtener más información sobre los nodos de asignación, consulte Create an assignment node.

Notas

Al configurar una tarea de sincronización incremental, tenga en cuenta lo siguiente:

  • Seguridad de Clean up existing data before writing (Insert Overwrite): Cuando varias tareas de sincronización escriben en diferentes particiones de la misma tabla de MaxCompute, la estrategia Insert Overwrite es segura. Esta estrategia borra únicamente los datos de la partición especificada por la tarea actual y no afecta a los datos de otras particiones de la tabla, lo que previene conflictos de datos o eliminaciones accidentales.

  • Limitación de sobrescritura por lotes en rango de particiones: DataWorks no admite especificar un rango de horas (como hh=00-23) en la configuración de particiones para la sobrescritura por lotes. Para sobrescribir datos de varias horas, configure tareas separadas para cada hora. Actualmente, los parámetros de partición solo admiten un único valor específico o el comodín *.

  • Sintaxis de comodines: Cuando el origen contiene una partición a nivel de hora pero el destino solo tiene una partición a nivel de día, introduzca el comodín * en el campo de partición de hora para coincidir con todos los datos horarios. Introduzca * directamente sin comillas (como "*"). De lo contrario, se producirá un error de sintaxis.

Sincronización incremental programada de alta frecuencia basada en marcas de tiempo

DataWorks admite la sincronización incremental programada basada en marcas de tiempo mediante la combinación de tareas de sincronización por lotes con programación periódica (por ejemplo, cada 5 minutos o cada hora). Este enfoque es adecuado para escenarios de sincronización T+1 o casi en tiempo real desde RDS MySQL hacia destinos como SelectDB y StarRocks. Implementa la sincronización incremental mediante filtrado SQL sin requerir tareas CDC en tiempo real, lo que evita los costos de ejecutar tareas continuamente. Puntos clave de configuración:

  1. En la condición where de Data Filtering del origen, use una columna de marca de tiempo como variable para el filtrado. Por ejemplo: gmt_modify_time >= '$[yyyymmddhhmiss-10/mi]' AND gmt_modify_time < '$[yyyymmddhhmiss]'.

  2. Configure parámetros de programación periódica (como $[yyyymmddhhmiss]) para calcular dinámicamente el rango de tiempo, asegurando que cada ejecución programada sincronice únicamente los datos incrementales dentro del intervalo de tiempo especificado. Para obtener detalles sobre la configuración de parámetros de programación, consulte Application scenarios of scheduling parameters in Data Integration.

  3. En la asignación de columnas de destino, agregue manualmente un parámetro constante asignado a la columna de partición para habilitar la escritura dinámica de particiones.

Configuración incremental para tareas de sincronización por lotes a nivel de base de datos

Además de las tareas de sincronización de tabla única, también puede crear una tarea de sincronización por lotes a nivel de base de datos para implementar periodic incremental synchronization. Al crear la tarea, seleccione la sincronización incremental y configure incremental condition en la tarea de sincronización a nivel de base de datos. Esto permite una sincronización eficiente de particiones incrementales a nivel de día (por ejemplo, filtrando por la columna create_time).

Este enfoque es adecuado para escenarios donde desea gestionar centralmente la sincronización de varias tablas, pero solo necesita procesamiento incremental para tablas específicas. Para conocer el proceso completo de configuración de tareas de sincronización por lotes a nivel de base de datos, consulte Configure a database-level batch synchronization task.

Ejemplos

  • Sincronizar datos históricos: Si necesita sincronizar datos incrementales históricos con las particiones de tiempo correspondientes de la tabla de destino, puede usar la función de backfill de datos en Operation Center. Para obtener más información sobre la función de backfill de datos, consulte Backfill data. En la configuración del nodo de sincronización de datos, seleccione MySQL como origen de datos y MaxCompute (ODPS) como destino, y establezca el nombre de la tabla en un valor como czd. En la condición de filtro de datos, use ${bizdate} para controlar el rango incremental (por ejemplo, STR_TO_DATE('${bizdate}','%Y%m%d') <= gmt_modify_time). Establezca la información de partición en ds=${bizdate} y configure la regla de limpieza en Clean up existing data before writing (Insert Overwrite). En la sección de parámetros de la configuración de programación, defina bizdate=$bizdate. Este parámetro de programación se reemplaza automáticamente con el valor de fecha específico basado en la fecha de negocio durante el backfill. Al ejecutar el backfill, puede establecer varios rangos de fechas de negocio (por ejemplo, del 2022-05-01 al 2022-05-31 y del 2022-04-01 al 2022-04-30), seleccionar Immediately Run Backfill Instances Whose Scheduled Time Is Later Than the Current Time y elegir Ascending Order of Business Dates para la ejecución.

  • Incremental data synchronization from ApsaraDB RDS to MaxCompute

Preguntas frecuentes

¿Qué debo hacer si ocurre un error de partición no encontrada después de usar parámetros de programación en el filtro de particiones de MaxCompute Reader?

Causa: Los scheduling parameters configurados no se resuelven correctamente a valores de partición reales durante la ejecución, o los valores resueltos no coinciden con las particiones reales de la tabla de origen.

Solución: Si el valor de la partición se pasa desde el parámetro de salidas de un nodo ascendente, compruebe la configuración de parámetros en Data Studio y asegúrese de que se cumplan las siguientes condiciones:

  • El nombre del parámetro configurado coincide con el nombre del parámetro de entrada.

  • El valor del parámetro pasado coincide exactamente con la partición real en MaxCompute.

¿Una tarea de sincronización por lotes de DataWorks realiza sincronización completa o incremental de forma predeterminada? ¿Cómo configuro la sincronización incremental para una tabla de origen sin columnas de partición?

Comportamiento predeterminado

Las tareas de sincronización por lotes de Data Integration de DataWorks realizan una sincronización completa de forma predeterminada, lo que significa que todos los datos se sincronizan en cada ejecución. La sincronización incremental se habilita únicamente cuando configura una condición de Data Filtering combinada con parámetros de programación.

Gestión de tablas de origen sin columnas de partición

Si la tabla de la base de datos de origen (como una tabla RDS) no tiene una columna de tiempo o de partición, no puede filtrar directamente los datos incrementales mediante una condición where. Le recomendamos agregar una columna de tiempo (como dt o gmt_modify_time) a la tabla de origen como base para el filtrado incremental. Una vez que la columna esté lista, configure la lógica de sincronización incremental siguiendo la sección "Configurar la sincronización incremental" de este tema.

Conceptos clave

Definiciones de parámetros

  • splitPk (clave de división): Especifica una columna de clave primaria. DataWorks divide los datos en múltiples fragmentos según el rango de valores de esta columna para habilitar lecturas concurrentes multiproceso.

  • splitFactor (factor de división): Controla la granularidad de la división. Un valor mayor resulta en divisiones más finas y más hilos de lectura.

Impacto en el rendimiento y recomendaciones

Habilitar splitPk y splitFactor aumenta la carga en la base de datos de origen. Para reducir la carga en el origen, se recomienda:

  • Reducir la concurrencia o establecer la concurrencia de la tarea de sincronización por lotes a nivel de base de datos en 1.

  • Asegurarse de que la columna de división (splitPk) esté indexada para mejorar la eficiencia de lectura.

¿Cómo elijo una solución de sincronización adecuada para mi negocio?

Una solución de sincronización se determina por dos dimensiones independientes: el modo de ejecución (sincronización por lotes programada o sincronización en tiempo real) y el rango de datos (completo o incremental). Las dos dimensiones se pueden combinar libremente. El escenario descrito en este tema es sincronización por lotes programada + sincronización incremental.

Elección de un modo de ejecución

Se recomienda la sincronización por lotes programada de forma predeterminada: los recursos se liberan tan pronto como finaliza la tarea y se le cobra según la duración real de la ejecución. Elija la sincronización en tiempo real únicamente en los siguientes dos casos:

  • Su negocio requiere latencia a nivel de segundos.

  • Debe sincronizar operaciones DELETE físicas desde el origen.

La sincronización en tiempo real es necesaria en estos casos porque la sincronización por lotes incremental filtra datos mediante condiciones como marcas de tiempo. Los registros que se eliminan físicamente en el origen ya no aparecen en el resultado de la consulta y, por lo tanto, no se eliminan en el destino. Aquí solo se hace referencia a la sincronización en tiempo real; su configuración no se cubre en este tema. Para obtener más información, consulte Single-table real-time synchronization capabilities.

Elección de un rango de datos

Carga inicial y grandes volúmenes de datos

  • Utilice una estrategia de "primero completa, luego incremental" para los datos históricos y escriba las dos partes en diferentes particiones.

  • Para realizar backfill de particiones históricas según sus marcas de tiempo de datos originales, utilice la función de backfill de datos. Para obtener más información, consulte Data backfill instance O&M.

  • Para volúmenes de datos a nivel de TB, aumente la concurrencia de tareas y ajuste las CU del resource group de Data Integration para mantener la eficiencia de sincronización. Para obtener más información, consulte Create and use Serverless resource groups. Tenga en cuenta que una mayor concurrencia aumenta la carga en la base de datos de origen. Para obtener más información, consulte la siguiente pregunta frecuente en este tema: Key concepts.