Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Calcular número de registros com base em uma métrica e um campo

Boa noite,

Estou utilizando o Qlik Sense desktop para visualizar resultados de tickets/chamados e calcular SLAs violados. Na minha base de dados cada ticket possui um número e as datas de abertura e fechamento.

Criei uma métrica para calcular o número de horas entre duas datas (posteriormente farei condições para considerar apenas o intervalo entre 9h e 18h e não considerar fim de semana). Essa métrica não pode ser calculada na etapa de LOAD, pois podem ocorrer tickets em aberto e nesses casos calculo o tempo total com base na data/hora corrente.

Preciso calcular quantos tickets possuem tempo de atendimento maior que o tempo limite do SLA, que está em um campo carregado ( TempoSLA) .

Precisaria montar um cálculo como: COUNT( CodTicket ) WHERE ( TempoFechamento > TempoSLA )

onde TempoFechamento é uma medida incluída em itens mestres com a expressão

Sum ( IF ( isNull ( Data_Fechamento),now(1),[DataFechamento] ) - [DataAbertura] )

Se eu usar um outro campo ( TempoAtendimento ) carregado no LOAD funciona com a expressão abaixo, mas com medida definida não está funcionando.

Funciona: Sum ( IF (TempoAtendimento > TempoSLA, 1, 0 )

Não funciona: Sum ( IF (TempoFechamento > TempoSLA, 1, 0 )

Obrigado!

Labels (2)
1 Solution

Accepted Solutions
pablolabbe
Luminary Alumni
Luminary Alumni

Olá Yussif,

Não é possível fazer referencia a uma medida dentro da expressão, se ela não está incluída no mesmo objeto como outra medida.

Por outro lado o que você quer montar não funciona pois você teria uma agregação dentro de outra agregação. Creio que isto sim funcionaria:

Sum ( IF ( IF ( isNull ( Data_Fechamento),now(1),[DataFechamento] ) - [DataAbertura] ) > TempoSLA, 1, 0 )

 

  Outra alternativa será ter uma Data_Fechamento calculada no script considerando data e hora atual se for vazia, assim você simplifica a formula.

  Não vejo problema deixar no script. Se quiser uma posição atualizada, ai é só recarregara app. Assim você tem um status congelado conforme última carga. Se deixar dinâmico pode dar falsa impressão que o chamado segue aberto apesar de já ter sido fechado no sistema.

  A hora da carga é o considerado como corte para a análise.

Pablo

View solution in original post

6 Replies
pablolabbe
Luminary Alumni
Luminary Alumni

Olá Yussif,

Não é possível fazer referencia a uma medida dentro da expressão, se ela não está incluída no mesmo objeto como outra medida.

Por outro lado o que você quer montar não funciona pois você teria uma agregação dentro de outra agregação. Creio que isto sim funcionaria:

Sum ( IF ( IF ( isNull ( Data_Fechamento),now(1),[DataFechamento] ) - [DataAbertura] ) > TempoSLA, 1, 0 )

 

  Outra alternativa será ter uma Data_Fechamento calculada no script considerando data e hora atual se for vazia, assim você simplifica a formula.

  Não vejo problema deixar no script. Se quiser uma posição atualizada, ai é só recarregara app. Assim você tem um status congelado conforme última carga. Se deixar dinâmico pode dar falsa impressão que o chamado segue aberto apesar de já ter sido fechado no sistema.

  A hora da carga é o considerado como corte para a análise.

Pablo

Not applicable
Author

Obrigado Pablo!

A intenção seria deixar em uma medida e aplicá-la em outros cálculos para evitar ficar replicando essa parte de cálculo, aplicando diretamente a medida do total de horas em outras medidas.

Por exemplo, teria um indicador de SLA estourado com menos de 1h, menos de 1dia, etc. Precisaria do total de horas em cada um desses indicadores para comparar se ultrapassou o tempo limite.


Como o tempo do SLA seria interrompido em determinado horário e dias da semana para alguns casos, esse cálculo ficaria um pouco extenso e replicá-lo em vários pontos/visualizações poderia ocasionar falhas de esquecer alguma atualização.


Vou realizar o cálculo diretamente no script conforme sugerido e alinhar com o cliente uma forma de trabalhar os tickets com horário em aberto.

Obrigado!

nicolett_yuri

Segue aqui uma forma de se calcular tempo de atendimento, caso precise: Cálculo de Tempo Útil de Atendimento (SLA) | Blog do Nicolett

pablolabbe
Luminary Alumni
Luminary Alumni

Uma alternativa seria usar a técnica de armazenar expressões em variáveis. Conhece essa técnica ?

Not applicable
Author

Você teria uma referência ou exemplo dessa técnica?

pablolabbe
Luminary Alumni
Luminary Alumni

Aqui tem uma boa referencia no site Qknow.com.br   Uso de Variáveis em Expressões Repetidas - Qknow