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

Announcements
Talend Cloud AWS EU Scheduled Outage: Starting Tues 26 May 21:00 CEST with expected completion Wed 27 May 01:00 CEST
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