Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Peek function doesnt work properly

Hi!

I have a table with Employees, Account , DataAccount,Bench

This is a part of my table:

                                                                                                                       

EmployeeAccountPeriodDataAccountBench
Mark SpencerTelecomFeb-151.000
Mark SpencerTelecomMar-151.000
Mark SpencerTelecomApr-151.000
Mark SpencerTelecomMay-151.000
Mark SpencerTelecomJun-151.000
Mark SpencerTelecomJul-151.001
Mark SpencerTelecomAug-151.001
Mark SpencerTelecomSep-151.001
Mark SpencerTelecomOct-151.001
Mark SpencerTelecomNov-151.001
Mark SpencerTelecomDec-151.001

I need to find the last row before the values in Bench appear like this:

EmployeeAccountPeriodDataAccountBenchFlag
Mark SpencerTelecomFeb-151.000
Mark SpencerTelecomMar-151.000
Mark SpencerTelecomApr-151.000
Mark SpencerTelecomMay-151.000
Mark SpencerTelecomJun-151.0001
Mark SpencerTelecomJul-151.001
Mark SpencerTelecomAug-151.001
Mark SpencerTelecomSep-151.001
Mark SpencerTelecomOct-151.001
Mark SpencerTelecomNov-151.001
Mark SpencerTelecomDec-151.001
12 Replies
Not applicable
Author

This works well, but I found one bug here, in one case it showed me this:

EmployeeAccountPeriodDataAccountBenchFlag
Pavel KovalskiInternationalSep-140.1801
Pavel KovalskiTelecomFeb-141.000
Pavel KovalskiTelecomMar-141.000
Pavel KovalskiTelecomApr-141.000
Pavel KovalskiTelecomMay-141.000
Pavel KovalskiTelecomJun-140.470
Pavel Kovalski Jan-15 1
Pavel Kovalski Feb-15 1
Pavel Kovalski Mar-15 1
Pavel Kovalski Apr-15 1

I want it to put 1 in front of Jun-14

Not applicable
Author

Sorry, it's not a bug! This works perfectly great!

Thanks!

jopmoekotte
Contributor III
Contributor III

I think Peter already solved it for you, however I personally prefer using keyfields (combining multiple fields) to avoid multiple IF AND statements. (however, temporarily, bloating your table).

my suggestion:

Data_raw:

LOAD *,

  Date(Date#(Period, 'MMM-YY')) as Date,

  Employee &'_'& Account  as Key_Peek

;

LOAD * INLINE [

     Employee, Account, Period, DataAccount, Bench

     Mark Spencer, Telecom, Feb-15, 1.00, 0

     Mark Spencer, Telecom, Mar-15, 1.00, 0

     Mark Spencer, Telecom, Apr-15, 1.00, 0

     Mark Spencer, Telecom, May-15, 1.00, 0

     Mark Spencer, Telecom, Jun-15, 1.00, 0

     Mark Spencer, Telecom, Jul-15, 1.00, 1

     Mark Spencer, Telecom, Aug-15, 1.00, 1

     Mark Spencer, Telecom, Sep-15, 1.00, 1

     Mark Spencer, Telecom, Oct-15, 1.00, 1

     Mark Spencer, Telecom, Nov-15, 1.00, 1

     Mark Spencer, Telecom, Dec-15, 1.00, 1

  ];

[Data]: 

LOAD *,

  if(Key_Peek=Peek(Key_Peek,-1),if(Bench<>Peek(Bench,-1),1,null()),null()) as Flag

RESIDENT Data_raw ORDER BY Key_Peek, Date DESC;

drop table Data_raw;