El plugin Data Asset Governance en DataWorks DataStudio detecta errores de sintaxis en tiempo real mientras edita el código y lo valida contra reglas de gobernanza al guardarlo o bajo demanda. DataWorks Copilot le ayuda a corregir los problemas detectados, lo cual mejora la calidad del código y la seguridad de los datos.
Capacidades de diagnóstico de incidencias
El diagnóstico de incidencias en el desarrollo de nodos combina dos funciones principales: el diagnóstico de sintaxis en tiempo real (LSP) y la verificación de salud del desarrollo. Estas capacidades protegen la calidad del código desde diferentes perspectivas.
|
Capacidad |
Diagnóstico de sintaxis en tiempo real (LSP) |
Verificación de salud del desarrollo |
|
Responsabilidad principal |
Verificación de sintaxis en tiempo real y análisis estático de código. |
Validaciones basadas en una biblioteca de reglas para detectar problemas de estándares de datos, seguridad y rendimiento. |
|
Momento de ejecución |
Se ejecuta en tiempo real mientras edita el código. |
Se ejecuta al guardar un nodo. También puede activar manualmente una verificación profunda de un solo archivo o de varios archivos por lotes. |
|
Problemas cubiertos |
Errores de sintaxis SQL, uso incorrecto de funciones y problemas similares. |
Problemas detectados por la biblioteca de reglas integrada, como uso inadecuado de particiones, escrituras entre proyectos y tipos de campo JOIN no coincidentes. También admite bibliotecas de reglas personalizadas basadas en DataWorks Copilot. |
|
Cómo corregir |
Correcciones asistidas mediante DataWorks Copilot. |
Sugerencias de corrección generadas por IA y Quick Fix. |
Tenga en cuenta lo siguiente:
Si su código contiene errores de sintaxis, solo se activa el diagnóstico de sintaxis en tiempo real (LSP). Una regla de verificación de salud del desarrollo cuyo objeto es el código solo se ejecuta cuando la sintaxis es completamente correcta.
Un elemento de verificación con errores no impide que su código se ejecute.
Elegir un método de verificación
Errores de sintaxis mientras escribe: El diagnóstico de sintaxis en tiempo real (LSP) los marca al instante.
Reglas de gobernanza integradas: Un escaneo en vivo aplica reglas integradas eficientes al nodo activo cuando lo guarda.
Cobertura total de reglas: Active manualmente una verificación profunda para aplicar todas las reglas, incluidas las reglas de IA personalizadas. Puede escanear un solo archivo o un lote de archivos abiertos.
Disponibilidad regional
El diagnóstico de incidencias en el desarrollo de nodos solo está disponible en las siguientes regiones. La verificación profunda (deep check) es compatible con un subconjunto de ellas.
|
Región |
deep check |
|
China (Hangzhou) |
Compatible |
|
China (Shanghai) |
Compatible |
|
China (Beijing) |
Compatible |
|
China (Zhangjiakou) |
Compatible |
|
China (Ulanqab) |
Compatible |
|
China (Shenzhen) |
Compatible |
|
China (Chengdu) |
Compatible |
|
China (Hong Kong) |
Compatible |
|
Singapore |
Compatible |
|
Malaysia (Kuala Lumpur) |
No compatible |
|
Indonesia (Jakarta) |
No compatible |
|
Germany (Frankfurt) |
No compatible |
|
US (Silicon Valley) |
No compatible |
|
US (Virginia) |
No compatible |
Inicio rápido
El siguiente tutorial le guía a través del flujo principal para diagnosticar y corregir problemas de código en cinco minutos.
-
Habilite la función de verificación de calidad.
Vaya a DataStudio en DataWorks, haga clic en
Setup en la parte inferior del panel de navegación izquierdo y seleccione la pestaña User en la página Setup. Asegúrese de que DataStudio Governance Check Module EnablementbajoData GovernanceySyntaxErrorEnablebajoLspSettingestén seleccionados. Ambas opciones están seleccionadas de forma predeterminada. Para consultar la ruta de navegación y los valores válidos de cada opción, consulte Enable configuration items. -
Escriba código de ejemplo que contenga problemas.
Cree un nodo MaxCompute ODPS SQL y pegue el siguiente código de ejemplo, que contiene errores, en el editor.
-- Example: create a table in SQL CREATE TABLE IF NOT EXISTS my_partitioned_table ( id STRING, name STRING, value BIGINT ) PARTITIONED BY (ds STRING) LIFECYCLE 365; -- Example: syntax error SELEC name FROM my_partitioned_table; -
Localice el problema de sintaxis LSP.
LSP ejecuta una verificación en tiempo real y marca
SELECcon un subrayado ondulado rojo para indicar un error de sintaxis. Haga clic en el icono
en la esquina inferior izquierda de la página y consulte los problemas de código del nodo en el Problems Panel que aparece.-- Example: syntax error SELEC name FROM my_partitioned_table; -
Corrija el problema de sintaxis LSP.
Pase el cursor sobre la palabra clave
SELECcon el subrayado ondulado rojo y haga clic en el icono de foco que aparece. DataWorks Copilot lo corregirá automáticamente aSELECT. -
Identifique problemas de reglas de gobernanza.
Haga clic en Save. El editor valida el código contra los elementos de verificación habilitados en el plugin Data Asset Governance. En este ejemplo, el código activa dos reglas integradas de verificación de salud del desarrollo: Creating tables in SQL is not allowed y Partitioned table queries must include a partition.
Si el Problems Panel no se abre automáticamente, haga clic en el icono
en la esquina inferior izquierda de la página para abrirlo.CREATE TABLE IF NOT EXISTS my_partitioned_table ( id STRING, name STRING, value BIGINT ) PARTITIONED BY (ds STRING) LIFECYCLE 365; SELECT name FROM my_partitioned_table; -
Corrija problemas de reglas de gobernanza.
Pase el cursor sobre
my_partitioned_tabley haga clic en Quick Fix. Alternativamente, haga clic en el hipervínculo en el Problems Panel, espere la sugerencia de corrección y aplíquela después de comprobar que cumple con sus requisitos de optimización.En este ejemplo, utilice Quick Fix para corregir la segunda instrucción SQL:
SELECT name FROM my_partitioned_table; SELECT name FROM my_partitioned_table WHERE ds = '20231010'; -
Inicie una verificación profunda de un solo archivo.
Después de corregir los problemas, haga clic en deep chec encima del editor para ejecutar una verificación profunda en el código del nodo. El editor escanea el archivo a fondo e informa los problemas restantes. Por ejemplo, si solo corrige el problema Partitioned table queries must include a partition, el escaneo reportará el problema no resuelto Creating tables in SQL is not allowed.
Funciones principales
Habilitar elementos de configuración
Ajuste la configuración del diagnóstico de incidencias para adaptarla a su flujo de trabajo de desarrollo. Todos los elementos de configuración solo tienen efecto para la cuenta actual de Alibaba Cloud.
DataStudio Governance Check Module Enablement controla la capacidad de verificación del plugin Data Asset Governance, y SyntaxErrorEnable controla el diagnóstico de sintaxis en tiempo real. Ambas opciones verifican la calidad del código en diferentes capas. Habilite ambas para obtener una cobertura completa del diagnóstico de incidencias.
Vaya a la página de lista de espacios de trabajo de DataWorks, seleccione el espacio de trabajo deseado y elija Quick Start > DataStudio en la columna Actions.
-
Haga clic en
Setup en la parte inferior del panel de navegación izquierdo y seleccione la pestaña User en la página Setup.La siguiente tabla describe los elementos de configuración.
|
Ruta de configuración |
Elemento de configuración |
Propósito |
Valores válidos |
Valor predeterminado |
Impacto |
|
DataStudio |
|
Habilita el plugin Data Asset Governance. |
|
|
Controla si se verifican problemas de estándares de datos, seguridad y rendimiento al guardar un nodo. |
|
LspSetting |
|
Habilita el diagnóstico de sintaxis en tiempo real. |
|
|
Controla si los errores de sintaxis se muestran en tiempo real mientras edita el código. |
|
LspSetting |
|
Establece el nivel de alerta de los errores de sintaxis. |
|
|
Controla el nivel con el que aparecen los errores de sintaxis en el editor, como un subrayado ondulado rojo ( |
Gestionar la biblioteca de reglas integradas
Las bibliotecas de reglas determinan el comportamiento de verificación del plugin Data Asset Governance y consisten en reglas integradas y personalizadas. Habilite o deshabilite una regla específica según sea necesario.
La gestión de la biblioteca de reglas solo tiene efecto para la cuenta actual de Alibaba Cloud.
En el panel de navegación izquierdo de la página de DataStudio, haga clic en el icono de gobernanza
para abrir la configuración del plugin Data Asset Governance.-
En la sección Built-in Rule Library del panel del plugin Data Asset Governance, busque la regla de gobernanza deseada y haga clic en el interruptor junto a ella para habilitar o deshabilitar la regla.
Enabled (predeterminado): La regla se verifica al guardar un nodo.
Disabled: La regla deja de verificarse al guardar un nodo.
Biblioteca de reglas personalizadas
Cuando las reglas integradas no cubren la lógica de negocio específica o los estándares de codificación de su equipo, utilice la biblioteca de reglas personalizadas del plugin Data Asset Governance para definir nuevas reglas de verificación. Describa cada regla en lenguaje natural y proporcione ejemplos correctos e incorrectos.
Escenarios de reglas personalizadas compatibles
|
Dimensión de verificación |
Contenido verificado |
Valor principal |
Alcance compatible |
|
Texto del código |
El código sin procesar en un nodo, como un script SQL. |
Verifica el estilo del código, bloquea palabras clave prohibidas y aplica mejores prácticas. |
Todos los tipos de tareas |
|
Configuración de programación |
Grupos de recursos, ciclos de programación, configuraciones de tiempo de espera, etc. |
Mantiene el uso de recursos conforme y previene errores de configuración de programación. |
Todos los tipos de tareas |
|
Linaje del nodo |
Las dependencias ascendentes y descendentes de una tarea. |
Analiza el impacto en el enlace y previene riesgos cuando cambia un nodo crítico. |
Todos los tipos de tareas |
|
Análisis sintáctico del código |
Las tablas, funciones y vistas sobre las que opera el código SQL. |
Identifica operaciones en tablas sensibles y uso indebido de funciones, y mantiene los permisos conformes. |
Todos los tipos de tareas SQL |
|
Metadatos y linaje |
Esquemas de tablas, detalles de campos y linaje a nivel de tabla. |
Verifica el impacto de los cambios en los campos y mantiene consistente el modelo de datos. |
MaxCompute SQL, EMR Spark SQL, EMR Hive y Hologres SQL |
|
Métricas de gobernanza de datos |
Costo, almacenamiento, puntuación de salud de salida y otros datos T+1. |
Monitorea el costo y la calidad de los datos para impulsar una gobernanza continua. |
Todos los tipos de tareas SQL |
Procedimiento
En el panel de navegación izquierdo de la página de DataStudio, haga clic en el icono de gobernanza
para abrir la configuración del plugin Data Asset Governance.-
En la sección Custom rule library del panel del plugin Data Asset Governance, haga clic en
+para crear una regla.Para generar una regla de gobernanza con DataWorks Copilot, haga clic en AI Generation.
-
Configure los campos de la regla. Este ejemplo crea la siguiente regla personalizada:
Rule Name:
Fact table updates must include WHERE.Severity: El nivel de advertencia solo le avisa durante el desarrollo, mientras que el nivel de error activa una alerta y bloquea la versión antes del despliegue. En este ejemplo, seleccione
Warning.Scope: Seleccione el alcance de nodos al que se aplica la regla, por ejemplo
MaxCompute > MaxCompute SQL.Effective scope: Se admiten los niveles user level, workspace level y tenant level. Solo un administrador de tenant puede ver el nivel de tenant, solo un administrador de espacio de trabajo puede ver el nivel de espacio de trabajo, y un miembro regular solo puede ver la opción de nivel de usuario.
Rule Description:
Check UPDATE statements in MaxCompute SQL. If a statement updates a fact table whose name ends with _f but has no WHERE clause, flag it as a high-risk issue.-
Valid example:
UPDATE my_project.order_detail_f SET status='shipped' WHERE order_id='123';UPDATE my_project.order_detail_dim SET status='shipped';
Invalid example:
UPDATE my_project.order_detail_f SET status='expired';
-
Haga clic en Save. La regla entrará en vigor en deep check.
Para dejar de usar una regla de gobernanza personalizada, pase el cursor sobre ella y haga clic en el icono de deshabilitar
que aparece.
deep check
Una verificación profunda (deep check) es una revisión exhaustiva y prolongada que usted activa manualmente. Aplica todas las reglas de gobernanza, incluidas las reglas de IA personalizadas. Por el contrario, el escaneo en vivo que se ejecuta al guardar un nodo solo aplica reglas integradas eficientes. Para validar su código contra el conjunto completo de reglas, ejecute una verificación profunda.
Para escanear un solo archivo
Para escanear el archivo abierto actualmente en el editor, haga clic en deep check encima del editor. El editor escanea el archivo a fondo e informa los problemas restantes.
Por ejemplo, en el código de muestra de Quick start, si solo corrige el problema Partitioned table queries must include a partition, el escaneo reportará el problema no resuelto Creating tables in SQL is not allowed.
Para escanear varios archivos por lotes
Tenga en cuenta los siguientes límites antes de iniciar un escaneo por lotes:
Una verificación por lotes solo cubre las pestañas de archivos abiertas actualmente en el editor. Los archivos que no están abiertos no se pueden seleccionar.
Puede seleccionar hasta 5 archivos.
Solo se puede ejecutar una verificación profunda a la vez durante una verificación por lotes.
En el panel de navegación izquierdo de la página de DataStudio, haga clic en el icono de gobernanza
para abrir la configuración del plugin Data Asset Governance.-
En la sección deep check del panel del plugin Data Asset Governance, seleccione los archivos y las reglas para la verificación por lotes, y luego inicie la verificación profunda.
Una vez finalizada la verificación profunda, la pestaña deep check en la parte inferior muestra los resultados. Por ejemplo, la verificación del archivo
testassetruledevuelve dos advertencias: Creating tables in SQL is not allowed [my_partitioned_table] (reglaForbidUseCreateTable, línea 7, columna 28) y Partitioned table queries must include a partition (reglaMissPartitionKeyFilter, línea 17, columna 18). Haga clic en el nombre de una regla para ver sus detalles.
En el panel de resultados de deep check r, haga clic en View Log en la esquina superior derecha para revisar cómo razonó el modelo de lenguaje grande sobre cada regla de verificación.
Referencia de reglas de gobernanza
Para ver los detalles de todas las reglas de verificación, haga clic en
en la esquina superior derecha de la sección deep check del panel del plugin Data Asset Governance. Las siguientes secciones describen algunas de las reglas principales integradas en el plugin Data Asset Governance.
Para conocer los tipos de nodos a los que se aplica cada regla de gobernanza, consulte Knowledge Base.
Las consultas a tablas particionadas deben incluir una partición
Riesgo: Consultar una tabla particionada de MaxCompute sin especificar una partición desencadena un escaneo completo de la tabla, lo cual consume grandes cantidades de recursos de cómputo y genera altos costos de computación.
Ejemplo de código incorrecto:
SELECT user_id, order_amount
FROM user_orders
WHERE status = 'paid';
Ejemplo de código correcto:
SELECT user_id, order_amount
FROM user_orders
WHERE status = 'paid'
AND pt = '${bizdate}'; -- Add a partition filter
Lógica de corrección automática: Quick Fix es compatible. El sistema agrega un filtro de partición a la cláusula WHERE, como AND pt = '${bizdate}'.
No se permite INSERT INTO con la propiedad de reejecución
Riesgo: Si una tarea SQL solo contiene lógica INSERT INTO y su configuración de programación permite reejecuciones, cada reejecución añade datos a la tabla destino. Esto causa fácilmente datos duplicados y compromete la precisión de los datos.
Ejemplo de código incorrecto:
-- The task property is set to "rerunnable"
INSERT INTO target_table SELECT * FROM source_table;
Ejemplo de código correcto:
-- The task property is set to "rerunnable"
INSERT OVERWRITE TABLE target_table SELECT * FROM source_table;
Lógica de corrección automática: Quick Fix es compatible. El sistema cambia INSERT INTO por INSERT OVERWRITE para que una reejecución sobrescriba los datos en lugar de añadirlos.
Los tipos de campo JOIN deben coincidir
Riesgo: En MaxCompute SQL, si los campos de clave externa de una operación JOIN tienen tipos inconsistentes, se produce una conversión implícita de tipos. Esto puede causar errores de computación y degradación del rendimiento, además de afectar la calidad de los datos.
Ejemplo de código incorrecto:
-- a.user_id is BIGINT, b.uid is STRING
SELECT * FROM table_a a JOIN table_b b ON a.user_id = b.uid;
Ejemplo de código correcto:
-- a.user_id is BIGINT, b.uid is STRING
SELECT * FROM table_a a JOIN table_b b ON a.user_id = CAST(b.uid AS BIGINT);
Lógica de corrección automática: Quick Fix es compatible. El sistema detecta la discrepancia y aplica la función CAST a uno de los campos para convertir su tipo explícitamente y hacerlo coincidir con el otro campo.
INSERT en una tabla que no pertenece al proyecto actual
Riesgo: Escribir datos desde una tarea en el proyecto A hacia una tabla en el proyecto B es una operación de alto riesgo. Rompe el aislamiento entre proyectos y puede provocar acceso no autorizado a datos y fugas de información.
Ejemplo de código incorrecto:
-- Run in a task of project_A
INSERT INTO project_B.some_table SELECT * FROM my_table;
Ejemplo de código correcto:
-- Recommended approach: let a task in the project that owns the table (project_B) write the data.
-- Avoid this operation in project_A.
Lógica de corrección automática: La corrección automática no es compatible. Ajuste el enlace de sincronización de datos según sus requisitos de negocio para que el proyecto destino escriba los datos con su propia tarea.
Las tareas automáticas en línea no deben escribir en tablas del entorno de desarrollo
Riesgo: Cuando una tarea automática en el entorno de producción escribe datos en una tabla del entorno de desarrollo, el nivel de protección de los datos disminuye y surgen riesgos de seguridad.
Ejemplo de código incorrecto:
-- Run in a task of the production environment (PROD)
INSERT OVERWRITE TABLE user_dev.temp_data SELECT * FROM user_prod.source_data;
Ejemplo de código correcto:
-- A production task must write to a table in the production environment
INSERT OVERWRITE TABLE user_prod.result_data SELECT * FROM user_prod.source_data;
Lógica de corrección automática: La corrección automática no es compatible. Modifique la tabla destino manualmente para que el flujo de datos cumpla con los estándares de aislamiento de entornos.
No se permite crear tablas en SQL
Riesgo: Usar CREATE TABLE directamente en una tarea SQL programada hace que la propiedad de la tabla sea poco clara, ya que generalmente pertenece a la cuenta de Alibaba Cloud o a la cuenta de programación. Esto aumenta los costos de gestión y crea un riesgo de eliminación accidental de datos.
Ejemplo de código incorrecto:
CREATE TABLE my_temp_table (id INT);
INSERT INTO my_temp_table VALUES (1);
Ejemplo de código correcto:
-- Create the table in the DataWorks table management module first, and then use it directly in the SQL task.
INSERT INTO my_temp_table VALUES (1);
Lógica de corrección automática: La corrección automática no es compatible. Cree la tabla en la gestión de metadatos de DataWorks o use CREATE TABLE IF NOT EXISTS para evitar errores en algunos escenarios.
Falta el verificador de parámetros de programación
Riesgo: Una tarea automática procesa datos incrementalmente por tiempo. Si la condición WHERE omite un parámetro de programación como ${bizdate}, la tarea podría procesar todos los datos diariamente o procesar un rango de fechas incorrecto. Esto causa datos faltantes o incorrectos y desperdicia grandes cantidades de recursos.
Ejemplo de código incorrecto:
-- Incorrect: the scheduling parameter is missing, so daily incremental processing is impossible
INSERT OVERWRITE TABLE users_active_today PARTITION (pt = '${bizdate}')
SELECT user_id FROM login_log; -- WHERE pt = '...' is missing
Ejemplo de código correcto:
-- Correct: use the scheduling parameter as a filter to process data incrementally every day
INSERT OVERWRITE TABLE users_active_today PARTITION (pt = '${bizdate}')
SELECT user_id FROM login_log
WHERE pt = '${bizdate}';
Lógica de corrección automática: La corrección automática es parcialmente compatible. El plugin resalta dónde podría faltar un filtro de parámetro de programación. Dado que la lógica de negocio varía, agregue manualmente el filtro correcto según sus requisitos.
Preguntas frecuentes
¿Estas verificaciones afectan el rendimiento del editor o el tiempo que tarda en guardarse una tarea?
El diagnóstico de sintaxis en tiempo real (LSP) tiene un impacto leve pero aceptable en el rendimiento del editor. El plugin Data Asset Governance se ejecuta al guardar un nodo, lo cual añade una pequeña cantidad de tiempo a la operación de guardado. La duración exacta depende de la complejidad del código y del número de reglas. Si nota un retraso evidente, compruebe su entorno de red o contacte al soporte técnico.
¿El diagnóstico de incidencias se factura por separado y es obligatorio DataWorks Copilot?
El diagnóstico de incidencias es una capacidad básica de DataWorks y no se cobra por separado. Sin embargo, si utiliza las sugerencias de corrección de DataWorks Copilot, se aplican las reglas de facturación descritas en Data Agent Overview. También puede corregir problemas manualmente sin Copilot.
Habilité la función, pero no se detectan los problemas en mi código. ¿Por qué?
Realice las siguientes comprobaciones:
Compruebe los interruptores principales: Asegúrese de que
DataStudio Governance Check Module EnablementySyntaxErrorEnableestén habilitados en Setup > User. Para consultar la ruta de navegación y los valores válidos, consulte Enable configuration items.Compruebe los interruptores de reglas: Vaya a la Built-in Rule Library y asegúrese de que las reglas que desea aplicar estén habilitadas. Para obtener instrucciones, consulte Manage the built-in rule library.
Confirme el tipo de nodo: Compruebe si el tipo de nodo actual está dentro del alcance de la regla objetivo.
Compruebe la red: Verifique si alguna solicitud de red falló en las herramientas de desarrollador de su navegador. Es posible que el servicio LSP o el servicio de gobernanza no se hayan cargado debido a problemas de red.
¿Qué sucede si el servicio LSP o el servicio del plugin de gobernanza no están disponibles?
Si el servicio de backend no está disponible temporalmente, el diagnóstico de incidencias falla silenciosamente. No verá indicaciones de sintaxis en tiempo real ni problemas de gobernanza al guardar, pero la edición y el guardado de código seguirán funcionando con normalidad. Actualice la página y active las verificaciones nuevamente.
Apéndice: Glosario
|
Término |
Descripción |
|
Diagnóstico de sintaxis en tiempo real (LSP) |
Verificación de sintaxis en tiempo real y análisis estático de código que se ejecuta mientras edita el código. |
|
Verificación de salud del desarrollo |
Validaciones basadas en una biblioteca de reglas para detectar problemas de estándares de datos, seguridad y rendimiento. Incluye escaneos en vivo que se ejecutan al guardar un nodo y verificaciones profundas que usted activa manualmente. |
|
Live Scan |
Una verificación rápida y ligera que se ejecuta en el nodo activo al guardarlo. Debido a restricciones de rendimiento actuales, solo aplica reglas integradas eficientes. |
|
deep check |
Una verificación exhaustiva y prolongada que usted activa manualmente. Aplica todas las reglas, incluidas las reglas de IA personalizadas. Puede escanear un solo archivo o un lote de hasta 5 archivos abiertos. |
|
Custom AI Checker |
Una regla de verificación que usted define en un formato específico, como lenguaje natural más ejemplos, y que es impulsada por un modelo de lenguaje grande. |
|
Problems Panel |
El área de la interfaz, nativa de VS Code o personalizada por el plugin, que muestra los problemas de código en un solo lugar. |
|
Quick Fix |
Una acción clicable que proporciona el plugin para un problema detectado, con el fin de corregir automáticamente el código o la configuración. |