Qlik Community

Qlik Design Blog

All about product and Qlik solutions: scripting, data modeling, visual design, extensions, best practices, etc.

cbo
Contributor

Peek() vs Previous() – When to Use Each

As many QlikView developers have grown accustomed to, QlikView offers developers more than one way to accomplish a task.  Knowing when to use each function is half of the battle. For example let’s take a look at Peek() vs Previous().

There are certainly some similarities between the two functions but there are also distinct differences that need to be taken into account when deciding which function to use.

The Similarities

  • Both allow you to look back at previously loaded rows in a table.

  • Both can be manipulated to look at not only the last row loaded but also previously loaded rows.

The Differences

  • Previous() operates on the Input to the Load statement, whereas Peek() operates on the Output of the Load statement. (Same as the difference between RecNo() and RowNo().) This means that the two functions will behave differently if you have a Where-clause.

  • The Peek() function can easily reference any previously loaded row in the table using the row number in the function  e.g. Peek(‘Employee Count’, 0)  loads the first row. Using the minus sign references from the last row up. e.g. Peek(‘Employee Count’, -1)  loads the last row. If no row is specified, the last row (-1) is assumed.  The Previous() function needs to be nested in order to reference any rows other than the previous row e.g. Previous(Previous(Hires))  looks at the second to last row loaded before the current row.

So, when is it best to use each function?

  • The previous() and peek() functions could be used when a user needs to show the current value versus the previous value of a field that was loaded from the original file. 

  • The peek() function would be better suited when the user is targeting either a field that has not been previously loaded into the table or if the user needs to target a specific row.

I wrote a technical brief that shows you how and why to use the Peek() and Previous() functions. You can see it here.

Happy Qliking!

10 Comments
vikasmahajan
Honored Contributor III

Good Article

0 Likes
638 Views
Not applicable

Hi

Thanks, what would you use when wanting to check not the last row, or a set number of rows back, please check my question. I have not got any responses yet. Hoping you maybe have some answers.

http://community.qlik.com/thread/91877

0 Likes
638 Views
Not applicable

Can the previous() function be used to look back at the last record per dimension (example: Last Sale by PatientID)?

0 Likes
638 Views
flanfranco
New Contributor III

Thanks!!!

0 Likes
638 Views
nihhalmca
Valued Contributor II

good post

0 Likes
638 Views
beck110979
Valued Contributor III

Thanks a lot for sharing and your explanation, very useful

0 Likes
638 Views
tajmohamed30
Contributor III

Nice blog

0 Likes
638 Views
Rajesh
Contributor

Superb blog Charles,Thanks for sharing.

0 Likes
638 Views
qlikview_yj
Contributor

Thanks a lot for sharing and your explanation, very useful

0 Likes
638 Views
krishnacbe
Valued Contributor III

Thanks. Very useful information.

0 Likes
638 Views