Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Preciso contar o numero de chamados com prioridade 0 e que o tempo de inicio de atendimento seja menor que 15 minutos, atualmente estou fazendo o seguinte, porem, sem sucesso:
=Count({<Chamado.Prioridade={'0'},
(
Interval(
Timestamp(Min({<Acoes.Ação-={'Abertura'}>} Acoes.DATAHR))
-
Timestamp(Max({<Acoes.Ação={'Abertura'}>} Acoes.DATAHR)))
)>={'00:15:00'}
>}Chamado.Número)
Posteriormente farei o mesmo com as demais prioridades.
Você não precisa da tabela temp. O order by pode ocorrer no load do qvd.
From seu_qvd order by %idchamado;
Fato bem lembrado...my fault fernando.tonial.
Rafael,
Complete seu resident assim:
ChamadoTemp:
Load
*, If(%IdChamado=Previous(%IdChamado) and Acoes.Ação<>Previous(Acoes.Ação),Interval(Acoes.DATAHR-Previous(Acoes.DATAHR)),Time(0)) as Intervalo_Chamado
Resident Chamado Order By %IdChamado;
Drop table Chamado;
Rename table ChamadoTemp to Chamado;
Rafael,
Não seria mais interessante criar um campo com o intervalo entre as ações de cada chamado no script?
Por exemplo:
Sua_Tabela:
Load
Outros_Campos,
If(Chamado.Número=Previous(Chamado.Número) and Acoes.Ação<>Previous(Acoes.Ação),Interval(Acoes.DATAHR-Previou(Acoes.DATAHR)),Time(0)) as Intervalo_Chamado
Resident Sua_Tabela_Temp Order By Chamado.Número;
Daí na tela eu faria a seguinte medida:
Count({<Intervalo_Chamado={">=00:15"},Chamado.Prioridade={0},Acoes.Ação={'Abertura'}>}Chamado.Número)
Abs e Sucesso!!
Opa, gostei da ideia, e começei a usar, acabei que mudei um pouco para funcionar aqui, fiz o seguinte:
No script:
If(%IdChamado=Previous(%IdChamado) and Acoes.Ação<>Previous(Acoes.Ação),Interval(Acoes.DATAHR-Previous(Acoes.DATAHR)),Time(0)) as Intervalo_Chamado,
Essa Parte ja retornou nulo.
Coloquei no objeto de texto o count que vc me passou, porem o mesmo não funcionara ja que o intervalo não funcionou tambem.
Desde já,
Obrigado pela ajuda
O importante aí pro if funcionar é aplicar o order by %IdChamado. Do contrário vai dar errado mesmo.
Fiz o Seguinte:
ChamadoTemp:
Load
If(%IdChamado=Previous(%IdChamado) and Acoes.Ação<>Previous(Acoes.Ação),Interval(Acoes.DATAHR-Previous(Acoes.DATAHR)),Time(0)) as Intervalo_Chamado
Resident Chamado Order By %IdChamado;
Ainda sem sucesso kk
Você não precisa da tabela temp. O order by pode ocorrer no load do qvd.
From seu_qvd order by %idchamado;
Fato bem lembrado...my fault fernando.tonial.
Rafael,
Complete seu resident assim:
ChamadoTemp:
Load
*, If(%IdChamado=Previous(%IdChamado) and Acoes.Ação<>Previous(Acoes.Ação),Interval(Acoes.DATAHR-Previous(Acoes.DATAHR)),Time(0)) as Intervalo_Chamado
Resident Chamado Order By %IdChamado;
Drop table Chamado;
Rename table ChamadoTemp to Chamado;
Pessoal,
Só lembrando que o Order By no Qlik só funciona em tabela resident.
Lendo direto do aquivo QVD vai dar erro.
Abraços.
Don't worry, be Qlik.
Tonial.
Deu certo, porem gerou 5 Intervalos, tentei usar o Max e o Min, porem ele pega os valores errados.
Isso porque, pra cada linha com o mesmo id há um intervalo. Talvez isso seja interessante:
Max_Min_Chamado:
Load
%IdChamado,
Interval(Max_DataHr-Min_DataHr) as Intervalo_Total;
Load
%IdChamado,
Min(Acoes.DATAHR) as Min_DataHr,
Max(Acoes.DATAHR) as Max_DataHr
Resident Chamado group By %IdChamado;
Mas se isso não te servir me avise que tentarei te ajudar.
Abs e Sucesso!!
Consegui, agora meu problema se tornou a prioridade.