QlikView AutoRefresh Document Extension

I have uploaded a QlikView Document Extension which enables you to add the ability to a QlikView application that its UI will be refreshed automatically every X seconds.

I have developed this extension some months ago and it is already used by quite a lot of customers and partners who are using this extension for example for monitors in a production line.

Download + Documentation:

https://github.com/stefanwalther/QlikView-Extension-AutoRefresh

Issues

Please post issues and feature requests on the project’s issues page.

Bookmark and Share

Tags: ,

D3 Bullet Charts / BulletGraph Object Extension

If you install QlikView you’ll find an extension example called “Bullet Chart” with a basic implementation to integrate bullet charts in QlikView.

This results into a basic bullet chart but without a description and sub-title of the KPI, furthermore if you want to add a series of KPIs you have to create and configure several instances of the “Bullet Chart” extension.

While this kind of visualization (based on a concept created by Stephen Few) is quite famous this extension here offers some more functionality based on a piece of code I have found on bl.ocks.org.

Screenshots of the D3BulletCharts Extension

Adding the D3BulletCharts extension:

The D3BulletCharts extension in action:

Configuration:

Compatibility

This QlikView Object Extension is only developed and tested with QlikView 11 SR2 or higher.

Download

Source Code, .qar file and a sample application can be downloaded from GitHub.
The demo application also includes a sample how the data has to be structured in the QlikView data model to be used by this extension.

Issues

Please post issues with the extension on GitHub.

Bookmark and Share

Tags: , ,

Executive Dashboard: Combining Multiple QlikView Documents into a Single Dashboard

This article demonstrates how you can combine several objects from multiple QlikView applications into a single dashboard (Executive Dashboard).

Motivation

From a performance and manageability perspective it absolutely makes sense to segment your data, to split up different analysis aspects into several applications. This is the basis of QlikView’s App approach.

But at the same time it is often needed to combine results from several QlikView applications within a single dashboard. QlikView does not deliver that functionality out of the box, but fortunately integration capabilities are very strong in QlikView, so we’d just need to bring some existing integration concepts together to create an Executive Dashboard with charts / figures from multiple QlikView applications.

The Approach

The easiest approach for placing different objects from multiple QlikView objects onto a single user interface / dashboard is probably just creating a web page and using QlikView’s Mashup capabilities (see the previously posted article and the collection of examples I have published some weeks ago).

My approach for achieving the desired result was to use two different integration techniques:

  1. QlikView Mashups to reference QlikView objects from several QlikView documents
  2. Using the WebPageViewer extension (which is installed as one of the example extensions when installing QlikView Desktop)
  3. Putting several instances of the WebPageViewer extension on one sheet and reference external objects
  4. While referencing the external objects use some parameters which should be passed to these external objects to pre-select dimensions which are common in all external documents (e.g. time dimension, region, etc.)

Unfortunately this approach does not work out of the box because there is a (very little) bug in the WebPageViewer extension which does not allow to place this extension several times on a single sheet, that’s why I have created a clone of the WebPageViewer extension (called “WebPageViewer 2”) which provides a bugfix and some other minor functional additions to the extension.

The Solution & Some Screenshots

Using this modified extension it is now possible to place as many external instances of the extension onto a single sheet:

Screenshot Executive Dashboard

Limited Interactivity

Unfortunately interactivity in this dashboard is only supported partially using this approach:

  • If you change the year (field of the host document) in above displayed dashboard, the charts will refresh to show only the values for the selected years, so this works fine
  • But unfortunately I did not find an easy way to support selections within the charts and bring these selections back to the host document. So I completely prevented interaction with these charts. This is defined in the extension’s properties. If the user clicks somewhere in one of the WebPageViewer2 extensions, he will see a message that interactivity is not supported. So these charts are some kind of only “read-only”.

Message displayed if user clicks somewhere in the chart

WebPageViewer2: Property Dialog to Prevent Interaction

Benefits of this Approach

This approach can be used very dynamically, so you could also reference documents depending on selected values in your host document. This especially makes sense if you segment your data using QlikView Publisher’s “Loop and reduce” functionality:

Reference Objects Dynamically based on Selection in Host Document

Downloads

Bookmark and Share

Tags: , ,

Improved WebPageViewer QlikView Extension (WebPageViewer2)

The “WebPageViewer” extension which will be installed with the QlikView installation (C:\Program Files\QlikView\Examples\Extensions\ExtensionExamples.qar) contains a little bug. That’s why I have created a new QlikView extension called “WebPageViewer2” with some little improvements.

Purpose of this QlikView Object Extension

The purpose of this QlikView extension is easy to describe: Integrate an existing web page into an existing QlikView application by just defining the Url of the web page.

Bugfix & New Feature:

Bugfix for multiple instances of WebPageViewer on one sheet
The standard WebPageViewer extension does not allow to place multiple instances of the extension on one sheet. I have fixed this in WebPageViewer2.

New Feature: “Prevent Interaction”
If this option is ticked the user will not be able to interact with the web page loaded in the extension (e.g. clicking on links, etc.
I will describe in one of my next posts a scenario why I needed this new functionality for a concrete project.

Screenshots

WebPageViewer2 Extension - Adding the Extension

WebPageViewer2 Extension - Property Dialog

Download

The extension (.qar file) can be downloaded from https://github.com/stefanwalther/QlikView_Extension_WebPageViewer2/

Bookmark and Share

Tags: ,

Pre-Selecting a Category in QlikView AccessPoint (QlikTip #52)

This article demonstrates a custom solution how to pre-select a category in QlikView AccessPoint. The pre-selected category will be opened by default, but the user still has the possibility to change the category by using the category select box (which is the default behavior of QlikView AccessPoint).

Setup

Follow these steps to customize your QlikView AccessPoint:

  1. Make a backup of the index.htm (which can be found at C:\Program Files\QlikView\Web)
  2. Add the below posted code to the header of the index.htm (after the jQuery include) and before the end of the html head tag
  3. Save the index.htm
<!-- Begin of customization for pre selecting categories in AccessPoint -->
<script type="text/javascript">
$(function () {

var cSelectedCategory = 'SelectedCategory';

function preSelectCategory() {
	var selectedCategory = unescape(getQueryString(cSelectedCategory));
	if (selectedCategory) {
		selectedCategory = (selectedCategory == 'All') ? '' : selectedCategory;
		//console.log("PreSelect Category based on QueryString: " + selectedCategory)
		$('#Category').val(selectedCategory).trigger('change');
	}
}

// copied from: http://stackoverflow.com/questions/3788125/jquery-querystring
function getQueryString(key) {
	var re = new RegExp('(?:\\?|&)' + key + '=(.*?)(?=&|$)', 'gi');
	var r = [], m;
	while ((m = re.exec(document.location.search)) != null) r.push(m[1]);
	return r;
}

// Calls
setTimeout(preSelectCategory, 100);
//console.log(ap);

});
</script>
<!-- End of customization for pre selecting categories in AccessPoint -->

Usage

Now you can passed the category which should be pre-selected via the QueryString:

Example for pre-selecting the category “Sales”:
http://localhost/qlikview/index.htm?SelectedCategory=Sales

Another example for pre-selecting the category “Sales Applications”:
http://localhost/qlikview/index.htm?Sales%20Applications

Note: %20 is the encoded character for a white space

Compatibility

I have tested this solution for the following browsers:

  • Chrome 27
  • Firefox 21
  • Internet Explorer 8, 9, 10
… and the following QlikView version:
  • QlikView 11
  • QlikView 11.2

Support

This solution is certainly not supported, after every QlikView Update or Service Release you will have to modify the index.htm again.
Bookmark and Share

Tags: ,

Starting to work with the QlikView Management Services API (QMS API), Some Useful Resources (QlikTip #51)

The QlikView Management Services API (QMS API) is an officially supported web service based API to get access to functionality behind QlikView Server and QlikView Publisher. Using the QMS API everything which can be done within the QlikView Mangement Console (QMC) can also be accomplished programmatically (and much more!!!).

In my opinion the QMS API is the most beautiful API QlikView offers (probably because it is one of the newest ones …). But at the same time I only see a few partner solutions available using the possibilities of this API. Really wondering why!

While I am using the QMS API quite often, to be honest I have never found the time to write some very basic articles explaining the QMS API.

Basic Introduction

Fortunately my colleague Joe Bickley has found the time to write some excellent articles which are perfect starting to work with the QMS API:

Other Articles & Resources:

Here are some other collected resources related to the QMS API:

EDX Related Resources:

Bookmark and Share

Tags: , , , ,

QlikView Extension – D3 Animated Scatter Chart

The Animated Scatter Chart Extension is based on the excellent charting library D3js.org and a recreation of Gapminder’s Wealth & Health of Nations, made famous by Hans Rosling’s memorable 2006 TED talk, by Mike Bostock.

Motivation

The range of use of this chart type is certainly limited but it is perfect to visualize the transition of two KPIs over time (years).

If you are interested in seeing the extension in a live demo, visit one of my previous posts.

Screenshots

Animated Scatter Chart - Example

Download & Installation

Installation of the QlikView extension is straightforward, there is nothing special to take care of:

Extension Configuration

There are some properties which can be set for the “D3 Animated Scatter Chart” extension (examples below are set on the sample chart above).

Data Options

Animated Scatter Chart - Data Properties

Property Description Example
Primary Dimension Primary dimension for the bubbles. [Country Name]
Dimension Grouping Secondary dimension used for color grouping. Region – will color all countries according to the given region.
Year Field, containing the Year value. Year
X-Axis Measurement Measurement on X-axis Sum(BirthRate)
X-Axis Label Label of the X-axis. Birth rate, crude (per 1,000 people)
X-Axis Type Type of X-scale (Linear is default). Linear or Logarithmic
Y-Axis Measure Measurement on Y-axis Sum(DeathRate)
Y-Axis Label Label for the Y-axis. Death rate, crude (per 1,000 people)
Y-Axis Type Type of Y-scale (Linear is default). Linear or Logarithmic
Bubble Size Measurement of definition the bubble size. Sum(Population)

Chart Layout & Behavior

Animated Scatter Chart - Chart Layout & Behavior

Property Description Example
X-Axis Minimum You can set the maximum of the X-axis either explicitely or it will be calculated dynamically (in this case set the value to 0.
Note: For performance reasons it is recommended to pass this value using a QlikView expression.
Max(BirthRate)
Y-Axis Minimum You can set the maximum of the Y-axis either explicitely or it will be calculated dynamically (in this case set the value to 0.
Note: For performance reasons it is recommended to pass this value using a QlikView expression.
Max(DeathRate)
Year Size Size of the Year label in pixel. 100
X-Label Font Size Font size for the X-axis label in pixel. 10
Y-Label Font Size Font size for the Y-axis label in pixel. 10
Transition Transition duration in milliseconds, 10000 is default. 10,000
Show Replay Button Define whether the replay buttons should be shown or not. true/false

Example Application

I have created a more advanced example application where you can select the measurements for the X-axis, Y-axis and the bubble size within the QlikView application using only list boxes in QlikView.

Animated Scatter Chart - Advanced Usage

The sample QlikView application can be downloaded from GitHub.

Bookmark and Share

Tags: , ,