Thursday, 14 April 2011

Your call...Qlikview Server and AccessPoint

kaushik said...

I would like to learn more about Qlikview Server and AccessPoint.

A brief guide to QlikView Server (QVS).  It is worth noting that the QVS Reference Manual is really good now and explains the specifics of this subject really well.

So, QlikView Server is a version of QlikView that runs on a server!  Simple, eh?  QVS will load documents into memory on the server.  When a client connects, QVS will send enough information to that clients so that they can display the information on their screens.  When the client makes a selection, QVS uses the memory and CPU power of the server to process that selection and then sends the screen updates to the client.  This means that the client doesn't require to have enough memory and CPU to handle large volumes of data and complex calculations - hence why simple clients such as iPhone and iPad work so well.  The client just needs enough CPU and memory to render the screens.

QVS only loads each document once.  As each client connects, QVS will apportion them a separate area of memory to handle their data requirements (mostly cache of charts).  A "rule of thumb" is that each client will require and additional 10% of the document's memory requirement.  So if the document loads into 1GB of memory on the server, each client will require approx. 100Mb of additional memory.  As each version of QlikView has been released, their memory handling technology has got better and better and v10 will handle many more clients in the same memory than, say, v8.5.

There are now just 3 main client types (previous versions supported a Java client also).  First, QlikView Desktop can be used as a client to access documents from a server.  When used as a client, you would notice that buttons such as "Save" and "Reload" are disabled because they make no sense for a client - the server will handle all of that.

The second client is the QlikView plugin for IE.  This is an ActiveX plugin that sits inside Internet Explorer.  It shares the same code base as QlikView Desktop so the experience is very similar.  It is still a "thick" client so does require installation - although it comes with an MSI for automated installation.

The third, an easiest to deploy, is the AJAX client.  This doesn't require any installation because it works within a browser such as IE, Firefox, Chrome, etc.  As of QlikView 10 SR2, it is also supported in mobile devices such as Safari for iPad using HTML5.

The majority of Plugin or AJAX end users will access their documents via AccessPoint.  AccessPoint, by default, takes a user's Windows Authentication information and will be able to present to them all of the documents that they have access to.  This means users won't be confused by seeing documents that they won't be able to open.  Users can also set "favorites" in AccessPoint so that they can default to seeing their most used documents.

Windows security is the default for QlikView server but not the only method available.  By turning on QlikView's DMS authentication (not available in Small Business Server), the task of authenticating the users can be given to any other type of directory service or even a completely custom form.



Stephen Redmond is CTO of CapricornVentis a QlikView Elite Partner

Tuesday, 12 April 2011

Your call...

I am training in some QlikView newbies right now and it makes me really aware about the huge number of things that you can learn in QlikView.

Please feel free to comment below and tell me what feature of QlikView you are interested in learning more about and I can use your comments as the basis for future posts.


Stephen Redmond is CTO of CapricornVentis a QlikView Elite Partner

Wednesday, 6 April 2011

Load testing QlikView with JMeter

Another really interesting session that I attended at Qonnections was on scalability. Here, we looked at using the JMeter tool (an open source product from Apache: http://jakarta.apache.org/jmeter/) to first record a set of interactions and then play them back multiple times with multiple sessions.

This is a really powerful tool. Not just for QlikView but for anyone developing web products.

I can't record all the steps here, but there is a tutorial document and some sample files available from the Community page @ http://community.qlikview.com/groups/qlikview-scalability/forum/default.aspx


Stephen Redmond is CTO of CapricornVentis a QlikView Elite Partner

QlikView Mobile

I attended a great session at Qonnections yesterday where the new mobile app for ipad was presented.

Up till now, QlikView have had a specific mobile application for iPhone which they then enhanced to a "HD" version for iPad. This client was very different from the traditional QlikView. They also had a Java mobile client that worked on devices like BlackBerry. There was also, at one stage, an Android client - lots of clients to have had to support.

Essentially what has been done with new client is that the existing AJAX client has been enhanced to support gestures on mobile devices. The AJAX client has worked on these devices before but many things didn't work as expected and it was a less than satisfactory experience. With the new gesture support, using your finger instead of a mouse is just simple.

From QlikView's point of view, this move makes a lot of sense. Not having to create an support multiple clients means that they can focus effort on making their core clients even better. From an implementation point of view, there is nothing extra left to do - it works off Access Point same as other clients. All of the security, etc., works with it. It is worth sizing screens to the expected end user tablet size - but that is just best practice anyway.

This is already available for people to have a look at - point your tablet device to demo.qlikview.com. Any of the existing demos will work. Nothing special has been done to them. There are a couple of "iPad optimized demos" which you should find a link to off the main window.

For customers, this will be available in SR2 for QlikView 10 - which is due out in the next week or so.

There is a video available showing some of the new features here: http://www.qlikview.com/us/landing/ipad2

Tuesday, 5 April 2011

No printing in Ajax

I have come across this a number of times, most recently on a post on Community.QlikView.com, so I thought it was worth sharing.

If you have any type of printing enabled in QlikView, the QlikView Desktop and Plugin will render the printing and submit to the relevant printer. This also gives facility for Print Preview. This facility is not available in Ajax - a limitation of the thin client.

To have printing in Ajax, any print jobs need to be rendered on the server into PDF and then presented to the user as a download.

The problem occurs if the IT department has "hardened" your QlikView Server. One of the common steps in hardening is to disable the Print Spooler Service. This is often built into a Group Policy rule also.

The problem for QlikView is that during installation of QlikView Server, the installer attempts to install the PDF XChange drivers. This step will fail if the Print Spooler service is not running.

Once you have sorted out the Print Spooler Service, you don't need to re-install QlikView Server. There is a PDF driver available as a separate download in the QlikView downloads area.

Monday, 4 April 2011

Beginners Guide to QlikView Extension Objects : Part 4 - Headers

Here at Qonnections, I am meeting some interesting folks and having some good chats. Meeting people that read your blog is interesting in itself!

I met Andrew last night and he had been playing around with Extension Objects using my previous 3 steps as a starter. He pointed out one glaring omission - how do you add headers! Doh! I had done it before but just failed to add it to the table example.

Headers are actually pretty easy (like a lot of this stuff). We have already seen the this.Data.rows property. Well the Data class also exposes a HeaderRows property. This has a length value but I can't really see where there would be more than one row. Anyway, we just need to extract the text values from the property just as we have done before:

// Add the Header row
var headerRow = this.Data.HeaderRows[0];

html += "<tr><th>" + headerRow[0].text + "</th><th>" + headerRow[1].text + "</th></tr>";

Simple!


Tuesday, 29 March 2011

Parameters in Dollar Expansion

I had come across this subject in the documentation before but never had a use for it - until today.

I was faced with several fields that each had a code and description embedded in them that needed to be parsed out. Generally, I would just use SubField() for this but unfortunately the separator was a period (.) so I couldn't be sure to get the full text out using SubField because the text could contain periods (a period is not a good choice as a separator!)

I decided that the easiest thing to do would be to use the Left() and Mid() functions in conjunction with the Index() function. This started looking like this:

Load
Field1,
Left(Field1, Index(Field1, '.')-1) As Field1.Code,
Mid(Field1, Index(Field1, '.')+1) As Field1.Desc,
...

There were 5 fields involved and I wondered if there were a different way that I could go about it. I re-checked the help file on Dollar Sign Expansion and came up with this:

SET mLefty=Left($1, index($1, '.')-1);
SET mRighty=Mid($1, index($1, '.')+1);

The $1 in this variable is a parameter. So I can pass a parameter to a variable!

Now I can use these "functions" in my code:

Load
Field1, $(mLefty(Field1)) as Field1.Code, $(mRighty(Field1)) as Field1.Desc,
Field2, $(mLefty(Field2)) as Field2.Code, $(mRighty(Field2)) as Field2.Desc,
Field3, $(mLefty(Field3)) as Field3.Code, $(mRighty(Field3)) as Field3.Desc,
Field4, $(mLefty(Field4)) as Field4.Code, $(mRighty(Field4)) as Field4.Desc,
Field5, $(mLefty(Field5)) as Field5.Code, $(mRighty(Field5)) as Field5.Desc,
...

Now this is not something that is incredibly advanced - but I can imagine a lot of possibilities.