Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
CélioSartoriJunior
Contributor II
Contributor II

Criar tabela a partir de variáveis

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.

 

 

1 Solution

Accepted Solutions
marco_almeida
Creator II
Creator II

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.

Grupo Telegram Qlik Brasil: https://t.me/joinchat/AeRmnUmcxQ02L00g3x-HtQ

View solution in original post

5 Replies
marco_almeida
Creator II
Creator II

@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.

Grupo Telegram Qlik Brasil: https://t.me/joinchat/AeRmnUmcxQ02L00g3x-HtQ
CélioSartoriJunior
Contributor II
Contributor II
Author

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.

marco_almeida
Creator II
Creator II

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.

Grupo Telegram Qlik Brasil: https://t.me/joinchat/AeRmnUmcxQ02L00g3x-HtQ
CélioSartoriJunior
Contributor II
Contributor II
Author

 

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? 

marco_almeida
Creator II
Creator II

Somente usando where e condições (IF).

Grupo Telegram Qlik Brasil: https://t.me/joinchat/AeRmnUmcxQ02L00g3x-HtQ