O nó MaxCompute SQL no DataWorks permite agendar periodicamente tarefas SQL do MaxCompute. É possível integrar essas tarefas a outros tipos de nó em um fluxo de trabalho unificado. O MaxCompute SQL utiliza sintaxe semelhante à SQL, ideal para processamento distribuído de dados em grande escala (nível de TB) quando resultados em tempo real não são críticos. Este tópico explica como desenvolver tarefas de nó MaxCompute SQL no DataWorks.
Introdução
Use o MaxCompute SQL para processar e consultar dados no MaxCompute. Ele oferece suporte a operações SQL comuns, como SELECT, INSERT, UPDATE e DELETE, além de sintaxes e funções específicas do MaxCompute. Consulte e processe dados escrevendo instruções semelhantes a SQL, sem necessidade de programação complexa. Para obter mais informações sobre a sintaxe SQL, consulte Visão geral da SQL.
Pré-requisitos
Você vinculou um mecanismo de computação do MaxCompute ao workspace do DataWorks.
-
(Opcional, para usuários RAM) O usuário RAM responsável pelo desenvolvimento da tarefa deve ser membro do workspace e ter a função Development ou Workspace Administrator. A função Workspace Administrator inclui permissões amplas; conceda-a com cautela. Para saber como adicionar membros a um workspace, consulte Adicionar membros a um workspace.
NotaSe você usa uma conta Alibaba Cloud, pule esta etapa.
Limitações
O nó MaxCompute SQL apresenta as seguintes limitações para desenvolvimento SQL:
Categoria | Descrição |
Comentários | Somente comentários de linha única iniciados com Para obter mais informações, consulte Comentários do MaxCompute SQL. As seguintes limitações também se aplicam aos comentários:
|
Envio de SQL | A ODPS SQL não aceita instruções SET ou USE isoladas. Execute-as sempre junto com uma instrução SQL específica. |
Desenvolvimento SQL | O tamanho do código SQL não pode exceder 128 KB200. |
Resultados da consulta | Somente instruções SQL iniciadas com SELECT ou WITH geram conjuntos de resultados formatados. Os resultados das consultas têm as seguintes limitações:
Nota Caso encontre limitações nos resultados, baixe-os para sua máquina local usando um dos métodos abaixo:
|
Observações
Verifique se a conta usada para executar tarefas MaxCompute SQL tem as permissões necessárias no projeto MaxCompute correspondente. Para obter mais informações, consulte Controle de permissões do DataWorks no MaxCompute e Autorização do MaxCompute.
A execução de tarefas MaxCompute SQL depende de recursos de cota. Se a tarefa demorar muito, acesse o console do MaxCompute para verificar o consumo de recursos de cota e garantir disponibilidade suficiente. Para obter mais informações, consulte Visualizar o consumo de recursos de cota.
Ao desenvolver tarefas de nó MaxCompute SQL, coloque parâmetros especiais, como caminhos do OSS, entre aspas duplas. A falta de aspas pode causar exceções de análise e falhas na execução da tarefa.
A ordem de execução de instruções com palavras-chave (SET, USE) varia conforme o ambiente no DataWorks. Para obter mais informações, consulte Apêndice 1: Ordem de execução SQL em diferentes ambientes.
Em casos extremos, como queda de energia ou failover primário/secundário, o DataWorks pode não encerrar completamente as tarefas relacionadas do MaxCompute. Nessa situação, acesse o projeto MaxCompute correspondente para encerrar o job.
Criar um nó MaxCompute SQL
Para obter informações sobre como criar um nó, consulte Criar um nó MaxCompute SQL.
Desenvolver um nó MaxCompute SQL
Na página de edição do nó MaxCompute SQL, execute as seguintes operações de desenvolvimento.
Desenvolver código SQL
O DataWorks fornece parâmetros de agendamento que permitem passar valores dinamicamente para o código. Defina variáveis em um nó MaxCompute SQL usando o formato ${variable_name} e atribua valores na seção Scheduling Parameters das Scheduling Settings. Para obter mais informações sobre os formatos aceitos, consulte Parâmetros de agendamento. O MaxCompute SQL usa sintaxe semelhante à SQL padrão e aceita instruções DDL, DML e DQL, além de sintaxes específicas do MaxCompute. Para sintaxe detalhada e exemplos, consulte Visão geral da SQL.
Veja três exemplos para cenários diferentes:
Quando funções estendidas do MaxCompute 2.0 usam novos tipos de dados, adicione
SET odps.sql.type.system.odps2=true;antes da instrução SQL que contém a função. Envie e execute essa configuração junto com a instrução SQL para que os novos tipos de dados funcionem corretamente. Para obter mais informações sobre os tipos de dados 2.0, consulte Tipos de dados do MaxCompute 2.0.As instruções MaxCompute SQL seguem ordens de execução diferentes nos ambientes Data Studio e Operation Center. Para obter mais informações, consulte Apêndice 1: Ordem de execução SQL em diferentes ambientes.
Criar uma tabela
Use a instrução CREATE TABLE para criar tabelas não particionadas, particionadas, externas e clusterizadas. Para obter mais informações, consulte CREATE TABLE. Exemplo de SQL:
-- Create a partitioned table named students CREATE TABLE IF NOT EXISTS students ( id BIGINT, name STRING, age BIGINT, birth DATE) partitioned BY (gender STRING);
Inserir dados
Use a instrução INSERT INTO ou INSERT OVERWRITE para inserir ou atualizar dados em uma tabela de destino. Para obter mais informações, consulte Inserir ou sobrescrever dados.
Evite usar a instruçãoINSERT INTOpara inserir dados, pois isso pode causar duplicação inesperada. Recomendamos o uso deINSERT OVERWRITE. Para obter mais informações, consulte Inserir ou sobrescrever dados .
Exemplo de SQL:
-- Insert data INSERT OVERWRITE students PARTITION(gender='boy') VALUES (1,'ZhangSan',15,DATE '2008-05-15') ;
A instrução INSERT pode acionar o recurso Compare DDL Columns, que compara as colunas da cláusula SELECT de uma instrução SQL com as colunas da tabela de destino.
Esse recurso não tem suporte quando o projeto MaxCompute tem o modelo de três camadas baseado em esquema habilitado no nível do projeto, mas não no nível do locatário.
-- Compare DDL columns INSERT OVERWRITE TABLE dws_user_info_all_di PARTITION (dt='${workflow.var}') SELECT COALESCE(a.uid, b.uid) AS uid , b.gender , b.age_range , b.zodiac , a.region , a.device , a.identity , a.method , a.url , a.referer , a.time -- ...The FROM/JOIN and other clauses are omitted here. Complete them based on your actual business requirements. ;
Consultar dados
Use a instrução SELECT para realizar consultas aninhadas, agrupadas, ordenação e outras operações. Para obter mais informações, consulte Sintaxe SELECT. Exemplo de SQL:
-- (Optional) Enable full table scan at the project level. This operation requires elevated permissions. -- SETPROJECT odps.sql.allow.fullscan=true; -- Enable full table scan at the session level. This setting is effective only for the current session. SET odps.sql.allow.fullscan=true; -- Query information about all male students and sort the results by ID in ascending order. SELECT * FROM students WHERE gender='boy' ORDER BY id;
Por padrão, usuários RAM não têm permissão para consultar tabelas de produção. Para solicitar acesso, vá ao Security Center. Para obter mais informações sobre predefinições de permissão de dados do MaxCompute e controle de acesso no DataWorks, consulte Predefinições de permissão de dados do MaxCompute e controle de acesso. Para obter mais informações sobre autorização baseada em comandos do MaxCompute, consulte Autorização do MaxCompute.
Usar funções SQL
O MaxCompute oferece funções integradas e funções definidas pelo usuário (UDFs) para desenvolvimento e análise de dados. Crie e use funções SQL conforme suas necessidades de negócios. Para obter mais informações sobre funções integradas, consulte Visão geral das funções integradas. Para obter mais informações sobre UDFs, consulte Visão geral das UDFs. Os exemplos a seguir mostram como usar funções SQL.
-
Funções integradas: Pré-instaladas no MaxCompute, podem ser chamadas diretamente. Com base nos exemplos anteriores de criação de tabela, inserção e consulta de dados, use a função
dateaddpara modificar a coluna birth com uma unidade e um deslocamento específicos. Exemplo de comando:--Enable full table scan at session level. Only effective for this session. SET odps.sql.allow.fullscan=true; SELECT id, name, age, birth, dateadd(birth,1,'mm') AS birth_dateadd FROM students; Funções definidas pelo usuário (UDFs): Para usar uma UDF, escreva o código da função, faça upload dele como recurso e registre a função. Para obter mais informações, consulte Criar uma UDF do MaxCompute.
Depurar um nó MaxCompute SQL
-
Configure os parâmetros relevantes no painel Run Configuration, no lado direito da página de edição do nó.
Parâmetro
Descrição
Compute resource
Selecione o recurso de computação do MaxCompute associado.
Compute quota
Selecione a cota de computação criada para fornecer os recursos necessários (CPU e memória) aos jobs.
Se nenhuma cota estiver disponível, clique em Create Compute Quota na lista suspensa e crie uma no console do MaxCompute. Para obter mais informações, consulte Criar uma cota de computação.
Resource group
Selecione um grupo de recursos de agendamento aprovado no teste de conectividade com o recurso de computação. Para obter mais informações, consulte Grupos de recursos para agendamento.
Na caixa de diálogo de parâmetros da barra de ferramentas, selecione a fonte de dados do MaxCompute criada e clique em Run para executar a tarefa MaxCompute SQL.
Visualizar resultados
-
Os resultados aparecem diretamente em formato de planilha. Você pode operar no DataWorks, abrir os resultados em uma planilha ou copiar e colar o conteúdo em um arquivo Excel local.
NotaDevido a alterações nas informações de fuso horário da China publicadas pela Organização Internacional de Normalização (ISO), podem ocorrer discrepâncias na exibição de datas ao executar instruções SQL relacionadas no DataWorks: diferença de 5 minutos e 52 segundos para datas entre 1900 e 1928, e diferença de 9 segundos para datas anteriores a 1900.
Log de execução: Na aba
dos resultados, clique no link Logview para visualizar os logs. Para obter mais informações, consulte LogView.Ordenar resultados: Na página de resultados, clique no menu suspenso do cabeçalho da coluna desejada, selecione a ordem crescente ou decrescente na seção Sort e clique em confirmar.
Visualizar colunas BLOB: O MaxCompute aceita o tipo de dados BLOB para armazenar objetos binários, como imagens e arquivos de áudio. Nos resultados, clique duas vezes em uma célula desse tipo para visualizar o conteúdo na caixa de diálogo Current Field Value (imagens renderizam diretamente; texto aparece em modo somente leitura). Alterne entre Blob View, Text View e JSON View usando os botões na parte inferior da caixa de diálogo.
Próximas etapas
Configurar definições de agendamento: Se os nós no diretório do projeto precisarem de agendamento periódico, configure a Scheduling Policy e as propriedades relacionadas no painel Scheduling Settings, no lado direito do nó.
Implantar um nó: Para implantar uma tarefa no ambiente de produção, clique no ícone
na página. Os nós no diretório do projeto só serão agendados periodicamente após a implantação no ambiente de produção.
Apêndice 1: Ordem de execução SQL em diferentes ambientes
Ao executar instruções com palavras-chave (SET, USE) em ambientes diferentes no DataWorks para um nó MaxCompute SQL, a ordem de execução varia.
Execução no Data Studio: Todas as instruções de palavras-chave (SET, USE) no código da tarefa atual são mescladas e prefixadas às demais instruções SQL.
Execução no ambiente de agendamento: As instruções seguem a ordem em que foram escritas.
Suponha que o seguinte código esteja definido em um nó.
SET a=b;
CREATE TABLE name1(id string);
SET c=d;
CREATE TABLE name2(id string);
A ordem de execução varia conforme o ambiente:
Instrução SQL | Data Studio | Ambiente de agendamento |
Primeira instrução SQL | | |
Segunda instrução SQL | | |
Apêndice 2: Práticas de Lakehouse
Para ler e gravar em tabelas de dados DLF em tarefas MaxCompute SQL, use projetos externos do MaxCompute (External Project). Projetos externos permitem acesso em tempo real a metadados e dados por meio do mapeamento de catálogos DLF. Eles delegam o gerenciamento de permissões ao DLF e oferecem suporte a acesso a metadados e operações de leitura/gravação em dados gerenciados pelo DLF armazenados no OSS. Para obter mais informações, consulte Projetos externos do MaxCompute.
Referências
Para saber mais sobre exemplos de tarefas MaxCompute SQL, visite os links a seguir: