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