Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal, boa tarde!
Estou querendo pegar o último mês de faturamento cadastrado na base que seja ANTERIOR a uma data de contratação. No script coloquei o comando abaixo, mas não sei “quem” executa esta query, se o QLIK ou se pelo ODBC do Oracle roda em outro lugar, pois coloquei comandos PLSQL.
left join (PRO_PROCESSOS)
SELECT A.ID_PESSOA,
P.ID_PROCESSO,
MAX( TO_NUMBER(TO_CHAR(A.DT_FATURAMENTO, 'YYYYMM')) ) AS MAX_ID_ANO_MES_FATURAMENTO
FROM ANP.ANP_FATURAMENTOS A,
PRO.PRO_PROCESSOS P
WHERE A.ID_PESSOA = P.ID_PESSOA_EMPRESA AND
TO_NUMBER(TO_CHAR(A.DT_FATURAMENTO, 'YYYYMM')) < TO_NUMBER(TO_CHAR(NVL(P.DT_CONTRATO, P.DT_ENTRADA) , 'YYYYMM'))
GROUP BY A.ID_PESSOA, P.ID_PROCESSO;
Os campos ID_PESSOA e ID_PROCESSO existem na tabela que está sendo montada.
Porém este comando trouxe para apenas algumas operações o campo “MAX_ID_ANO_MES_FATURAMENTO”, sendo que deveria ter trazido para quase todas as operações. Como te falei, uma empresa pode ter mais de uma operação..
EX: Operação 1 – 200910 (contratação)
Operação2 – 201305 (contratação)
Etc....
Aí na aplicação tentei buscar diretamente sem este campo MAX_ID_AO_MES_FATURAMENTO, para depois tentar montar o esquema dos últimos 12 faturamentos, mas na hora de buscar o MAX já não consigo, pois com “variável” funciona, mas comparando campo com campo da tabela está estranho:
max( {< ANO_MES_FATURAMENTO = {'<$(=(ANO_MES_CONTRATO))'} >} ANO_MES_FATURAMENTO )
Aí tentei buscar direto a ROB pelo comando abaixo, mas não “respeita” as dimensões ID_PESSOA e ID_PROCESSO, trouxe o mesmo faturamento para qualquer data de contratação, desta forma também estaria errado, pois o último mês cadastrado não é obrigatoriamente o mês posterior a contratação (ANO_MES_ONTRATO):
Sum({$<ANO_MES_FATURAMENTO={">=$(=addmonths(monthstart(max(ANO_MES_CONTRATO)),-11)) <=$(=(monthend(max(ANO_MES_CONTRATO))))"} >} VL_FATURAMENTO)
Existe uma tabela dimensão separada chamada DIM_FATURAMENTOS, com os campos ID_PESSOA (chave), ANO_MES_FATURAMENTO e VL_FATURAMENTO.
// Faturamentos da empresa
DIM_FATURAMENTO:
LOAD ID_PESSOA,
Num#(Date( DT_FATURAMENTO, 'YYYYMM')) AS ANO_MES_FATURAMENTO,
VL_FATURAMENTO
FROM [lib://QVD/ANP_FATURAMENTOS.QVD](qvd)
WHERE Exists(ID_PESSOA);
Como fazer isto pessoal?
Desde já agradeço!
Já conseguiu resolver?
Oi Januario,
Sobre a consulta SQL, ela é executada pelo Oracle, mas o resultado devolvido pelo Oracle é incluido via join na tabela em memória PRO_PROCESSOS.
Quanto ao seu problema, fiquei confuso. Não vou conseguir ajudar.
Não consegui entender sua dúvida, pode postar uma app?
Esse set analysis abaixo não funciona e não é avaliado a cada linha. Um Set analysis é avaliado apenas uma vez antes da agregação do objeto.
max( {< ANO_MES_FATURAMENTO = {'<$(=(ANO_MES_CONTRATO))'} >} ANO_MES_FATURAMENTO )
Caro Yuri, boa tarde!
Posso passar o .QVF para dares uma olhada?
Como falei, existe um campo ANO_MES_CONTRATO, e a partir deste quero buscar o último ANO_MES_FATURAMENTO cadastrado na base, que pode ser logo o mês anterior a contratação, ou alguns meses atrás.
Exemplo:
ANO_MES_CONTRATO : 201608 (agosto de 2016)
o ANO_MES_FATURAMENTO poderá ser o 201607(julho de 2016) ou algum mês anterior como 201606, 201605.... 201601. Aí ao encontrar este último (MAX) mês de faturamento cadastrado, vou pegar os últimos 12(doze) meses a partir deste e somar o campo VL_FATURAMENTO para obter a ROB (Receita Operacional Bruta).
Não sei se o mais fácil é fazer isto no script de carregamento, ou se pela aplicação Qlik Sense.
Desde já agradeço.
Caro Clever, boa tarde!
Posso passar o .QVF para dares uma olhada?
Como falei, existe um campo ANO_MES_CONTRATO, e a partir deste quero buscar o último ANO_MES_FATURAMENTO cadastrado na base, que pode ser logo o mês anterior a contratação, ou alguns meses atrás.
Exemplo:
ANO_MES_CONTRATO : 201608 (agosto de 2016)
o ANO_MES_FATURAMENTO poderá ser o 201607(julho de 2016) ou algum mês anterior como 201606, 201605.... 201601. Aí ao encontrar este último (MAX) mês de faturamento cadastrado, vou pegar os últimos 12(doze) meses a partir deste e somar o campo VL_FATURAMENTO para obter a ROB (Receita Operacional Bruta).
Não sei se o mais fácil é fazer isto no script de carregamento, ou se pela aplicação Qlik Sense.
Desde já agradeço.
Poste o qvf, se possível
Caro Clever, segue a aplicação, deixei os dados de um cliente, segue anexo também um excel com os faturamentos existentes.
Grato!
Januario
Para anexar: