Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
cauecandeloro
New Contributor III

Carga de Dados

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.

1 Solution

Accepted Solutions
Not applicable

Re: Carga de Dados

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.

3 Replies
Not applicable

Re: Carga de Dados

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.

Re: Carga de Dados

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

cauecandeloro
New Contributor III

Re: Carga de Dados

Obrigado Lucas...
Segui esse raciocínio e deu certo por aqui...

Abs
Caue.