La función de envío de datos es un servicio de datos de DataWorks que recupera información de un origen de datos mediante consultas SQL y la envía a un Webhook o a una dirección de correo electrónico. Con esta función, se configuran fácilmente envíos periódicos de datos de negocio a varios Webhooks o direcciones de correo. En este tema se describe cómo configurar y utilizar la función de envío de datos.
Descripción general
Es posible programar tareas periódicas para enviar datos a un Webhook o a una dirección de correo electrónico de destino.
Orígenes de datos y canales compatibles
-
Tipos de orígenes de datos compatibles:
MySQL (compatible con StarRocks y Doris)
PostgreSQL (compatible con Snowflake y Redshift)
Hologres
MaxCompute (ODPS)
ClickHouse
Los canales de envío compatibles incluyen DingTalk, Lark, WeCom, correo electrónico y Teams.
Límites
Cada instrucción SELECT del servicio de envío de datos devuelve un máximo de 10 000 filas.
-
Si necesita recuperar más de 10 000 filas, utilice una de las siguientes alternativas:
Utilice el comando MaxCompute Tunnel para exportar los datos a su entorno local y procesarlos posteriormente.
Utilice la integración de datos de DataWorks para exportar los datos a otro sistema de almacenamiento.
-
Límites de tamaño de datos según el destino:
En DingTalk, el tamaño de los datos enviados no debe superar los 20 KB.
En Lark, el tamaño de los datos enviados no debe superar los 20 KB, y cada imagen debe ser menor de 10 MB.
En WeCom, cada bot puede enviar hasta 20 mensajes por minuto.
En Teams, el contenido enviado no debe superar los 28 KB.
Para el correo electrónico, cada tarea de envío de datos admite un solo cuerpo de mensaje. Para conocer otros límites, consulte las restricciones SMTP de su servicio de correo.
La función de envío de datos solo está disponible en los espacios de trabajo de DataWorks de las siguientes regiones: China (Hangzhou), China (Shanghai), China (Beijing), China (Shenzhen), China (Chengdu), China (Hong Kong), Singapore, Japan (Tokyo), US (Silicon Valley), US (Virginia) y Germany (Frankfurt).
Requisitos previos
Asegúrese de haber creado un origen de datos. Para obtener más detalles, consulte Data Source Management.
Asegúrese de que el acceso a la red pública esté habilitado para su resource group. Para obtener más detalles, consulte Network connectivity solution overview.
Paso 1: Crear una tarea de envío
-
Acceda a Data Service.
Inicie sesión en la . En la barra de navegación superior, seleccione la región donde reside su origen de datos. En el panel de navegación izquierdo, elija . Seleccione el espacio de trabajo deseado en la lista desplegable y haga clic en Go to Data Service.
-
Cree una tarea de envío de datos.
En el panel de navegación izquierdo de Data Services, elija para ir a la página Data Push. Haga clic en el icono
, seleccione Create Data Push Task, introduzca un nombre para la tarea y haga clic en OK. Se abrirá la página de configuración de la tarea.
Paso 2: Configurar la tarea de envío
Preparación (opcional)
Para ayudarle a enviar datos rápidamente, este tema utiliza un ejemplo que explica cómo enviar los resultados de una consulta desde una tabla de MaxCompute. En este caso, se usa la función de envío de datos para mandar la información de una tabla llamada sales a un canal específico. Los datos incluyen el monto de ventas diarias de cada departamento y la variación respecto al día anterior. Si desea seguir los pasos de este ejemplo, primero debe crear la tabla sales en su entorno. A continuación se muestran las instrucciones para crear la tabla sales e insertarle datos. Para obtener más información sobre cómo crear una tabla, consulte Create and use MaxCompute tables.
CREATE TABLE IF NOT EXISTS sales (
id BIGINT COMMENT 'Unique identifier',
department STRING COMMENT 'Department name',
revenue DOUBLE COMMENT 'Revenue amount'
) PARTITIONED BY (ds STRING);
-- Insert sample data into partitions
INSERT INTO TABLE sales PARTITION(ds='20240101')(id, department, revenue ) VALUES (1, 'Department 1', 12000.00);
INSERT INTO TABLE sales PARTITION(ds='20240101')(id, department, revenue ) VALUES (2, 'Department 2', 21000.00);
INSERT INTO TABLE sales PARTITION(ds='20240101')(id, department, revenue ) VALUES (3, 'Department 3', 5000.00);
INSERT INTO TABLE sales PARTITION(ds='20240102')(id, department, revenue ) VALUES (1, 'Department 1', 11000.00);
INSERT INTO TABLE sales PARTITION(ds='20240102')(id, department, revenue ) VALUES (2, 'Department 2', 20000.00);
INSERT INTO TABLE sales PARTITION(ds='20240102')(id, department, revenue ) VALUES (3, 'Department 3', 10000.00);
Seleccionar un origen de datos
Seleccione Data Source Type, Data Source Name y Data Source Environment para definir el entorno de la tabla de datos que se usará en el envío. El entorno del origen de datos se elige según si el envío corresponde a una tabla de desarrollo o de producción. Si está siguiendo este ejercicio práctico, confirme el entorno donde se ubica la tabla sales que creó durante la fase de preparación.
Por ejemplo, establezca Data source type en odps, Data source name en MaxCompute_Source y Data source environment en production environment. Para crear un nuevo origen de datos, haga clic en el enlace situado debajo del campo Data source name.
Para consultar la lista de tipos de orígenes de datos compatibles, vea Supported data sources and channels.
Escribir la consulta SQL
-
Defina el alcance de los datos y recupérelos.
En la sección Edit Query SQL, utilice consultas SQL de una o varias tablas para definir los datos que se enviarán. Por ejemplo:
-- Get the sales revenue for each department on 20240102 SELECT id, department, revenue FROM sales WHERE ds='20240102'; -- Get the change in sales revenue compared to the previous day SELECT a.revenue - b.revenue AS diff FROM sales a LEFT JOIN sales b ON a.id = b.id AND a.ds > b.ds WHERE a.ds = '20240102'AND b.ds = '20240101';Después de escribir el código SQL, los campos resultantes se completan automáticamente en la sección . Si el análisis sintáctico de los parámetros de salida falla o los valores son incorrectos, deshabilite Automatically Parse Parameters y agregue manualmente los parámetros con Add Parameter.
También es posible configurar variables personalizadas en el código SQL mediante el formato
${variable_name}. Esta variable corresponde a un elemento de Assignment Parameters(Assignment Parameters admite expresiones de tiempo y constantes como valores asignados ) para implementar la entrada dinámica de parámetros en su código. Para obtener más información, consulte Configure push content.-- Use scheduling parameters to dynamically assign time variables. -- Get the latest daily sales revenue for each department SELECT id, department, revenue FROM sales WHERE ds='${date}'; -- Get the change in sales revenue compared to the previous day SELECT a.revenue - b.revenue AS diff FROM sales a LEFT JOIN sales b ON a.id = b.id and a.ds > b.ds WHERE a.ds = '${date}' AND b.ds = '${previous_date}'; -
Consulta paginada.
Para tablas grandes, el envío de datos admite consultas paginadas mediante un Next Token. Haga clic en en la barra de herramientas del editor de código para ver las instrucciones de uso.
Configurar el contenido de envío
En la sección Content to Push, edite el contenido del mensaje con los formatos Markdown y Table. Este contenido se enviará al Webhook.
Una vez que personalice el título del mensaje en el campo Title, haga clic en Add en el área del cuerpo. Luego, elija Markdown, Table o Email Body para editar el contenido. A continuación se muestra un ejemplo de configuración. Haga clic en Preview en la barra de herramientas para visualizar el formato del mensaje.
Si el destino del envío es una dirección de correo electrónico, el contenido personalizado en las secciones Markdown y Table se envía como archivo adjunto. El cuerpo del correo se renderiza y se muestra dentro del mensaje.
Si el destino no es una dirección de correo electrónico, el contenido personalizado en las secciones Markdown y Table se mostrará como el cuerpo principal del mensaje del Webhook. La sección Email Body permanecerá oculta en el mensaje enviado al Webhook.
Contenido Markdown
-
Usar variables de parámetros: Al redactar el contenido de envío, agregue elementos de Assignment Parameters y Output Parameters al texto enriquecido mediante el formato
${parameter_name}. Estas variables se sustituyen por los datos asignados correspondientes o por los resultados de la consulta SQL cuando se ejecuta la tarea de envío de datos.Assignment Parameters: Debe asignar una Constant o la Time Expression de un parámetro de programación a la variable en la sección .
Output Parameters: Estos parámetros corresponden a los nombres de campo o alias de su consulta SQL, como
A, B, ...en una instrucción tipoSELECT A, B, ... FROM TABLE. Representan los datos consultados.
-
Mencionar miembros con @: Configure esta opción al enviar datos a un Webhook de Lark para mencionar automáticamente a usuarios específicos con @.
De forma predeterminada, el modo Markdown utiliza texto enriquecido para configurar el contenido del mensaje. Al enviar datos a Lark, use la función de mención con @ para notificar al personal correspondiente. Haga clic en el icono
para cambiar al modo de código fuente Markdown y luego utilice <at id="all" />o<at email="username@example.com" />para lograrlo.
-
Además de las funciones anteriores, Markdown también admite opciones como Add Image e inserción de DingTalk Emoji.
En el área de contenido de envío, seleccione Markdown como tipo de plantilla. En el cuerpo, utilice la sintaxis
${parameter_name}para hacer referencia a los parámetros definidos en el panel Input Parameters de la derecha. Por ejemplo, si escribe${creator}y${subscriber}en el cuerpo, y establece creator en "admin" y subscriber en "user" en la pestaña Input parameters, las variables se sustituirán automáticamente por sus valores cuando se ejecute la tarea. Los parámetros de entrada también admiten variables de tiempo de programación. Por ejemplo, puede establecer date en${yyyymmdd}y previous_date en${yyyymmdd-1}. La sección para escribir la consulta SQL también puede hacer referencia a los parámetros de entrada para obtener valores dinámicos; por ejemplo,SELECT id, department, revenue FROM sales WHERE ds='${date}';.Si el contenido de envío incluye etiquetas HTML (por ejemplo, texto pegado desde un editor externo), podría producirse un error al cambiar al modo de texto enriquecido:
Error parsing markdown: Unexpected closing tag. Si esto ocurre, cambie al modo de código fuente en el editor Markdown, elimine las etiquetas HTML del contenido para que solo quede texto Markdown sin formato y vuelva al modo de texto enriquecido. Así, el contenido se renderizará correctamente.
Contenido de tabla
Haga clic en Add Column para aumentar el número de columnas de la tabla. Después, asocie los Parameters con las columnas correspondientes.
-
Cuando el destino del envío sea un Webhook de Lark, haga clic en el icono
a la derecha de una columna creada para abrir el cuadro de diálogo Modify Field. En este cuadro, ajuste Field, Display Name, Display Style y Condition para generar distintos efectos visuales en el contenido enviado.Field: Cambie a otro campo de Output Parameters.
Display Name: El nombre que desea mostrar en el encabezado de la tabla al enviar datos a herramientas de colaboración.
Display Style: Agregue un prefijo o sufijo fijo antes o después del Value en la tabla.
Condition: Compara el Value de la tabla con un valor de comparación configurado. Personalice el color de visualización para los valores que cumplan la condición (Yes) o no la cumplan (No), y especifique un Additional Unicode. Condition: Habilite la lógica condicional, establezca un operador (como
>=) y un umbral (como60). Si se cumple la condición, seleccione Change to green. Si no se cumple, seleccione Change to red. También configure un Appended Identifier.
Nota-
El método para crear tablas varía según el canal. La compatibilidad del contenido de tablas en los distintos canales es la siguiente:
DingTalk: Admite tablas Markdown y las tablas integradas del envío de datos. No renderiza las configuraciones de Display Style y Condition definidas en el cuadro de diálogo Modify Field. Además, DingTalk mobile no admite la visualización de tablas.
Lark: Admite tanto tablas Markdown como integradas, incluida la renderización de estilos de visualización y condiciones personalizados.
WeCom: Permite enviar tablas Markdown, pero no las renderiza.
Teams mobile: Permite enviar tablas Markdown y las renderiza.
Cuerpo del correo electrónico
El envío de datos de DataWorks permite agregar un cuerpo de correo electrónico al contenido de envío. Al editarlo, tenga en cuenta lo siguiente:
Cada tarea de envío de datos admite un solo cuerpo de correo electrónico.
El cuerpo del correo solo se renderiza cuando el destino del envío es una dirección de correo electrónico. Si el destino no es una dirección de correo, la sección Email Body permanece oculta en el mensaje enviado al Webhook.
Paso 3: Configurar los ajustes de envío
Antes de configurar Push Settings, haga clic en el icono
en la esquina inferior izquierda de la página Service Development para abrir el panel de configuración. Cambie a la pestaña Destination Management y haga clic en Create Destination para crear un destino. Los tipos de canal compatibles incluyen DingTalk, Lark, WeCom, Teams y Email.
Crear un destino Webhook
Al hacer clic en Create Destination, configure los siguientes parámetros:
Type: Seleccione un tipo de canal. Las opciones incluyen DingTalk, Lark, WeCom y Teams.
Destination Name: Introduzca un nombre personalizado para el nuevo destino de envío.
Webhook: La URL del Webhook del canal de envío seleccionado.
Para saber cómo obtener el Webhook de un bot de Lark, consulte Configurar un desencadenador de Webhook de Lark.
Para saber cómo obtener un Webhook de Teams, consulte Usar flujos de trabajo de Microsoft Teams para crear un Webhook entrante.
La lista desplegable Type también admite el canal Email. Una vez completada la configuración, haga clic en OK.
Crear un destino de correo electrónico
Antes de configurar Push Settings, haga clic en el icono
en la esquina inferior izquierda de la página Service Development para abrir el panel de configuración. Cambie a la pestaña Destination Management y haga clic en Create Destination para crear un destino.
Al hacer clic en Create Destination, debe configurar los siguientes parámetros:
Type: Seleccione Email.
Destination Name: Introduzca un nombre personalizado para el nuevo destino de envío.
SMTP Host: La dirección del servidor de correo.
SMTP Port: El número de puerto del servidor de correo. El valor predeterminado es 465, aunque se puede modificar manualmente.
Sender Address: La dirección de correo electrónico del remitente.
SMTP Account: La cuenta de correo electrónico completa.
SMTP Password: La contraseña de la cuenta de correo electrónico.
Receiver Address: La dirección de correo electrónico de destino.
Ajustes de envío
Haga clic en Push Settings en el lado derecho para configurar el ciclo de programación, los recursos de programación y los destinos de envío de la tarea. Los elementos de configuración específicos son los siguientes:
-
Configuración del ciclo de programación y la hora de ejecución: Defina el ciclo de programación y la hora exacta en la que el servicio de envío de datos mandará el contenido editado.
Ciclo de programación
Hora especificada
Hora de programación
Ejemplo
Month
Especifique los días del mes en los que se ejecutará la tarea de envío.
La hora de programación de la tarea de envío de datos para el día indicado.
Scheduling Frequency: Month
Specified Time: 1st of every month
Data Timestamp: 08:00
Hora de ejecución real: La tarea de envío se ejecuta a las 08:00 el primer día de cada mes.
Week
Especifique los días de la semana en los que se ejecutará la tarea de envío.
La hora de programación de la tarea de envío de datos para el día indicado.
Scheduling Frequency: Week
Specified Time: Monday
Data Timestamp: 09:00
Hora de ejecución real: La tarea de envío se ejecuta a las 09:00 todos los lunes.
Day
NotaEl ciclo diario programa la tarea para que se ejecute todos los días.
La hora de programación de la tarea de envío de datos para el día indicado.
Scheduling Frequency: Day
Data Timestamp: 08:00
Hora de ejecución real: La tarea de envío se ejecuta a las 08:00 todos los días.
Hour
NotaPuede elegir entre dos modos de envío:
Envío en un intervalo horario especificado.
Envío en horas y minutos especificados.
Envío en un intervalo horario:
Start Time: 00:00
Time Interval: 1 hour
End Time: 23:59
Hora de ejecución real: Envía una vez cada hora desde las 00:00 hasta las 23:59 diariamente.
Envío en horas y minutos especificados:
Hour: 0, 1
Specified Minute: 10
Hora de ejecución real: Envía a las 00:10 y a las 01:10 diariamente.
-
Timeout Definition: Establece un límite de tiempo para la ejecución de la tarea. Si se supera este límite, la tarea finaliza.
Default Value: Con la configuración Default Value, el tiempo de espera de la tarea se ajusta dinámicamente según la carga del sistema, con un valor de entre 3 y 7 días. Las tareas que superan este tiempo finalizan.
Ejemplo: Si establece un tiempo de espera Custom de 1 hora, la tarea de envío finalizará si transcurre más de 1 hora desde su hora de inicio programada.
-
Valid From: Configure el intervalo de tiempo durante el cual la tarea de envío de datos estará activa.
Permanent: La tarea de envío de datos permanece vigente de forma permanente y no está limitada por un intervalo de fechas de validez.
Example: Si configura un intervalo Specified Time del 2024-01-01 al 2024-12-31, la tarea de envío se ejecutará según el ciclo de programación configurado dentro de ese periodo.
Resource Group for Scheduling: Configure un Exclusive resource group for scheduling o un serverless resource group (resource group de propósito general) para proporcionar recursos de programación a la tarea de envío de datos. Para obtener más información sobre los resource groups, consulte Resource Group Management.
-
Push Every Time: Controla si se envía una notificación cuando la consulta SQL no devuelve datos.
Habilitado (valor predeterminado): El envío se ejecuta en cada ejecución programada, independientemente de si la consulta devuelve datos.
Deshabilitado: Si todas las variables utilizadas en el contenido de envío, excepto los parámetros de entrada, están vacías, el mensaje no se manda. Utilice las cláusulas
WHEREoHAVINGen el código SQL para filtrar datos. Si no se cumplen las condiciones de filtrado y el resultado de la consulta está vacío, la tarea de envío se omite automáticamente y no se manda ningún mensaje.
-
Destination: Envíe el contenido configurado a un destino seleccionado. Solo puede elegir entre los destinos de envío existentes, los cuales se configuran en Data Push Task Management.
NotaAl enviar datos a un Webhook de DingTalk, debe agregar una palabra clave en la sección de la configuración del bot. Asegúrese de que el contenido de envío incluya esta palabra clave para que el envío se complete correctamente.
Paso 4: Probar la tarea de envío
Después de crear la tarea de envío de datos, haga clic en el botón Save de la barra de herramientas para guardar la configuración actual. Luego, haga clic en Test para ejecutar una prueba en la etapa de desarrollo y comprobar que el envío de datos funciona correctamente. Para esta prueba, debe asignar manualmente valores constantes a las variables.
Una tarea de envío de datos debe superar una prueba de envío en el entorno de desarrollo antes de poder enviarse con Submit y publicarse con Publish.
Paso 5: Publicar la tarea de envío
Gestionar las versiones de la tarea
Una vez que confirme que las pruebas durante el desarrollo se completaron correctamente, haga clic en Submit. Si no envía la tarea de envío, esta permanecerá en estado de borrador y no se generará una nueva versión.
-
Después de enviar el servicio, se genera una nueva versión. En el panel Version del lado derecho, busque la versión enviada con estado Can Be Published y haga clic en Publish. Al publicar la tarea, se activa su programación tal como se definió en Push Settings.
En el panel Version, gestione la tarea de envío de datos de la siguiente manera.
Status
Actions
Description
Publish
Data Push Task Management
Abre la página Data Push Task Management, donde puede consultar información detallada sobre las tareas publicadas. Para obtener más información, consulte Manage data push tasks.
Can Be Published
Publish
Publica la versión correspondiente de la tarea.
Abandoned
Descarta la versión correspondiente de la tarea y cambia su estado a Abandoned.
Off-Line, Abandoned
Version Details
Consulte la información de configuración y el contenido de envío correspondiente para esa versión de la tarea de envío de datos.
Roll Back
Restaura esta versión y la convierte en la configuración actual.
NotaLas operaciones Version Details y Roll Back están disponibles y funcionan de manera idéntica para las tareas en todos los estados.
Gestionar las tareas de envío
Cuando la tarea de envío de datos se publique correctamente, haga clic en Data Push Task Management dentro de la columna Operation del panel Version. También puede ir a la página de lista Data Push Tasks mediante la ruta .
Esta página enumera todas las Data Push Tasks publicadas. Además, muestra detalles como ID, Name, Data Source Name, Data Source Environment, Node Mode, Resource Group for Scheduling, Owner, Deployer y Published Time. En la columna Operation, aplique las siguientes acciones a las tareas de envío de datos publicadas:
|
Acciones |
Description |
|
Unpublish |
Desconecta la tarea seleccionada. |
|
Test |
Abre la página Test Data Push Task, donde puede probar una tarea publicada. |
Si hace clic en el icono
de la columna Service Development, accederá a la página Name de la tarea seleccionada.
Probar una tarea publicada
Vaya a la página Version Details con cualquiera de los siguientes métodos:
Método 1: Elija .
Método 2: Elija .
Al probar una tarea publicada, usted comprueba que se ejecute correctamente y que el destino reciba los datos según lo esperado.
En la página Data Push Test, seleccione o busque la tarea de envío de datos deseada en la lista desplegable. Marque la casilla Push to Destination si lo requiere y, a continuación, haga clic en Start Test.
Preguntas frecuentes
P: ¿El envío de datos admite ejecuciones bajo demanda?
R: Para envíos ocasionales y bajo demanda, utilice la función Test con la opción Push to Destination seleccionada. Si necesita envíos recurrentes condicionales, deshabilite la configuración Data Push Tasks. De este modo, la tarea solo se ejecutará cuando su consulta SQL devuelva datos.