You have probably used images in your QlikView apps, you may have linked to images hosted on another site. This post looks at a use case and describes how you can use images created on the fly, by web APIs, in your apps.
Images In QlikView
There are many ways that images can be used in QlikView: wallpaper on sheets, backgrounds on text objects, expression based in text objects and in-line in straight tables. The later two require you to construct a link to the file in an expression. A simple example is where you have a table with details of where images are stored, this can then be used to populate images in tables and text objects. In a few projects I have used this technique to good affect showing product images and customer logos in QlikView. Images can also be used as the background of text boxes; for buttons or performance indicators.
Think beyond putting your company logo in the top right corner and images can really enhance your QlikView applications.
Image Based Web APIs
For the un-initiated, a web API (application programming interface) is a mechanism for calling functionally from a server and getting back a result. Often, but not always, the parameters to this API call are sent via the URL. The result may be a set of data, a flag indicating an action has been carried out on the server or an image file. It’s image files generated by APIs that we are most interested in here.
You may well already have an API generated image in some of your apps. If you have ever put a dynamic Google map (or Open Streetmap) into an app then it is the API on that server that you have called.
The Use Case
Recently I was asked by a client to incorporate bar codes for product shipments into their application. These would then be scanned by their bar code readers to log in their production systems when exceptions were identified in QlikView. The way this had been dealt with in previous reporting solutions was to use a bar code font – this font was set on one column of a tabular output. There were two immediate problems I could see with replicating this in QlikView, first you can not set a different font for a single column in a straight table, also you would be reliant on all clients having the correct font installed. A different approach was called for.
I assumed that generating a bar code for a given string would be a relatively common thing to want to do – and therefore someone would have created a web API for this.
Implementing Bar Codes
After trying out a few of the APIs in my browser I settled on one that seemed to have all the features I needed. The site I chose was this one:
The call to the API was through the URL and no authentication was needed – these things are essential to using APIs out of the box (for any other API take a look at the excellent Qlik Web Connectors). The basic parameters for this API are:
Full instructions can be found here: http://www.barcodes4.me/apidocumentation
Once this had been sorted the only thing left was to plumb this into the QlikView app itself. This was simply a case of building the correct URL using string concatenation and turning the expression type to image.
The expression required was this:
='http://www.barcodes4.me/barcode/c39/' & Only([Pallet No]) & '.png?IsTextDrawn=1&width=360&height=70'
The extra parameters simply define the size of the resultant image and the fact we wanted to show the pallet number as well as the bar code.
The settings on the Expressions tab of the Chart Properties look like this, most importantly the Representation set to Image:
The result was a table of shipments with a barcode at the end of each row. A quick test with the customer’s bar code reader showed these bar codes could be scanned straight off the screen.
Incidentally, I found I was able to test also using a free bar code reading app on my smartphone.
Other Web APIs
Now you know how to use web APIs you can go and find out some others. One of the most fully featured visualisation APIs I have find is the Google Image Charts API. This API allows you to pass your data set to the API in the URL and it then renders you a chart on the server and passed it back to you as an image. This image can then be used in a text box or a straight table.
For instance the URL:
Returns the following image file:
This is a quick and simple way of incorporating charts that QlikView does not support natively. Be warned though they won’t be clickable like other Qlikview charts and things like popup text is not supported. If you require that kind of functionality from a non-native chat you need to look to extensions.
In order to build the URL to send to Google to receive back a Venn diagram you will need to construct it using various QlikView expressions, in this case summing the values for each dimension, then summing all the intersections and then concatenating them together to give the number string. You would also need to work out which dimensions were in play in your current selections in order to build the colour and legend lists.
Be aware though, Google are deprecating the Chart Image API in favour of their new Chart API. These are HTML 5 based charts, so would need to be implemented via Extensions in QlikView.
If there are any other web APIs that you use in QlikView that I have not mentioned please let me know in the comments. If you have examples you can share then even better!
Hopefully you will now be able to incorporate functionality in your QlikView apps that would have previously have been impossible.