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: 
P_Kale
Creator II
Creator II

How to Find Repeated case based on certain condition

Hi,

I have a scenario where I want to tagged a policy with a remark "Case_Repeated" if same policy was logged after previous call resolved <= 56 days. e.g. is given below.

Policy_No Call Logged date Call Resolved date Token_no Repeted_Remark
123457 12-Mar-23 17-Mar-23 A_123  
456789 17-Apr-23 20-Apr-23 B_124  
123457 12-May-23 17-May-23 A_126 Case_Repeated
456789 19-Jun-23 12-Jul-23 B_123  
123457 21-Jun-23 25-Jun-23 A_129 Case_Repeated
456789 26-Aug-23 31-Aug-23 B_127 Case_Repeated
123457 12-Dec-23 01-Feb-24 C_124  
234567 09-Feb-24 15-Feb-24 d_123  

 

Thanks in advance

@marcus_sommer 

@swuehl 

@Anil_Babu_Samineni 

Labels (1)
1 Solution

Accepted Solutions
marcus_sommer

It could be done with interrecord-functions within a sorted resident load, like:

t: load *, ifNo = previous(No) and Date - previous(Date) <= 56, 'repeated', 'x') as Flag
resident X order by No, Date;

View solution in original post

12 Replies
marcus_sommer

It could be done with interrecord-functions within a sorted resident load, like:

t: load *, ifNo = previous(No) and Date - previous(Date) <= 56, 'repeated', 'x') as Flag
resident X order by No, Date;

Anil_Babu_Samineni

@P_Kale Perhaps this?

If(Count(TOTAL <Policy_No> Policy_No_Seq)>1 and (Interval(Date(Date#([Call Resolved date] , 'DD-MMM-YY'))-Above(TOTAL Date(Date#([Call Resolved date] , 'DD-MMM-YY'))), 'dd'))<=56, 'Case_Repeated', Null()
)

 

Where in script, Good to create below field to identify the sequence number for Policy_No, 

AutoNumber(RecNo(), Policy_No) as Policy_No_Seq,

Best Anil, When applicable please mark the correct/appropriate replies as "solution" (you can mark up to 3 "solutions". Please LIKE threads if the provided solution is helpful
P_Kale
Creator II
Creator II
Author

Hi @marcus_sommer 

Thanks for your support. This is working fine.

 But I am adding 1 more condition in it where only cases where Token No is generated those only required to be compared while flagging Repeat cases. I am attaching application in which I have just modified your given formula and it is working but only thing is where ever Token No is generated 1st time that cases also getting flagged as "Repeated". 

I have attached application as well as Input file and Out-put file in which I have marked cases in RED which should not be considered as Repeated as it is 1st time when Token No. is generated.

Thanks in advance.

marcus_sommer

You may just add this condition, too like:

ifNo = previous(No) and Date - previous(Date) <= 56 and len(Token), 'repeated', 'x') as Flag

P_Kale
Creator II
Creator II
Author

Thanks @marcus_sommer 

I have tried by the suggestion you have given but there is no change in the out-put. The case which is highlighted in Red is not a repeat case as Token_no has generated 1st time only. Subsequent "Repeated' flagging is correct.

Can you pl check and suggest how to resolve this issue.

Policy_No call_logged_date call_Resolved_date FLAG Token_no
123457 12/03/2023 17/03/2023 - -
123457 12/05/2023 17/05/2023 REPEATED A_126
123457 21/06/2023 25/06/2023 - -
123457 12/08/2023 31/08/2023 REPEATED A_127
123457 15/09/2023 30/09/2023 REPEATED A-_128
123457 12/12/2023 01/02/2024 - -

 

Thanks in advance.

marcus_sommer

I'm not sure if this condition could be practically and sensible included within the above shown check else being flagged in a separate logic and finally evaluated afterwards, maybe like:

t: load
     *,
      if(IDCounter > 1 and Offset <= 56 and TokenCounter > 1 and TokenExists, 1, 0) as Flag;
   load
     *,
     ifNo = previous(No), Date - previous(Date)) as Offset,
     ifNo = previous(No), peek('IDCounter') + 1, 1) as IDCounter,
     sign(len(Token)) as TokenExists,
     ifNo = previous(No), peek('TokenCounter') + sign(len(Token))) as TokenCounter,
resident X order by No, Date;

Means mainly to simplify each single step by creating further useful information and using them within the final evaluation. It's not mandatory a detour because getting a ordered number of ID + Token and if Token exists and any Offset values and various similar information between them is usually very helpful for a lot of views.

P_Kale
Creator II
Creator II
Author

Hi @marcus_sommer below given is the change done in the script. But flag value which I am getting is "0" only for all records.

TEST:

LOAD
Policy_No,
"Call Logged date" as call_logged_date,
"Call Resolved date"as call_Resolved_date,
Token_no,
Policy_No&'_'&"Call Logged date"&'_'&Token_no as LINK
FROM [lib://AttachedFiles/saple case_repeat.xlsx]
(ooxml, embedded labels, table is Sheet1);

NoConcatenate

TEST_1:


Load *,

if(IDCounter > 1 and Offset <= 56 and TokenCounter > 1 and TokenExists, 1, 0) as Flag;

Load *,

if(Policy_No = Previous(Policy_No),call_logged_date - Previous(call_Resolved_date) ) as Offset,
if(Policy_No = Previous(Policy_No),peek('IDCounter') + 1, 1) as IDCounter,
sign(len(Token_no)) as TokenExists,
if(Policy_No = Previous(Policy_No),peek('TokenCounter') + sign(len(Token_no))) as TokenCounter

Resident TEST;

Drop Table TEST;

marcus_sommer

There is no order by statement included by the resident load of TEST. Beside this I suggest to include record-information in the load, like:

TEST_1: Load *, rowno() as RowNo,
if(IDCounter > 1 and Offset <= 56 and TokenCounter > 1 and TokenExists, 1, 0) as Flag;

Load *, recno() as RecNo;
....;

and to include them with the final-flag and all intermediate-flags within a table-box to see each single evaluation in the load-order and identifying which may not be working like expected and may need some logically and/or syntactically adjustment.

P_Kale
Creator II
Creator II
Author

Thanks @marcus_sommer I have included the portion of the script which i have missed initially. Since I am using this functions 1st time finding little difficulty in using in script. Is i am missing something as I am getting 1 to 13 numbers under both the expressions.

TEST:

LOAD
Policy_No,
"Call Logged date" as call_logged_date,
"Call Resolved date"as call_Resolved_date,
Token_no,
Policy_No&'_'&"Call Logged date"&'_'&Token_no as LINK
FROM [lib://AttachedFiles/saple case_repeat.xlsx]
(ooxml, embedded labels, table is Sheet1);

NoConcatenate

TEST_1:


Load *,rowno() as RowNo,

if(IDCounter > 1 and Offset <= 56 and TokenCounter > 1 and TokenExists, 1, 0) as Flag;

Load *,

if(Policy_No = Previous(Policy_No),call_logged_date - Previous(call_Resolved_date) ) as Offset,
if(Policy_No = Previous(Policy_No),peek('IDCounter') + 1, 1) as IDCounter,
sign(len(Token_no)) as TokenExists,
if(Policy_No = Previous(Policy_No),peek('TokenCounter') + sign(len(Token_no))) as TokenCounter,
recno() as RecNo
Resident TEST order by Policy_No,call_logged_date, ;

Drop Table TEST;