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:

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}'