Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.
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
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.
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
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;
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