Skip to main content
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.