Administração do sistema
Geração de gráficos utilizando o Telescope Script Engine
RT.FAQ-96698
O Telescope Script Engine permite gerar gráficos a partir de SQLs executados na base de dados de forma bastante simplificada.
A geração de um gráfico é realizada simplesmente por um comando SQL onde a palavra SELECT é substituída por CHART e o nome das colunas segue uma convenção para determinar o tipo de gráfico a ser usado. A combinação dos nomes das colunas irá definir o tipo de gráfico a ser apresentado.
As seguintes combinações são suportadas:
- pie-y
- line-x-y
- spline-x-y
- column-y
- column-x-y
- bar-y
- bar-x-y
- area-x-y
- areaspline-x-y
- solidgauge-y
- funnel-y
- map-y
Exemplos
Gráfico de pizza das situações pendentes
item pie opcao, label='Situação', options='E=Execução,R=Proposta,P=Pendente,S=Suspenso';
chart situacao as pie
, count(1) as y
from atividades
where situacao not in ('A','O','C')
group by situacao
[img:pizza]
Tipos de atividades criadas nos ultimos 2 dias
chart a.data_abertura as x
, t.tipo_atividade as column
, count(1) as y
from atividades a
join tipos_atividades t on t.id = a.tipo_atividade_id
where a.data_abertura > (now()::date-2)
and t.tipo_atividade <> 'Atendimento'
group by t.tipo_atividade, a.data_abertura
[img:colunas]
Areas
chart a.data_abertura as x
, t.tipo_atividade as area
, count(1) as y
from atividades a
join tipos_atividades t on t.id = a.tipo_atividade_id
where a.data_abertura > (now()::date-7)
and t.tipo_atividade <> 'Atendimento'
group by t.tipo_atividade, a.data_abertura
[img:area]
Funil
chart t.tipo_atividade as funnel
, count(1) as y
from atividades a
join tipos_atividades t on t.id = a.tipo_atividade_id
where a.data_abertura > (now()::date-2)
and t.tipo_atividade <> 'Atendimento'
group by t.tipo_atividade
order by 2 desc
[img:funnel]
Mapa
chart 'br-' || lower(r.sigla) as map
, count(1) as y
from pessoas p
join enderecos e on e.id = p.endereco_principal_id
join cidades c on c.id = e.cidade_id
join regioes r on r.id = c.regiao_id
group by r.sigla
[img:mapa]
SQL para gauge
item solidgauge text, label='Teste';
chart a.data_abertura as solidgauge
, count(1) as y
, '0.3=#55BF3B, 0.5=#DDDF0D, 0.7=#DF5353' as colors
, 80 as max
from atividades a
join tipos_atividades t on t.id = a.tipo_atividade_id
where a.data_abertura > (now()::date - 3)
and t.tipo_atividade = 'Atendimento'
group by a.data_abertura ;
[img:gauge]
Transformar colunas em linhas
Quando temos colunas que deveria estar em linhas separadas e o nome da coluna estar sendo apresentado em uma coluna, podemos ter que fazer algo como:
chart key as x, unnest(arr1) as column, unnest(arr2) as y
from (
select key
, array['planejado', 'efetivo'] as arr1
, array[planejado, efetivo] as arr2
from (
select 'abc' as key, 1 as planejado, 2 as efetivo
union all
select 'def' as key, 1 as planejado, 2 as efetivo
union all
select 'ghi' as key, 1 as planejado, 2 as efetivo
) q
) q
Adicionar propriedades
Deve-se seguir a documentação https://api.highcharts.com/highcharts/ para pegar as propriedades, as mesmas devem ser acessadas com "." para o encadeamento do JSON por ex:
set chart-properties as 'plotOptions.series.dataLabeles.enabled:true,plotOptions.series.color:''#000'''
Para adicionar os dataLabels no final das coluna por ex:
set chart-properties as 'plotOptions.series.dataLabels:{enabled:true,rotation:0,borderWidth:0,color:''back'',verticalAlign:''top'',align:''center'',x:3,y:-20}'