Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia senhores
Estou montando um projeto com indicadores calculados de varias fontes de dados.
Para cada indicador estou usando uma expressão com set analisys específico, por isto eu armazenei todas elas em uma tabela e utilizei um script para carregar elas para memoria em variáveis, assim:
FOR x=0 TO NoOfRows('Expressões')-1
/* Resgatando nome e valor da variável da planilha */
LET vNomeVariavel = Peek('Variável', $(x), 'Expressões');
LET vValorVariavel = Peek('Expressão', $(x), 'Expressões');
/* Criando a variável com o nome e valor declarado na planilha */
SET $(vNomeVariavel) = $(vValorVariavel);
/* Reiniciando variáveis */
LET vNomeVariavel = Null();
LET vValorVariavel = Null();
NEXT x;
Bom agora com as variáveis estou criando um gráfico simples com os seguintes campos:
Competência | Loja | $(vExpressão1)
Competência | Loja | $(vExpressão2)
Competência | Loja | $(vExpressão3)
Competência | Loja | $(vExpressão4) ... assim por diante (São 164 indicadores)
Como os indicadores terão de ficar um e baixo do outro eu pivotei as colunas de expressão para horizontal.
Minha necessidade seria no script de carga ja armazenar esta tabela em memoria.
Criando assim uma tabela Fato com os mesmos campos.
Certo. Então você terá que fazer mais ou menos assim:
//Crie uma tabela para armazenar os valores
INDICADORES:
LOAD
Null() as INDICADOR
, Null() as VALOR
AutoGenerate 0
;
//Para cada indicador que você possui faça um trecho de código que implemente e concatene nessa tabela. Por exemplo:
//Métrica 1: Valor de vendas
Vendas: LOAD * FROM Vendas.QVD(QVD);
CONCATENTE(INDICADORES)
LOAD
'Valor Vendas' as INDICADOR
, Sum(valor) as VALOR
RESIDENT Vendas;
DROP TABLE Vendas;
//Métrica 2: Quantidade de vendas
Vendas: LOAD * FROM Vendas.QVD(QVD);
CONCATENTE(INDICADORES)
LOAD
'Quantidade Vendas' as INDICADOR
, Sum(quantidade) as VALOR
RESIDENT Vendas;
DROP TABLE Vendas;
//Métrica N: ...
Como são muitos indicadores é aconselhável criar um script separado para cada um deles e utilizar o Include ou Must_Include para fazer o carregamento. Assim fica mais fácil remover caso não sejam mais necessários.
$(Must_Include=IndValorVendas.qvs);
$(Must_Include=IndQuantidadeVendas.qvs);
Acho que com essas informações você já consegue prosseguir.
@CélioSartoriJunior , tudo certo?
Só para entender, você tem uma tabela que guarda os cálculos dos indicadores e utiliza uma pivot table para demonstrar para o teu cliente. Agora você quer pegar essa tabela e gerar um qvd com ela? Nesse caso você vai ter que executar os cálculos em memória para armazenar.
Ola @marco_almeida
Sim tenho uma planilha com todas as expressões de cada indicador.
São 164 indicadores para cada loja e Mês.
Então seria como se eu tivesse uma tabela simples com a Loja e o Mes na dimensão e 164 expressões ao lado.
Então oque eu fiz na apresentação pro usuário foi pivotar todas essas expressões para ficarem uma em baixo da outra como se fosse uma tabela dinâmica.
Agora o que eu preciso fazer é transformar isso em uma tabela mesmo, onde cada indicador (rotulo da expressão) deste se tornará um campo de uma coluna chamada "Indicador" e os valores todos em uma outra coluna chamada "ValorIndicador"
Tendo isso ja calculado em uma tabela só na memoria, eu consigo dizer apenas Sum(ValorIndicador) para trazer o valor de cada um.
Eu sei que tudo isso terá que acontecer no script, só que não tenho ideia de como fazer.
Certo. Então você terá que fazer mais ou menos assim:
//Crie uma tabela para armazenar os valores
INDICADORES:
LOAD
Null() as INDICADOR
, Null() as VALOR
AutoGenerate 0
;
//Para cada indicador que você possui faça um trecho de código que implemente e concatene nessa tabela. Por exemplo:
//Métrica 1: Valor de vendas
Vendas: LOAD * FROM Vendas.QVD(QVD);
CONCATENTE(INDICADORES)
LOAD
'Valor Vendas' as INDICADOR
, Sum(valor) as VALOR
RESIDENT Vendas;
DROP TABLE Vendas;
//Métrica 2: Quantidade de vendas
Vendas: LOAD * FROM Vendas.QVD(QVD);
CONCATENTE(INDICADORES)
LOAD
'Quantidade Vendas' as INDICADOR
, Sum(quantidade) as VALOR
RESIDENT Vendas;
DROP TABLE Vendas;
//Métrica N: ...
Como são muitos indicadores é aconselhável criar um script separado para cada um deles e utilizar o Include ou Must_Include para fazer o carregamento. Assim fica mais fácil remover caso não sejam mais necessários.
$(Must_Include=IndValorVendas.qvs);
$(Must_Include=IndQuantidadeVendas.qvs);
Acho que com essas informações você já consegue prosseguir.
Certo, desta forma pode funcionar.
Mas a maioria dos indicadores requer um set analisys para considerar certas condições.
É possível fazer um set analisys no script além da função where?
Somente usando where e condições (IF).