Qlik Community

Brasil

Announcements
Read about the latest Qlik Community enhancements on the Community News blog!
cancel
Showing results for 
Search instead for 
Did you mean: 
paulokpk
Creator
Creator

Função Above em Datas

Bom dia a todos. 

Tenho uma tabela que mostra o Código de um chamado e todos os status que este chamado passou. 

Eu precisava gerar uma coluna na tabela onde ele calculasse o tempo em que o chamado ficou em cada status (acredito que teria que usar a função ABOVE para realizar esta tarefa. Mas não entendi como ela pode ser usada.

Depois que eu calcular esses tempos totais de cada chamado eu preciso exibir a soma de todos os tempos subtraindo o tempo em que o chamado ficou com o Status 'AGUARDANTO TERCEIROS' 

Não sei se no próprio ABOVE eu posso gerar um IF para que quando a coluna de status for Aguardando terceiros ele coloque o tempo a seguir como ZERO.

paulokpk_0-1632316234823.png

 

1 Solution

Accepted Solutions
thiago_justen

Com o script abaixo:

Captura de tela 2021-09-23 105517.png

Temos:

Captura de tela 2021-09-23 105517.png

 

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago

View solution in original post

16 Replies
thiago_justen

Bom dia @paulokpk.

 

Eu recomendo fortemente a criação dessa coluna via script:

 

Sua_Tabela:

Load

Seus_Campos,

If(Previous(CODATENDIMENTO)=CODATENDIMENTO and Status <> Previous(Status),Interval([Data Status]- Previous([Data Status])), time(0) )  as Intervalo_Status

From Sua_Base Order By CODATENDIMENTO, [Data Status] asc;

 

Contudo se quiser fazer via tela (na tabela), use:

Aggr(Interval([Data Status] - Above([Data Status])),CODATENDIMENTO)

 

Abs e Sucesso!!

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
paulokpk
Creator
Creator
Author

Fiz utilizando o Script, porém os valores de coluna na coluna foram estranhos, Negativo para algumas linhas e zerados em outras.

e se eu coloco a formula diretamente em uma medida ou dimensão os valores não aparecem deixando a coluna cinza

paulokpk_0-1632398517211.png

paulokpk_1-1632398845152.png

 

thiago_justen

Falha minha.

Corrija no script o valor em negrito:

Sua_Tabela:

Load

Seus_Campos,

If(Previous(CODATENDIMENTO)=CODATENDIMENTO and Status <> Previous(Status),Interval([Data Status]- Previous([Data Status])), time(0) )  as Intervalo_Status

From Sua_Base Order By CODATENDIMENTO, [Data Status] desc;

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
paulokpk
Creator
Creator
Author

Thiago, me desculpe se eu estou falando alguma besteira. 

Mas esses dados são buscados de uma consulta SQL pois eu gero um extrator do RM Totvs que é meu ERP. e daí cria-se um QVD

Entretanto, se eu insiro esse IF no extrator ele apresenta um erro. (acredito que exista algum comando que o SQL não lê, até porque eu tentei fazer uma consulta no sql com ele aqu e tb deu erro

Quando eu tento colocar esta linha na carga de dados ?(quando carrego o QVD) que criei anteriormente o IF funciona mas a linha do From onde ele insere o order by não. 
From Sua_Base Order By CODATENDIMENTO, [Data Status] desc;

thiago_justen

@paulokpk de fato o Order By deve ser usado num load resident. Assim:

 

Seu_QVD:

Seus_Campos

From Sua_LIB;

 

Left Join (Seu_QVD)

Load

*,

If(Previous(CODATENDIMENTO)=CODATENDIMENTO and Status <> Previous(Status),Interval([Data Status]- Previous([Data Status])), time(0) )  as Intervalo_Status

Resident Seu_QVD By CODATENDIMENTO, [Data Status] desc;

 

Veja se me expressei melhor agora.

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
paulokpk
Creator
Creator
Author

Hummm, não entendi. me desculpe mas é que minha cabeça está dando um nó com essa demanda. 

No momento meu load para este QVD está assim:

 

StatusAtendimento:

LOAD
AutoNumberHash128(CODCOLIGADA,CODATENDIMENTO,CODLOCAL) AS %AtendimentoID,
CODSTATUS AS [Código do Status],
ApplyMap('MP_StatusAtendimento',CODSTATUS,NULL()) AS [Status],
DATA_STATUS AS [Data Status],
CODMOTIVOREP AS [Código Motivo de Repasse],
FROM [lib://QVDUnitech/rm_Atend_Status.QVD]
(qvd);

 

Esse Join vai entrar abaixo da linha do FROM?

thiago_justen

Vamos fazer assim:

 

StatusAtendimento:

LOAD
AutoNumberHash128(CODCOLIGADA,CODATENDIMENTO,CODLOCAL) AS %AtendimentoID,
CODSTATUS AS [Código do Status],
ApplyMap('MP_StatusAtendimento',CODSTATUS,NULL()) AS [Status],
DATA_STATUS AS [Data Status],
CODMOTIVOREP AS [Código Motivo de Repasse],
FROM [lib://QVDUnitech/rm_Atend_Status.QVD]
(qvd);

 

Left Join (StatusAtendimento)

Load

*,

If(Previous(%AtendimentoID)=%AtendimentoIDand [Código do Status]<> Previous([Código do Status]),Interval([Data Status]- Previous([Data Status])), time(0) )  as Intervalo_Status

Resident StatusAtendimento By %AtendimentoID, [Data Status] desc;

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
paulokpk
Creator
Creator
Author

No caso acima, a última linha 

Resident StatusAtendimento By %AtendimentoID, [Data Status] desc;

Não teria um ORDER antes deste By? 

porque quando eu coloco apenas o By ele dá um erro na linha

thiago_justen

Hehehe sim, tem que ter. Na hora de editar o CODATENDIMENTO eu acabei "papando" o order. Bem observado!!!

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago