Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Help flagging minimum date (script below) - need urgent help

Hello,

I've been wrestling with this for days after a deadline - and cannot figure out a solution though I think it's probably simple.

I want to show the following:

1. All data included in "Raw" (below)

2. Flag the minimum datetime

3. Add a conditional statement that states if the PIR (pt in room) was between 6:55 and 8:35 a.m.

What I'm getting currently with PEEK function is flagging all the PIR times as 1 instead of just the min time.

Much appreciation!

SET DateFormat='MM/DD/YYYY';

SET TimestampFormat='MM/DD/YYYY hh:mm';

Raw:

LOAD * INLINE [

    Date, Room, SURGEON, Sched_Start, PIR

    11/21/2014, 1, Dr B, 11/21/2014 08:00, 11/21/2014 08:00

    11/21/2014, 2, Dr B, 11/21/2014 08:00, 11/21/2014 07:50

    11/21/2014, 3, Dr B, 11/21/2014 08:00, 11/21/2014 07:00

    11/21/2014, 4, Dr C, 11/21/2014 08:00, 11/21/2014 07:02

    11/21/2014, 5, Dr C, 11/21/2014 08:00, 11/21/2014 07:56

];

Data:

LOAD

Date,

Room,

SURGEON,

Sched_Start,

PIR,

If(Peek(PIR) <> PIR, 1, 0) AS Flag

RESIDENT Raw

ORDER BY SURGEON DESC;

18 Replies
puttemans
Specialist
Specialist

Could you explain what the output would need to be with an example?

alexandros17
Partner - Champion III
Partner - Champion III

Data:

LOAD

Date,

Room,

SURGEON,

Sched_Start,

PIR,

If(Peek(PIR) <> PIR, 1, 0) AS Flag,

If(Time(PIR) >= '6:55' and Time(PIR) <= '8:55', 1, 0) as flagPIR

RESIDENT Raw

ORDER BY SURGEON DESC;

left join

Load Min(Date) as Date, '1' as FlagMin resident Data;

let me know

Not applicable
Author

Absolutely!

So with the data set provided, it is merely adding another column called "Flag" with binary numbers (1=yes)

DateSURGEONRoomPIRFlagSched_Start
11/21/2014Dr B111/21/2014 08:00011/21/2014 08:00
11/21/2014Dr B211/21/2014 07:50011/21/2014 08:00
11/21/2014Dr B311/21/2014 07:00111/21/2014 08:00
11/21/2014Dr C411/21/2014 07:02111/21/2014 08:00
11/21/2014Dr C511/21/2014 07:56011/21/2014 08:00
Not applicable
Author

Alessandro,

Thank you very much for your help!

So this is the output with your script.

I only want to show 1 column of "Flag" that takes into account all conditions.

It would only show a value of "1" for the earliest PIR - for Dr. B would be the 07:00 and for Dr. C would be the 07:02

DateSURGEONRoomPIRFlagSched_StartFlagMinflagPIR
11/21/2014Dr B111/21/2014 08:00111/21/2014 08:0010
11/21/2014Dr B211/21/2014 07:50111/21/2014 08:0010
11/21/2014Dr B311/21/2014 07:00111/21/2014 08:0010
11/21/2014Dr C411/21/2014 07:02111/21/2014 08:0010
11/21/2014Dr C511/21/2014 07:56111/21/2014 08:0010
alexandros17
Partner - Champion III
Partner - Champion III

Se the part

left join

Load Min(Date) as Date, '1' as FlagMin resident Data

must be rewritten as:

left join

Load Min(Date) as Date, '1' as FlagMin resident Data group bu SURGEON;

THis will give you a atable with min date for each doctor, now you can reload the table and set an if condition on both flags, in order to compute a final flag with all conditions

Not applicable
Author

I added what you wrote but I'm confused about how to combine the FlagMin and flagPIR.

In the output currently, it is showing FlagMin = 1, which I understand as the cases fall b/w 7-8:30.

What I don't understand is flagPIR =0 for all cases because only 1 case for each Dr is first case in the morning.

Sorry if I'm missing something...thank you

Peter_Cammaert
Partner - Champion III
Partner - Champion III

How about this:

Data:

LOAD Date,

     Room,

     SURGEON,

     Sched_Start,

     PIR,

     If ((Time(PIR) >= '6:55') AND (Time(PIR) <= '8:55'), 1, 0) AS FlagBetween7and9,

RESIDENT Raw

LEFT JOIN(Data)

LOAD Min(PIR) AS PIR,

     SURGEON

     1 AS FlagMin

RESIDENT Raw

GROUP BY SURGEON;

Best,

Peter

Not applicable
Author

Hi Peter,

That did the trick! Many thanks to you - have a great day

giacomom
Partner - Contributor III
Partner - Contributor III

Hi Karen,

as an alternative you can do it from the front-end with the expression below:

Capture.PNG.png

Best regards,

Giacomo