[Kettle] - Primeira/Última Data do Ano/Mês informado, com tratamento de Exceção

Trata-se de uma pequena rotina para extrair do Ano e Mês informados o primeiro e último dia deste mês, utilizando um componente javascript. Além disso estou utilizando o tratamento de erros que gera um alerta, escreve a informação no log e aborta a transformação.

Segue abaixo detalhes da Transformação:



- Inicialmente eu capturo o Ano e Mês das variáveis de ambiente ${nuAno} e ${nuMes}, que poderiam ser por exemplo 2011 e 08 respectivamente:


- Após isso utilizo o componente javascript para fazer efetivamente o trabalho:


- Para o primeiro dia basta montar a data utilizando o dia primeiro e concatenando com mês e ano. Assim: var dtInicial = str2date("01/" + mes + "/" + ano,"dd/MM/yyyy");
- Para o último aí há várias formas. A que usei foi com a função DateAdd() do javascript, onde somo 1 mês à dtInicial, recém definida e subtraio depois 1 dia. Desta forma tenho o último dia do mês: var dtFinal = dateAdd(dateAdd(dtInicial, "m", 1),"d",-1);
- Montei ainda os blocos if/else para avaliar os campos informados e gerar um erro caso do tipo ERROR_TRANSFORMATION, caso as informações esteja zeradas ou não tenham sido informadas. Era possível também assumir o ano e mês atuais neste caso, porém a idéia é demonstrar o tratamento de exceções;
- Utilizo ainda a função Alert() para exibir uma aviso visual em tela e a função writeToLog() que serve para adicionar ao log padrão do Kettle uma mensagem personalizada;

- No final publico as variáveis ${DTINICIAL} e ${DTFINAL} para uso nas transformações e jobs subsequentes:


Resumo de Recursos Utilizados:
- javascript;
- Tratamento de Erros (ERROR_TRANSFORMATION);
- Trabalho com funções de datas;
- Funções especiais do Kettle (writeToLog);

Abaixo segue o script em forma textual:


//Gera a Primeira e Ultima data do Ano/Mes informado.
if (ano == 0 || ano == null) {
      Alert("O Ano não foi informado!");
      writeToLog("e","ATENÇÃO: É preciso informar o Ano a ser processado ao iniciar a Carga!");
      trans_Status = ERROR_TRANSFORMATION;
else if (mes == 0 || mes == null) {
      Alert("O Mês não foi informado!");
      writeToLog("e","ATENÇÃO: É preciso informar o Mês a ser processado ao iniciar a Carga!");
      trans_Status = ERROR_TRANSFORMATION;
}else {
      var dtInicial = str2date("01/" + mes + "/" + ano,"dd/MM/yyyy");
      var dtFinal = dateAdd(dateAdd(dtInicial, "m", 1),"d",-1);
}


A idéia com este post foi demonstrar algumas funcionalidades do Kettle, apenas mesmo com cunho didático, porém de algo que muitas vezes precisamos na prática.
Postar um comentário

Postagens mais visitadas deste blog

[eXo] - Remover janela de solicitação de Registro

[Kettle] - Ajuste de problema com horário de verão

Pegando informações de Sessão no Oracle e equivalente no MSSQL