Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
marcelviegas
Creator II
Creator II

Meses anteriores

Boa tarde pessoa,

Preciso de uma ajuda bem simples, tenho uma tabela (produtoMes): em cima desta tabela no meu scrip eu gostaria de montar uma outra tabela que computasse a soma de todos os meses anteriores exemplo abaixo(soma_M_anterior) :

  produtoMes:

  mes       | produto       | valor

  01/2013  | ventilador   | 1000

  02/2013  | lampada     | 1000

  03/2013  | vassoura    | 1000

  04/2013  | saco de lixo| 1000

  05/2013  | caneta        | 1000

soma_M_anterior:

    mes  |valor

01/2013|1000

02/2013|2000

03/2013|3000

04/2013|4000

05/2013|5000

Obrigado Pessoal

Labels (1)
1 Solution

Accepted Solutions
nicolett_yuri

Se você fizer da forma que te passei não é para dar erro, só se deu algum problema quando copiei o código.

Poderia postar seu código aqui?

Respondendo a pergunta: Não precisa criar essas colunas antes, pois o Peek() consegue reutilizar o valor dessa coluna que esta sendo criada.

View solution in original post

7 Replies
nicolett_yuri

Marcel, você pode fazer isso de duas formas

1) Fazer esse cálculo no script através da função Peek()

2) Criar um de/para de mês, da seguinte forma:

DE PARA

Jan/2014, Jan/2014

Fev/2014. Jan/2014

Fev/2014, Fev/2014

Mar/2014, Jan/2014

Mar/2014, Fev/2014

Mar/2014, Mar/2014

Dai basta você ligar a coluna PARA com a sua coluna de MêsAno da tabela fato.

nicolett_yuri

Segue um exemplo de acumulado no script através do Peek

Peek:

LOAD * INLINE [

MES, VALOR, PRODUTO

1, 10, A

1, 20, A

1, 30, A

2, 10, A

2, 20, A

3, 10, A

4, 10, A

5, 10, A

6, 10, A

6, 20, A

7, 10, A

7, 20, A

8, 10, A

9, 10, A

9, 20, A

9, 30, A

10, 10, A

1, 11, B

1, 21, B

1, 31, B

2, 12, B

2, 22, B

3, 12, B

4, 12, B

5, 13, B

6, 13, B

6, 23, B

7, 13, B

7, 24, B

8, 14, B

9, 14, B

9, 24, B

9, 34, B

10, 14, B

1, 311, C

1, 321, C

1, 231, C

2, 212, C

2, 122, C

3, 112, C

4, 212, C

5, 213, C

6, 313, C

6, 323, C

7, 213, C

7, 224, C

8, 114, C

9, 114, C

9, 224, C

9, 234, C

10, 214, C

];

Acumulado:

LOAD

  MES,

  VALOR,

  if(

  MES <> Previous(MES),

  NumSum(VALOR),

  NumSum(Peek('ACUMULADO_POR_MES', -1)) + NumSum(VALOR)

  ) as ACUMULADO_POR_MES,

  

  RangeSum(Peek('ACUMULADO_TOTAL', -1)) + RangeSum(VALOR) as ACUMULADO_TOTAL

RESIDENT Peek

ORDER BY

  MES asc;

EduardoAlexandredeFrancisco

Já tentou a opção de acumular dentro do grafico?

Tente carregar seus dados e depois marque a opção Acumulado. acrediro que irá te ajudar

marcelviegas
Creator II
Creator II
Author

tentei substituir os campos igual o da tabela, porem ele diz que o campo  ACUMULADO_POR_MES' e 'ACUMULADO_TOTAL' não existe, sera que crio essa campo na tabela anterior?

seria bom se existisse uma funão tipo peek(-*), para somar todas anteriores.


marcelviegas
Creator II
Creator II
Author

Eduardo, não pode ser assim pois eu uso outros campos no grafico que se eu colocar a função acumulado ele da problema nos calculos, teria que ser diretamente no script.

nicolett_yuri

Se você fizer da forma que te passei não é para dar erro, só se deu algum problema quando copiei o código.

Poderia postar seu código aqui?

Respondendo a pergunta: Não precisa criar essas colunas antes, pois o Peek() consegue reutilizar o valor dessa coluna que esta sendo criada.

marcelviegas
Creator II
Creator II
Author

cria:

LOAD LeitoCriacao.ID_LEITO_CRIACAO,

     LeitoCriacao.ID_LEITO,

     LeitoCriacao.DT_CRIACAO,

     MonthName(LeitoCriacao.DT_CRIACAO) as dataCriacao,

     Year(LeitoCriacao.DT_CRIACAO)&Num( Month(LeitoCriacao.DT_CRIACAO),'00')&Num( Day(LeitoCriacao.DT_CRIACAO), '00' ) as ID_CALENDARIO

   //  Year(LeitoCriacao.DT_CRIACAO)&Num( Month(LeitoCriacao.DT_CRIACAO),'00') as dataCriacao

FROM

$(dirQVD)\INTERNACAO\qvd_e\tbe_leito_criacao.qvd

(qvd);

criacao:

load

dataCriacao as [Mes Ano], COUNT(LeitoCriacao.ID_LEITO_CRIACAO) AS CONTLEITOCRIACAO

Resident cria

group by dataCriacao;

leitoNovo:

load count(LeitoCriacao.ID_LEITO) as leitoSub

Resident cria;

drop table cria;

Acumulado:

LOAD

  dataCriacao as [Mes Ano],

  CONTLEITOCRIACAO,

  if(

  dataCriacao <> Previous(dataCriacao),

  NumSum(CONTLEITOCRIACAO),

  NumSum(Peek('ACUMULADO_POR_MES', -1)) + NumSum(CONTLEITOCRIACAO)

  ) as ACUMULADO_POR_MES,

 

  RangeSum(Peek('ACUMULADO_TOTAL', -1)) + RangeSum(CONTLEITOCRIACAO) as ACUMULADO_TOTAL

RESIDENT criacao

ORDER BY

  dataCriacao asc;

o arquivo qvd todo é muito grande, então estou colando ai...

vlw.