O plugin Data Asset Governance no DataWorks DataStudio detecta erros de sintaxe em tempo real durante a edição e valida seu código em relação às regras de governança ao salvar ou sob demanda. O DataWorks Copilot auxilia na correção dos problemas detectados, melhorando a qualidade do código e a segurança dos dados.
Capacidades de diagnóstico de problemas
O diagnóstico de problemas no desenvolvimento de nós combina duas capacidades principais: o diagnóstico de sintaxe em tempo real (LSP) e a verificação de integridade do desenvolvimento. Juntas, elas protegem a qualidade do código sob diferentes perspectivas.
|
Capacidade |
Diagnóstico de sintaxe em tempo real (LSP) |
Verificação de integridade do desenvolvimento |
|
Responsabilidade principal |
Verificação de sintaxe em tempo real e análise estática de código. |
Validações baseadas em biblioteca de regras para padrões de dados, segurança e desempenho. |
|
Momento de execução |
Execute em tempo real conforme você edita o código. |
Execute ao salvar um nó. Também é possível acionar uma verificação profunda manual em arquivo único ou em lote. |
|
Problemas abrangidos |
Erros de sintaxe SQL, uso incorreto de funções e problemas similares. |
Problemas detectados pela biblioteca de regras integrada, como uso inadequado de partições, gravações entre projetos e tipos de campos JOIN incompatíveis. Bibliotecas de regras personalizadas baseadas no DataWorks Copilot também são suportadas. |
|
Como corrigir |
Correções assistidas pelo DataWorks Copilot. |
Sugestões de correção geradas por IA e Quick Fix. |
Observe os seguintes pontos:
Se o código contiver erros de sintaxe, apenas o diagnóstico de sintaxe em tempo real (LSP) será acionado. Uma regra de verificação de integridade do desenvolvimento cujo objeto seja o código só execute quando a sintaxe estiver totalmente correta.
Um item de verificação com falha não impede a execução do código.
Escolher um método de verificação
Erros de sintaxe durante a digitação: O diagnóstico de sintaxe em tempo real (LSP) sinaliza esses erros instantaneamente.
Regras de governança integradas: Uma varredura em tempo real aplica regras integradas eficientes ao nó ativo no momento em que você o salva.
Cobertura total de regras: Acione uma verificação profunda manualmente para aplicar todas as regras, incluindo as regras personalizadas de IA. É possível verificar um único arquivo ou um lote de arquivos abertos.
Disponibilidade regional
O diagnóstico de problemas no desenvolvimento de nós está disponível apenas nas regiões listadas abaixo. A verificação profunda (deep check) é suportada em um subconjunto delas.
|
Região |
deep check |
|
China (Hangzhou) |
Suportado |
|
China (Shanghai) |
Suportado |
|
China (Beijing) |
Suportado |
|
China (Zhangjiakou) |
Suportado |
|
China (Ulanqab) |
Suportado |
|
China (Shenzhen) |
Suportado |
|
China (Chengdu) |
Suportado |
|
China (Hong Kong) |
Suportado |
|
Singapore |
Suportado |
|
Malaysia (Kuala Lumpur) |
Não suportado |
|
Indonesia (Jakarta) |
Não suportado |
|
Germany (Frankfurt) |
Não suportado |
|
US (Silicon Valley) |
Não suportado |
|
US (Virginia) |
Não suportado |
Início rápido
O tutorial a seguir apresenta o fluxo principal de diagnóstico e correção de problemas de código em cinco minutos.
-
Ative o recurso de verificação de qualidade.
Acesse o DataStudio do DataWorks, clique em
Setup na parte inferior do painel de navegação à esquerda e clique em na aba User na página Setup. Certifique-se de que DataStudio Governance Check Module EnablementemData GovernanceeSyntaxErrorEnableemLspSettingestejam selecionados. Ambas as opções vêm selecionadas por padrão. Para obter o caminho de navegação e os valores válidos de cada opção, consulte Enable configuration items. -
Escreva um código de exemplo que contenha problemas.
Crie um nó MaxCompute ODPS SQL e cole o seguinte código de exemplo, que contém erros, no 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; -
Localize o problema de sintaxe LSP.
O LSP execute uma verificação em tempo real e marca
SELECcom um sublinhado ondulado vermelho para indicar um erro de sintaxe. Clique em no ícone
no canto inferior esquerdo da página e visualize os problemas de código do nó no Problems Panel que aparece.-- Example: syntax error SELEC name FROM my_partitioned_table; -
Corrija o problema de sintaxe LSP.
Passe o mouse sobre a palavra-chave
SELECcom o sublinhado ondulado vermelho e clique em no ícone de lâmpada que aparece. O DataWorks Copilot então corrige o termo paraSELECT. -
Identifique problemas de regras de governança.
Clique em Save. O editor valida o código em relação aos itens de verificação ativados no plugin Data Asset Governance. Neste exemplo, o código aciona duas regras integradas de verificação de integridade do desenvolvimento: Creating tables in SQL is not allowed e Partitioned table queries must include a partition.
Caso o Problems Panel não abra automaticamente, clique em no ícone
no canto inferior esquerdo da página para abri-lo.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 regras de governança.
Passe o mouse sobre
my_partitioned_tablee clique em Quick Fix. Alternativamente, clique em no hyperlink no Problems Panel, aguarde a sugestão de correção e aplique-a após confirmar que ela atende aos seus requisitos de otimização.Neste exemplo, use o Quick Fix para corrigir a segunda instrução SQL:
SELECT name FROM my_partitioned_table; SELECT name FROM my_partitioned_table WHERE ds = '20231010'; -
Inicie uma verificação profunda em arquivo único.
Após corrigir os problemas, clique em deep chec acima do editor para executar uma verificação profunda no código do nó. O editor examina o arquivo em profundidade e relata os problemas restantes. Por exemplo, se você corrigir apenas o problema Partitioned table queries must include a partition, a varredura relatará o problema não resolvido Creating tables in SQL is not allowed.
Recursos principais
Ativar itens de configuração
Ajuste as configurações de diagnóstico de problemas para adequá-las ao seu fluxo de trabalho de desenvolvimento. Todos os itens de configuração têm efeito apenas para a conta Alibaba Cloud atual.
DataStudio Governance Check Module Enablement controla a capacidade de verificação do plugin Data Asset Governance, enquanto SyntaxErrorEnable controla o diagnóstico de sintaxe em tempo real. As duas opções verificam a qualidade do código em camadas diferentes. Ative ambas para obter cobertura total no diagnóstico de problemas.
Acesse a página de lista de workspaces do DataWorks, selecione o workspace desejado e escolha Quick Start > DataStudio na coluna Actions.
-
Clique em
Setup na parte inferior do painel de navegação à esquerda e clique em na aba User na página Setup.A tabela a seguir descreve os itens de configuração.
|
Caminho de configuração |
Item de configuração |
Finalidade |
Valores válidos |
Valor padrão |
Impacto |
|
DataStudio |
|
Ativa o plugin Data Asset Governance. |
|
|
Controla se problemas de padrão de dados, segurança e desempenho são verificados ao salvar um nó. |
|
LspSetting |
|
Ativa o diagnóstico de sintaxe em tempo real. |
|
|
Controla se erros de sintaxe são exibidos em tempo real durante a edição do código. |
|
LspSetting |
|
Defina o nível de alerta dos erros de sintaxe. |
|
|
Controla o nível em que os erros de sintaxe aparecem no editor, como sublinhado ondulado vermelho ( |
Gerencie a biblioteca de regras integradas
As bibliotecas de regras orientam o comportamento de verificação do plugin Data Asset Governance e consistem em regras integradas e personalizadas. Ative ou desative uma regra específica conforme necessário.
O gerenciamento da biblioteca de regras tem efeito apenas para a conta Alibaba Cloud atual.
No painel de navegação à esquerda da página do DataStudio, clique em no ícone de governança
para abrir a configuração do plugin Data Asset Governance.-
Na seção Built-in Rule Library do painel do plugin Data Asset Governance, localize a regra de governança desejada e clique em no botão alternador ao lado dela para ativar ou desativar a regra.
Enabled (padrão): A regra é verificada ao salvar um nó.
Disabled: A regra deixa de ser verificada ao salvar um nó.
Biblioteca de regras personalizadas
Quando as regras integradas não cobrem a lógica de negócio específica ou os padrões de codificação da sua equipe, utilize a biblioteca de regras personalizadas do plugin Data Asset Governance para definir novas regras de verificação. Descreva cada regra em linguagem natural e forneça exemplos corretos e incorretos.
Cenários de regras personalizadas suportados
|
Dimensão de verificação |
Conteúdo verificado |
Valor principal |
Escopo suportado |
|
Texto do código |
O código bruto em um nó, como um script SQL. |
Verifica estilo de código, bloqueia palavras-chave proibidas e aplica melhores práticas. |
Todos os tipos de tarefa |
|
Configuração de agendamento |
Grupos de recursos, ciclos de agendamento, configurações de timeout, entre outros. |
Mantém o uso de recursos em conformidade e previne erros de configuração de agendamento. |
Todos os tipos de tarefa |
|
Linhagem de nós |
As dependências upstream e downstream de uma tarefa. |
Analisa o impacto no link e previne riscos quando um nó crítico é alterado. |
Todos os tipos de tarefa |
|
Análise de código |
As tabelas, funções e views sobre as quais o código SQL opera. |
Identifica operações em tabelas sensíveis e uso indevido de funções, mantendo as permissões em conformidade. |
Todos os tipos de tarefa SQL |
|
Metadados e linhagem |
Esquemas de tabelas, detalhes de campos e linhagem no nível de tabela. |
Verifica o impacto de alterações em campos e mantém o modelo de dados consistente. |
MaxCompute SQL, EMR Spark SQL, EMR Hive e Hologres SQL |
|
Métricas de governança de dados |
Custo, armazenamento, pontuação de integridade de saída e outros dados T+1. |
Monitora custo e qualidade dos dados para impulsionar a governança contínua. |
Todos os tipos de tarefa SQL |
Procedimento
No painel de navegação à esquerda da página do DataStudio, clique em no ícone de governança
para abrir a configuração do plugin Data Asset Governance.-
Na seção Custom rule library do painel do plugin Data Asset Governance, clique em
+para crie uma regra.Para gerar uma regra de governança com o DataWorks Copilot, clique em AI Generation.
-
Configure os campos da regra. Este exemplo cria a seguinte regra personalizada:
Rule Name:
Fact table updates must include WHERE.Severity: O nível de aviso (warning) apenas alerta durante o desenvolvimento, enquanto o nível de erro (error) dispara um alerta e bloqueia a liberação antes da implantação. Neste exemplo, selecione
Warning.Scope: Selecione o escopo de nós ao qual a regra se aplica, como
MaxCompute > MaxCompute SQL.Effective scope: Os níveis user level, workspace level e tenant level são suportados. Apenas um administrador de tenant pode ver o nível de tenant, apenas um administrador de workspace pode ver o nível de workspace, e um membro comum vê apenas a opção de nível de usuário.
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';
-
Clique em Save. A regra entra em vigor no deep check.
Para parar de usar uma regra de governança personalizada, passe o mouse sobre ela e clique em no ícone de desativação
que aparece.
deep check
Uma verificação profunda (deep check) é uma validação abrangente e mais demorada, acionada manualmente. Ela aplica todas as regras de governança, incluindo regras personalizadas de IA. Em contraste, a varredura em tempo real que execute ao salvar um nó aplica-se apenas a regras integradas eficientes. Para validar seu código em relação ao conjunto completo de regras, execute uma verificação profunda.
Para verificar um único arquivo
Para verificar o arquivo atualmente aberto no editor, clique em deep check acima do editor. O editor examina o arquivo em profundidade e relata os problemas restantes.
Por exemplo, no código de amostra de Quick start, se você corrigir apenas o problema Partitioned table queries must include a partition, a varredura relatará o problema não resolvido Creating tables in SQL is not allowed.
Para verificar vários arquivos em lote
Observe os seguintes limites antes de iniciar uma verificação em lote:
Uma verificação em lote abrange apenas as abas de arquivos atualmente abertas no editor. Arquivos que não estão abertos não podem ser selecionados.
É possível selecione até 5 arquivos.
Apenas uma verificação profunda pode execute por vez durante uma verificação em lote.
No painel de navegação à esquerda da página do DataStudio, clique em no ícone de governança
para abrir a configuração do plugin Data Asset Governance.-
Na seção deep check do painel do plugin Data Asset Governance, selecione os arquivos e as regras para a verificação em lote e inicie a verificação profunda.
Após a conclusão da verificação profunda, a aba deep check na parte inferior exibe os resultados. Por exemplo, a verificação do arquivo
testassetruleretorna dois avisos: Creating tables in SQL is not allowed [my_partitioned_table] (regraForbidUseCreateTable, linha 7, coluna 28) e Partitioned table queries must include a partition (regraMissPartitionKeyFilter, linha 17, coluna 18). Clique em no nome de uma regra para visualize seus detalhes.
No painel de resultados do deep check r, clique em View Log no canto superior direito para revisar como o modelo de linguagem grande raciocinou sobre cada regra de verificação.
Referência de regras de governança
Para visualize os detalhes de todas as regras de verificação, clique em
no canto superior direito da seção deep check do painel do plugin Data Asset Governance. As seções a seguir descrevem algumas das regras principais integradas ao plugin Data Asset Governance.
Para consultar os tipos de nós aos quais cada regra de governança se aplica, veja Knowledge Base.
Consultas em tabelas particionadas devem incluir uma partição
Risco: Consultar uma tabela particionada do MaxCompute sem especificar uma partição aciona uma varredura completa da tabela, o que consome grandes quantidades de recursos de computação e gera custos elevados.
Exemplo de código incorreto:
SELECT user_id, order_amount
FROM user_orders
WHERE status = 'paid';
Exemplo de código correto:
SELECT user_id, order_amount
FROM user_orders
WHERE status = 'paid'
AND pt = '${bizdate}'; -- Add a partition filter
Lógica de correção automática: Quick Fix é suportado. O sistema adiciona um filtro de partição à cláusula WHERE, como AND pt = '${bizdate}'.
INSERT INTO com propriedade de reexecução não é permitido
Risco: Se uma tarefa SQL contiver apenas lógica INSERT INTO e sua configuração de agendamento permitir reexecuções, cada reexecução anexará dados à tabela de destino. Isso causa facilmente duplicação de dados e compromete a precisão das informações.
Exemplo de código incorreto:
-- The task property is set to "rerunnable"
INSERT INTO target_table SELECT * FROM source_table;
Exemplo de código correto:
-- The task property is set to "rerunnable"
INSERT OVERWRITE TABLE target_table SELECT * FROM source_table;
Lógica de correção automática: Quick Fix é suportado. O sistema altera INSERT INTO para INSERT OVERWRITE para que uma reexecução sobrescreva os dados em vez de anexá-los.
Tipos de campos JOIN devem corresponder
Risco: No MaxCompute SQL, se os campos de chave estrangeira de uma operação JOIN tiverem tipos inconsistentes, ocorre conversão implícita de tipo. Isso pode causar erros de computação e degradação de desempenho, afetando a qualidade dos dados.
Exemplo de código incorreto:
-- a.user_id is BIGINT, b.uid is STRING
SELECT * FROM table_a a JOIN table_b b ON a.user_id = b.uid;
Exemplo de código correto:
-- 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 correção automática: Quick Fix é suportado. O sistema detecta a incompatibilidade e aplica a função CAST a um dos campos para converter seu tipo explicitamente, garantindo a correspondência com o outro campo.
INSERT em tabela que não pertence ao projeto atual
Risco: Gravar dados de uma tarefa no projeto A em uma tabela no projeto B é uma operação de alto risco. Isso quebra o isolamento entre projetos e pode levar a acesso não autorizado e vazamento de dados.
Exemplo de código incorreto:
-- Run in a task of project_A
INSERT INTO project_B.some_table SELECT * FROM my_table;
Exemplo de código correto:
-- 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 correção automática: A correção automática não é suportada. Ajuste o link de sincronização de dados conforme seus requisitos de negócio para que o projeto de destino grave os dados com sua própria tarefa.
Tarefas automáticas online não devem gravar em tabelas do ambiente de desenvolvimento
Risco: Quando uma tarefa automática no ambiente de produção grava dados em uma tabela no ambiente de desenvolvimento, o nível de proteção dos dados diminui e surgem riscos de segurança.
Exemplo de código incorreto:
-- Run in a task of the production environment (PROD)
INSERT OVERWRITE TABLE user_dev.temp_data SELECT * FROM user_prod.source_data;
Exemplo de código correto:
-- 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 correção automática: A correção automática não é suportada. Modifique a tabela de destino manualmente para que o fluxo de dados esteja em conformidade com os padrões de isolamento de ambiente.
Criação de tabelas em SQL não é permitida
Risco: Usar CREATE TABLE diretamente em uma tarefa SQL agendada torna a propriedade da tabela incerta, pois a tabela geralmente pertence à conta Alibaba Cloud ou à conta de agendamento. Isso aumenta os custos de gerenciamento e cria risco de exclusão acidental de dados.
Exemplo de código incorreto:
CREATE TABLE my_temp_table (id INT);
INSERT INTO my_temp_table VALUES (1);
Exemplo de código correto:
-- 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 correção automática: A correção automática não é suportada. Crie a tabela no módulo de gerenciamento de metadados do DataWorks ou use CREATE TABLE IF NOT EXISTS para evitar erros em alguns cenários.
Verificador de parâmetro de agendamento ausente
Risco: Uma tarefa automática processa dados incrementalmente por tempo. Se a condição WHERE omitir um parâmetro de agendamento como ${bizdate}, a tarefa poderá processar dados completos todos os dias ou processar um intervalo de datas incorreto. Isso causa dados ausentes ou incorretos e desperdiça grandes quantidades de recursos.
Exemplo de código incorreto:
-- 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
Exemplo de código correto:
-- 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 correção automática: A correção automática é parcialmente suportada. O plugin destaca onde um filtro de parâmetro de agendamento pode estar ausente. Como a lógica de negócio varia, adicione o filtro correto manualmente com base nos seus requisitos.
Perguntas frequentes
Essas verificações afetam o desempenho do editor ou o tempo para salve uma tarefa?
O diagnóstico de sintaxe em tempo real (LSP) tem um impacto leve, porém aceitável, no desempenho do editor. O plugin Data Asset Governance execute ao salvar um nó, o que adiciona um pequeno tempo à operação de salvamento. A duração exata depende da complexidade do código e do número de regras. Se notar lentidão evidente, verifique seu ambiente de rede ou entre em contato com o suporte técnico.
O diagnóstico de problemas é cobrado separadamente e o DataWorks Copilot é obrigatório?
O diagnóstico de problemas é uma capacidade básica do DataWorks e não é cobrado separadamente. No entanto, se você utilizar as sugestões de correção do DataWorks Copilot, aplicam-se as regras de faturamento descritas em Data Agent Overview. Também é possível corrigir problemas manualmente sem o Copilot.
Ativei o recurso, mas os problemas no meu código não foram detectados. Por quê?
Siga estes passos para solucionar o problema:
Verifique os interruptores principais: Certifique-se de que
DataStudio Governance Check Module EnablementeSyntaxErrorEnableestejam ativados em Setup > User. Para o caminho de navegação e valores válidos, consulte Enable configuration items.Verifique os interruptores de regras: Acesse a Built-in Rule Library e certifique-se de que as regras que deseja aplicar estejam ativadas. Para instruções, consulte Manage the built-in rule library.
Confirme o tipo de nó: Verifique se o tipo de nó atual está dentro do escopo da regra alvo.
Verifique a rede: Confira se alguma requisição de rede falhou nas ferramentas de desenvolvedor do seu navegador. O service LSP ou o service de governança podem ter falhado ao carregar devido a problemas de rede.
O que acontece se o service LSP ou o service do plugin de governança estiver indisponível?
Se o service de backend estiver temporariamente indisponível, o diagnóstico de problemas falhará silenciosamente. Você não verá prompts de sintaxe em tempo real ou problemas de governança ao salvar, mas a edição e o salvamento de código continuarão funcionando normalmente. Atualize a página e acione as verificações novamente.
Apêndice: Glossário
|
Termo |
Descrição |
|
Diagnóstico de sintaxe em tempo real (LSP) |
Verificação de sintaxe em tempo real e análise estática de código que execute conforme você edite o código. |
|
Verificação de integridade do desenvolvimento |
Validações baseadas em biblioteca de regras para problemas de padrão de dados, segurança e desempenho. Inclui varreduras em tempo real que execute ao salvar um nó e verificações profundas acionadas manualmente. |
|
Varredura em tempo real |
Uma verificação rápida e leve que execute no nó ativo ao salvá-lo. Devido a restrições atuais de desempenho, aplica-se apenas a regras integradas eficientes. |
|
deep check |
Uma verificação abrangente e mais demorada, acionada manualmente. Aplica todas as regras, incluindo regras personalizadas de IA. É possível verificar um único arquivo ou um lote de até 5 arquivos abertos. |
|
Custom AI Checker |
Uma regra de verificação definida em um formato específico, como linguagem natural mais exemplos, e impulsionada por um modelo de linguagem grande. |
|
Problems Panel |
A área da interface, nativa do VS Code ou personalizada pelo plugin, que mostra problemas de código em um único local. |
|
Quick Fix |
Uma ação clicável fornecida pelo plugin para um problema detectado, destinada a corrigir automaticamente o código ou a configuração. |