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