Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia,
Estou com uma dificuldade em um processo que preciso,
Anexei um qvw com um exemplo da minha massa de dados, a questão e o seguinte, preciso de uma regra no script que enumere (classifique) as faturas, trazendo 1 pra 1ª Fatura, 2...3... e assim por diante, usando como regra a data de inicio de vigência.
Fiz uma massa teste pra vocês terem noção de como e a nossa base, nosso sistema traz a competência de geração (comp) como 201406 (06/2014), 201405 (05/2014)
acho que sera uma coisa simples mas não estou conseguindo pensar em como fazer esse calculo no script e criar esse campo
não sei se fui claro na explicação, se alguém puder ajudar.
Olá, não entendi a necessidade dessa sequencia, mas você pode fazer assim:
Dados_TMP:
Load * inline
[
Cliente, Fatura, DtIniVig, Comp
1001, 010001, 01/04/2014, 201404
1001, 010002, 01/04/2014, 201405
1001, 010003, 01/04/2014, 201406
1002, 011001, 01/06/2014, 201406
1003, 020001, 01/05/2014, 201405
1003, 020002, 01/05/2014, 201406
1004, 030003, 01/06/2014, 201406
]
;
DADOS:
LOAD
AutoNumber(DtIniVig&'|'&Fatura, 'NumeroFatura') AS NumeroSeqFatura,
*
Resident Dados_TMP
Order By DtIniVig, Fatura;
DROP Table Dados_TMP;
Qlikfique-se
Tonial.
a necessidade e a seguinte, vou fazer um calculo de comissão, nos contratos iniciados no dia 01 do mês eu posso pegar a 1ª mensalidade e aplicar a % de comissão, nos contratos iniciados após o dia 01 eu tenho que pegar a 2ª mensalidade, pois a 1ª não esta com o valor cheio.
Então eu preciso de um campo que me informe se esta fatura é a 1ª ou a 2ª para usa-la no set analysis com a regra se o contrato inicia dia 01 ou não.
então esse numero sequencial tem que ser por cliente.
Dê uma olhada na modificação que fiz no seu Load Inline:
Load *,
if (Cliente=peek(Cliente), Peek(Ordem)+1, 1) as Ordem
inline
[
Cliente, Fatura, DtIniVig, Comp
1001, 010001, 01/04/2014, 201404
1001, 010002, 01/04/2014, 201405
1001, 010003, 01/04/2014, 201406
1002, 011001, 01/06/2014, 201406
1003, 020001, 01/05/2014, 201405
1003, 020002, 01/05/2014, 201406
1004, 030003, 01/06/2014, 201406
];
Eduardo
Se você necessitar que a numeração seja reiniciada a cada Comp, é só acrescentar no if, ficando:
if (Cliente=peek(Cliente) and Comp=peek(Comp), Peek(Ordem)+1, 1) as Ordem
Eduardo
Grande Ornelas,
Tem que ser no script?
Uma função rank simples resolve.
Veja anexo
Uma solução usando script
Load
*,
if(
Exists(Cliente),
rangesum(Peek('X'),1),
1
) as X
inline
[
Cliente, Fatura, DtIniVig, Comp
1001, 010001, 01/04/2014, 201404
1001, 010002, 01/04/2014, 201405
1001, 010003, 01/04/2014, 201406
1002, 011001, 01/06/2014, 201406
1003, 020001, 01/05/2014, 201405
1003, 020002, 01/05/2014, 201406
1004, 030003, 01/06/2014, 201406
];
Clever Anjos preciso desde valor em scrip pois na dimensão do gráfico preciso pegar apenas as 2ª mensalidades dos contratos iniciados após o dia 01.
Um "problema" e que na minha App não carrego os dados inline, são alguns Qvd's que são ligados (Ligações e Join's) e me dão uma base, essa que mandei foi apenas uma amostra das informações que tenho dentro desta app, pois seria inviável coloca-la inteira aqui (muitos dados)
tentei ajustas os exemplos passados pelo Clever e pelo Eduardo para o script que tenho, porém não da certo.
Leandro,
Pode ser que o problema com a expressão que te passei esteja relacionado com a ordenação dos dados.Para funcionar, você deve tê-los na ordem de Cliente e data (ou Comp). Se você quiser a numeração reiniciando a cada Competência, tem que usar a segunda expressão que eu passei.
Eduardo
Leandro,
Ao final de todas as cargas, faça um LOAD RESIDENT ORDER BY Cliente, Fatura calculando esse flag.
Deve funcionar.