Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.
Com o script abaixo:
Temos:
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!!
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
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, 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;
@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.
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?
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;
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
Hehehe sim, tem que ter. Na hora de editar o CODATENDIMENTO eu acabei "papando" o order. Bem observado!!!