[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.

Comentários

Postagens mais visitadas deste blog

[Openfire] - Ajuste de horário no cliente Spark

Verificar uso de disco em partição ASM do Oracle 11g no Linux

[Kettle] - Ajuste de Memória de Utilização