Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Posting on Qlik Community is temporarily paused for some users. Thank you for patience and we'll update you soon!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Dúvida carga incremental

Pessoal, estou com um probleminha na minha carga incremental.
O que eu quero fazer: tenho uma tabela  de quantidade de funcionários.
Fiz a carga total, até o dia de hoje, porém como as informações dos meses anteriores ao atual não modificam mais, eu gostaria de ler

estas informações do QVD que criei, e as informações do mes atual (abril,no caso), gostaria de ler na minha base.
Fiz um script conforme abaixo, porém quando eu realizo a carga os valores de abril, vão duplicadando a cada nova carga minha

O que estou errando? Alguém pode me dar uma dica?

//************* W_DATA_MES_ANTERIOR => data do mês anterior ao mês atual.

QUANTIDADE_FUNCIONARIO:

//******* Aqui a idéia é ler do QVD todos os registros até o mês anterior. No caso até MARCO/2012.
LOAD  DATA,
          CD_SETOR,
          ID_TURNO,
         QTDE_FUNC
FROM [$(QVDPath)\QUANTIDADE_FUNCIONARIO.qvd] (qvd)
WHERE   DATA <= '$(W_DATA_MES_ANTERIOR)';      

CONCATENATE

//************* Aqui eu gostaria de ler da base, mas somente o que for maior que o mês anterior, ou seja os dados atuais de ABRIL/2012.
SELECT
       '01/'||to_char(freq.dt_frequencia,'MM/YYYY')  AS  DATA,
        f.cd_setor                                   AS  CD_SETOR,
        f.id_turno                                   as  ID_TURNO,
        COUNT(DISTINCT F.CD_FUNCIONARIO)             AS  QTDE_FUNC  
   FROM
        FUNCIONARIO F,
        frequencia freq
  WHERE
        to_char(freq.dt_frequencia,'YYYYMM') > '$(W_DATA_MES_ANTERIOR)'  and
        TO_CHAR(F.DT_ADMISSAO,'YYYYMM') <=  to_char(freq.dt_frequencia,'YYYYMM') and
        (F.DT_RESCISAO IS NULL OR
        to_char(F.DT_RESCISAO,'YYYYMM') >  to_char(freq.dt_frequencia,'YYYYMM')) and
        f.cd_centro_custo <> 746      
group by
       '01/'||to_char(freq.dt_frequencia,'MM/YYYY'),
       f.cd_setor, 
       f.id_turno;    
Store QUANTIDADE_FUNCIONARIO into [$(QVDPath)\QUANTIDADE_FUNCIONARIO.qvd] (qvd);
DROP Table QUANTIDADE_FUNCIONARIO;

Desde já agradeço,

Abs,

Juliana.

1 Solution

Accepted Solutions
erichshiino
Partner - Master
Partner - Master

Juliana,

Acredito que seu problema seja devido aos diferentes formatos de datas que está usando.

Nesta primeira passagem( WHERE   DATA <= '$(W_DATA_MES_ANTERIOR)' ) DATA está no formato DD/MM/YYYY

Nesta outra passagem ( to_char(freq.dt_frequencia,'YYYYMM') > '$(W_DATA_MES_ANTERIOR)' ) a comparação é feita com contra o formato YYYYMM

Não sei como formatou o  '$(W_DATA_MES_ANTERIOR)', mas só uma delas vai dar certo.

Sugiro a criação de uma segunda variável ( W_DATA_MES_ANTERIOR2 ) com um segundo formato (e mesma data) para que consiga efetuara as comparações.

Se você habilitar a geração de logs (configurações -> Propriedades do Documento -> Aba geral -> Gerar log), poderá ver em texto ( com as variáveis) já interpretadas, a query que está sendo passada ao banco e poderá testar melhor seus resultados.

Espero que ajude,

Abs,

Erich

View solution in original post

4 Replies
aderlanrm
Partner - Specialist
Partner - Specialist

Olá Juliana, tudo bem?

Respondi uma dúvida sobre carga incremental a algum tempo, dá uma olha, principalmente no arquivo anexo, vai lhe ajudar com certeza.

http://community.qlik.com/message/191503#191503

Abraço.

Aderlan Rodrigues
Analista, Arquiteto de Dadose e Desenvolvedor
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
erichshiino
Partner - Master
Partner - Master

Juliana,

Acredito que seu problema seja devido aos diferentes formatos de datas que está usando.

Nesta primeira passagem( WHERE   DATA <= '$(W_DATA_MES_ANTERIOR)' ) DATA está no formato DD/MM/YYYY

Nesta outra passagem ( to_char(freq.dt_frequencia,'YYYYMM') > '$(W_DATA_MES_ANTERIOR)' ) a comparação é feita com contra o formato YYYYMM

Não sei como formatou o  '$(W_DATA_MES_ANTERIOR)', mas só uma delas vai dar certo.

Sugiro a criação de uma segunda variável ( W_DATA_MES_ANTERIOR2 ) com um segundo formato (e mesma data) para que consiga efetuara as comparações.

Se você habilitar a geração de logs (configurações -> Propriedades do Documento -> Aba geral -> Gerar log), poderá ver em texto ( com as variáveis) já interpretadas, a query que está sendo passada ao banco e poderá testar melhor seus resultados.

Espero que ajude,

Abs,

Erich

Not applicable
Author

Olá Erich,
Era isso mesmo, criei uma nova váriavel conforme você me sugeriu e funcionou corretamente .

Muito obrigada pela dica.


Ficou assim o script:

// variavel utilizada para ler o QVD de QTDE_FUNCIONARIOS
W_DATA_COMPLETA_ANTERIOR   = Monthend(now(),-1)
W_DATA_MES_ANO_ANTERIOR    = Date(Monthend(now(),-1),'YYYYMM')


QUANTIDADE_FUNCIONARIO:
LOAD DATA,
     CD_SETOR,
     ID_TURNO,
     QTDE_FUNC
FROM [$(QVDPath)\QUANTIDADE_FUNCIONARIO.qvd] (qvd)
WHERE DATA <= '$(W_DATA_COMPLETA_ANTERIOR)';

CONCATENATE

SELECT
       '01/'||to_char(freq.dt_frequencia,'MM/YYYY')  AS  DATA,
        f.cd_setor                                   AS  CD_SETOR,
        f.id_turno                                   as  ID_TURNO,
        COUNT(DISTINCT F.CD_FUNCIONARIO)             AS  QTDE_FUNC  
   FROM
        FUNCIONARIO F,
        frequencia freq
  WHERE
        to_char(freq.dt_frequencia,'YYYYMM') > '$(W_DATA_MES_ANO_ANTERIOR)'  and
        TO_CHAR(F.DT_ADMISSAO,'YYYYMM') <=  to_char(freq.dt_frequencia,'YYYYMM') and
        (F.DT_RESCISAO IS NULL OR
        to_char(F.DT_RESCISAO,'YYYYMM') >  to_char(freq.dt_frequencia,'YYYYMM')) and
        f.cd_centro_custo <> 746      
group by
       '01/'||to_char(freq.dt_frequencia,'MM/YYYY'),
       f.cd_setor, 
       f.id_turno;    
Store QUANTIDADE_FUNCIONARIO into [$(QVDPath)\QUANTIDADE_FUNCIONARIO.qvd] (qvd);
DROP Table QUANTIDADE_FUNCIONARIO;

Not applicable
Author

Olá Aderlan,
Obrigada pela dica também, com certeza precisarei em algum momento utilizar algo parecido com o processo que você mencionou.

Abraço,

Juliana