Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde,
Gostaria de saber se é possível transformar uma expressão em uma dimensão de um gráfico.
Tipo agrupar uma expressão e transforma-la em dimensão.
Por exemplo, imaginem uma tabela simples de vendas: Cliente, Periodo e Valor de Vendas.
Gostaria de contar a qtd de clientes agrupados pelo valor, onde as dimensões seriam:
Valor de Vendas até 10K,
Valor de Vendas até 20K,
Valor de Vendas até 30K
Valor de Vendas acima de 30K
Este é somente um exemplo simplificado, pois a expressao que tenho atual não é possivel transforma-la em dimensão no momento do script, pois um dos pontos, é que ela deve ser dinamica conforme as seleções.
É possível? Tentei com a expressão calculada e não deu certo.
Uma outra forma de fazer o mesmo chart seria criar um Bar Chart sem Dimension - é, isso é estranho - com a configuração abaixo:
1 - Criar Bar Chart sem Dimension
2 - Adicionar uma Expression pra cada categoria, sendo que a formula seria aproximadamente:
Count({<$(V_IDADE) = {"<=12"}>} TOTAL <PRODUTO> ContadorDeVenda)/Count(ContadorDeVenda)
Count({<$(V_IDADE) = {"<=24"}>} TOTAL <PRODUTO> ContadorDeVenda)/Count(ContadorDeVenda)
Count({<$(V_IDADE) = {"<=36"}>} TOTAL <PRODUTO> ContadorDeVenda)/Count(ContadorDeVenda)
Count({<$(V_IDADE) = {">36"}>} TOTAL <PRODUTO> ContadorDeVenda)/Count(ContadorDeVenda)
3 - Ir na aba Number do Bar Chart e configurar a formatação dos números para exibir como %
Nota 1: nesse caso eu acho que não precisa usar o TOTAL <PRODUTO> mas eu teria que testar pra ter certeza.
Nota 2: eu não sei o campo que você está utilizando para contar as vendas, no meu caso eu coloquei o pseudo campo ContadorDeVenda.
Abraço
Sim é possível,
Para isso você usará a função Class ()
class( expressão, intervalo [ , rótulo [ , deslocamento ]] )
Cria uma classificação de expressões. A largura da caixa é determinada pelo número definido como intervalo. O resultado é mostrado como a<=x<b, em que a e b são os limites superior e inferior da caixa. O x pode ser substituído por um caracter arbitrário definido em rótulo. 0 normalmente é o ponto de partida padrão da classificação. Isso pode ser alterado incluindo um offset.
class( var,10) with var = 23 retorna '20<=x<30'
class( var,5,'value') with var = 23 retorna '20<= value <25'
class(var,10,'x',5) with var = 23 retorna '15<=x<25'
Bom Dia,
Tente desta forma:
Supondo que seus dados estejam pareceidos como este exemplo:
TEMP:
LOAD * INLINE [
Cliente, Periodo, Vendas
A, 01/12/2010, 15000
B, 01/12/2010, 18000
A, 04/12/2010, 23000
D, 01/12/2010, 33000
E, 01/12/2010, 28000
B, 05/12/2010, 12000
G, 01/12/2010, 8000
C, 08/12/2010, 4000
I, 01/12/2010, 21000
];
A sua dimensão calculada seria:
=IF(AGGR(SUM(Vendas), Cliente) <= 10000, 'até 10k',
IF(AGGR(SUM(Vendas), Cliente) <= 20000, 'até 20k',
IF(AGGR(SUM(Vendas), Cliente) <= 30000, 'até 30k',
IF(AGGR(SUM(Vendas), Cliente) > 30000, 'acima de 30k'))))
E a sua expressão:
COUNT(DISTINCT Cliente)
Olá Eduardo, obrigado pelo retorno.
Seria exatamente isto, porém não posso fazer isto no script, pois estes dados serão dinamicos conforme a seleção.
Se eu fizer desta forma, sempre a classificação dos clientes será a mesma. Por exemplo, se eu selecionar Um determinado periodo, o cliente que estava Até 20K, poderá estar no até 10K, e assim por diante.
Vou pesquisar mais sobre o class para ver se é possivel.
De qualquer forma, muito obrigado e um abraço.
Ronaldo Massucato
Ronaldo a sugestão do Eduardo é valida e funciona,
Você deve usar esta sintaxe em dimensões calculadas na aba dimensões nas propriedades do seu objeto.
Ola,
Não entendi, não tem nada fixo em script os dados são alimentados em uma tabela simples e acabam respeitando a seleção.
A dimensão, vc não estaria inserindo no seu script e sim na opção de dimensão calculada do gráfico.
Eduardo, me desculpe, como vi o load in line já associei ao script.
Funcionou perfeitamente.
Muito obrigado.
Ficou desta forma:
=IF(AGGR($(V_IDADE), PRODUTO) <= 12, 'até 12 Meses',
IF(AGGR($(V_IDADE), PRODUTO) <= 24, 'até 20 Meses',
IF(AGGR($(V_IDADE), PRODUTO) <= 36, 'até 36 Meses',
IF(AGGR($(V_IDADE), PRODUTO) > 36, 'acima de 36 Meses'))))
Com o class também funciona, só não consegui através de variavel, mas problema resolvido.
=Class($(V_IDADE),12,'idade') - NAO FUNCINOU
=Class([IDADE PRODUTO],12,'idade') - FUNCINOU
Abraços
Ronaldo Massucato
Vou dar uma olhada em como ficaria com o comando Class e posto aqui também, afinal é um forum de discussão e todos os meios de achar uma solução é sempre bom ter conhecimento, pois mais pra frente pode ser util.
abraços!
Tente colocar um sinal de "igual"
=Class($(=V_IDADE),12,'idade') - NAO FUNCINOU
Rodrigo, também não funcionou.
=Class($(=V_IDADE),12,'idade') - NAO FUNCINOU
=Class($(V_IDADE),12,'idade') - NAO FUNCINOU