Pessoal, bom dia.
Estou montando um projeto onde basicamente vou mostrar todos os indicadores relacionados a área de vendas da empresa.
Hoje, toda vez que vou gerar algum qvd com as informações, faço a leitura de todo o banco (a base não é absurdamente grande, então não leva tanto tempo).
O meu problema é que após virar um mês, as pessoas fazem alterações referentes ao mês anterior e quando atualizo os dados, o resultado de um mês já fechado é alterado.
Li alguns artigos sobre carga incremental, mas ainda não consegui pensar em uma forma de carregar apenas as informações do mês corrente, sem que essas informações sejam atualizadas quando o mês virar.
Alguém já passou por situação semelhante ?
Abs
Caue.
Olha... eu fiz uma carga incremental da seguinte forma:
LET V_DATA_INI = '23/03/2013';
LET V_DATA_FIN = '23/04/2015'; //DayEnd( Today() );
DO WHILE V_DATA_INI <= V_DATA_FIN
LET V_ANO = Date( V_DATA_INI, 'YYYY' );
LET V_MES = Date( V_DATA_INI, 'MM' );
[TRANSACAO]:
LOAD CANAL,
"NR_TRANSACAO",
"NR_TRANSACAO" AS ID_TIPO_TRANSACAO,
"DT_TRANSACAO",
Year( DT_TRANSACAO )&Num( Month( DT_TRANSACAO ),'00')&Num( Day( DT_TRANSACAO ), '00' ) as ID_CALENDARIO,
"CE_NR_TERMINAL",
"CP_CE_CD_POSTOORIGEM",
"CP_CE_CD_POSTOORIGEM" AS ID_POSTO,
"CP_CE_CD_AGENCIAORIGEM",
"CP_CE_CD_AGENCIAORIGEM" AS ID_AGENCIA,
"TOTAL_TRANSACOES",
"VL_DINHEIRO",
"VL_CHEQUEMAIOR",
"VL_CHEQUEMENOR";
SQL SELECT *
FROM "OWN_BI_AUT_PD"."TB_CONSOLIDADO_TRANSACAO_BI"
WHERE TO_CHAR(DT_TRANSACAO, 'YYYY') = $(V_ANO)
AND TO_CHAR(DT_TRANSACAO, 'MM') = $(V_MES);
LET V_ARQ = V_ANO&V_MES;
STORE [TRANSACAO] into tabelas/TBE_TRANSACAO_$(V_ARQ).qvd;
DROP Table [TRANSACAO];
LET V_DATA_INI = AddMonths( V_DATA_INI, 1 );
LOOP;
Com esse script eu fiz a carga total.. depois é só alterar as variáveis de "início e fim" pra serem apenas do mês corrente.
Na hora do LOAD você lê os arquivos da seguinte forma:
LOAD TRANSACAO.CANAL,
TRANSACAO.NR_TRANSACAO,
ID_TIPO_TRANSACAO,
TRANSACAO.DT_TRANSACAO,
ID_CALENDARIO,
TRANSACAO.CE_NR_TERMINAL,
TRANSACAO.CP_CE_CD_POSTOORIGEM,
ID_POSTO,
TRANSACAO.CP_CE_CD_AGENCIAORIGEM,
ID_AGENCIA,
TRANSACAO.TOTAL_TRANSACOES,
TRANSACAO.VL_DINHEIRO,
TRANSACAO.VL_CHEQUEMAIOR,
TRANSACAO.VL_CHEQUEMENOR,
if(WildMatch5(TRANSACAO.NR_TRANSACAO, 1, 2, 3, 4, 6, 8, 10, 12, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 39), 0, TRANSACAO.VL_DINHEIRO + TRANSACAO.VL_CHEQUEMAIOR + TRANSACAO.VL_CHEQUEMENOR) AS TRANSACAO.VALOR
FROM
(qvd);
Como ele está armazenando quebrado por mês e com a data no nome do arquivo, o "TBE_TRANSACAO*.qvd" na hora do LOAD vai carregar todos os arquivos.
Olha... eu fiz uma carga incremental da seguinte forma:
LET V_DATA_INI = '23/03/2013';
LET V_DATA_FIN = '23/04/2015'; //DayEnd( Today() );
DO WHILE V_DATA_INI <= V_DATA_FIN
LET V_ANO = Date( V_DATA_INI, 'YYYY' );
LET V_MES = Date( V_DATA_INI, 'MM' );
[TRANSACAO]:
LOAD CANAL,
"NR_TRANSACAO",
"NR_TRANSACAO" AS ID_TIPO_TRANSACAO,
"DT_TRANSACAO",
Year( DT_TRANSACAO )&Num( Month( DT_TRANSACAO ),'00')&Num( Day( DT_TRANSACAO ), '00' ) as ID_CALENDARIO,
"CE_NR_TERMINAL",
"CP_CE_CD_POSTOORIGEM",
"CP_CE_CD_POSTOORIGEM" AS ID_POSTO,
"CP_CE_CD_AGENCIAORIGEM",
"CP_CE_CD_AGENCIAORIGEM" AS ID_AGENCIA,
"TOTAL_TRANSACOES",
"VL_DINHEIRO",
"VL_CHEQUEMAIOR",
"VL_CHEQUEMENOR";
SQL SELECT *
FROM "OWN_BI_AUT_PD"."TB_CONSOLIDADO_TRANSACAO_BI"
WHERE TO_CHAR(DT_TRANSACAO, 'YYYY') = $(V_ANO)
AND TO_CHAR(DT_TRANSACAO, 'MM') = $(V_MES);
LET V_ARQ = V_ANO&V_MES;
STORE [TRANSACAO] into tabelas/TBE_TRANSACAO_$(V_ARQ).qvd;
DROP Table [TRANSACAO];
LET V_DATA_INI = AddMonths( V_DATA_INI, 1 );
LOOP;
Com esse script eu fiz a carga total.. depois é só alterar as variáveis de "início e fim" pra serem apenas do mês corrente.
Na hora do LOAD você lê os arquivos da seguinte forma:
LOAD TRANSACAO.CANAL,
TRANSACAO.NR_TRANSACAO,
ID_TIPO_TRANSACAO,
TRANSACAO.DT_TRANSACAO,
ID_CALENDARIO,
TRANSACAO.CE_NR_TERMINAL,
TRANSACAO.CP_CE_CD_POSTOORIGEM,
ID_POSTO,
TRANSACAO.CP_CE_CD_AGENCIAORIGEM,
ID_AGENCIA,
TRANSACAO.TOTAL_TRANSACOES,
TRANSACAO.VL_DINHEIRO,
TRANSACAO.VL_CHEQUEMAIOR,
TRANSACAO.VL_CHEQUEMENOR,
if(WildMatch5(TRANSACAO.NR_TRANSACAO, 1, 2, 3, 4, 6, 8, 10, 12, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 39), 0, TRANSACAO.VL_DINHEIRO + TRANSACAO.VL_CHEQUEMAIOR + TRANSACAO.VL_CHEQUEMENOR) AS TRANSACAO.VALOR
FROM
(qvd);
Como ele está armazenando quebrado por mês e com a data no nome do arquivo, o "TBE_TRANSACAO*.qvd" na hora do LOAD vai carregar todos os arquivos.
Caue, é interessante você ler o capítulo que fala de carga incremental no manual do QlikView. Neste capítulo ele passa diversos exemplos de utilização.
Procure no manual por: Carga Incremental
Obrigado Lucas...
Segui esse raciocínio e deu certo por aqui...
Abs
Caue.