Transformações elegantes de dados complexos com DataWeave
Simbora falar de uma baita linguagem de programação funcional, simples, elegante, poderosa, segura e performática? Então, bora falar de DataWeave!!!
DataWeave é a linguagem de programação funcional da MuleSoft para transformação de dados.
É também uma linguagem de expressão que o Mule Runtime utiliza para configurar componentes e conectores.
No DataWeave você consegue contruir soluções simples para casos de usos comuns para desenvolvedores de integração.
- Leitura e conversão de dados de um formato para outro formato.
- Mapeamento dos dados.
- Filtragem e limpeza.
- Enriquecemento dos dados.
Os usos do DataWeave podem ser vários, por exemplo:
- Um script DataWeave pode receber um arquivo CSV como entrada e transformar os dados em um array de objetos complexos JSON.
- Receber uma entrada XML e escrever os dados de saída para um formato simples de arquivo simples.
O DataWeave habilita os desenvolvedores a focarem na lógica de transformação ao invés de ficar pensando sobre detalhes como leitura, conversão e escrita dos dados de maneira performática.
DataWeave te habilita a ter os benefícios da programação funcional, como:
- Funções puras
- Funções de primeira classe
- Funções de ordem superior
- Composição de funções
- Variáveis imutáveis
- Assinaturas de funções
- Códigos fáceis de manter devido a sua concisão e clareza
- Uso de Lazy Evaluation (call-by-need)
- Expressões Lambda
O DataWeave tem alguns conceitos comuns das linguagens de programação:
- Todos os scripts podem ter um header com diretivas como o formato de saída da transformação.
- Todos os scripts tem um body com a expressão para gerar um resultado.
DataWeave suporta estruturas de dados simples, complexas e de tipos compostos.
Em muitas das suas transformações DataWeave você usará seletores de dados, operadores de dados e funções, com arrays e objects para performar mapeamentos e transformações.
É possível também extender o conjunto de funções DataWeave com módulos pré-construídos que estarão disponíveis pra uso.
Executando DataWeave
Para executar scripts DataWeave existem 4 possibilidades:
- Você pode acessar o DataWeave Playground aqui de qualquer browser e realizar suas transformações rapidamente!
- Você pode instalar a extensão DataWeave no VSCode seguindo este tutorial e desenvolver, depurar e testar suas transformações com o poder do VScode!
- Você pode
- Você pode baixar o DataWeave CLI aqui no repositório no Github para Linux, macOS e Windows e executar os scripts via terminal.
Entendendo a Estrutura
Todo programa é composto de três partes: Entrada, Processamento e Saída.
No DataWeave (Você visualiza isso melhor no DataWeave Playground) você verá essa separação com os nomes de: Input, Script, Output.
No Input você pode incluir seus dados de entrada, como alterar o payload, criar variáveis, com formatos diferentes como CSV, XML, JSON, TEXT e muito mais.
No Script você pode editar o código de processamento dos dados, mapeando, filtrando, etc.
No Output você pode visualizar o resultado do processamento dos dados no formato que você definiu no script.
Script DataWeave
Um script DataWeave consiste de um header e um body, que são separados por 3 traços (---).
O header tem as diretivas da linguagem como import, output, var, fun, type, etc.
O body tem a expressão que irá produzir o resultado, como um mapeamento ou uma transformação.
Hello World do DataWeave
O Hello World no DataWeave é transformar o input do payload JSON recebido:
{"message": "Hello world!"}
Com o script abaixo:
%dw 2.0
output application/json
---
payload.message
Resultando em:
"Hello world!"