Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik Open Lakehouse is Now Generally Available! Discover the key highlights and partner resources here.
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;