1 2 3 Previous Next

Qlik Design Blog

420 posts

While ago I wrote a simple tutorial on how to connect to Trello API and get the lists and cards into Qlik SenseTrello and Qlik Sense.

 

Today I will go one step further and add more fields into Trello so we can import them into sense and use them as filters. I will use the labels and due dates.

 

I like to use labels to highlight the importance or urgency of each project. So I named all of the labels as:

2017-07-19 08_19_31-_ SaaS Demo on Qlik - Demos & Best Practices _ Trello.png

 

So in one of my cards, I have given it a label of normal and I have added a due date for today which I also marked it as complete. So, this is how my card should like

 

2017-08-18 16_26_22-_ Qlik Design Blog on Qlik - Demos & Best Practices _ Trello.png

 

Now lets go to my Qlik Sense and try to re import the cards.

 

I have changed the api path from last time to :

https://api.trello.com/1/boards/[board-id]/cards?fields=all&members=true&key=[key-id]&token=[token-id]

 

Here is my load script

 

LIB CONNECT TO 'Demos - Trello-cards';

RestConnectorMasterTable:
SQL SELECT 
"id" AS "id_u1",
"name" AS "name_u0",
"idList",
"url",
"due",
"dueComplete",
"__KEY_root",
(SELECT 
"id",
"idBoard",
"name",
"color",
"uses",
"__FK_labels"
FROM "labels" FK "__FK_labels"),
(SELECT 
"id" AS "id_u0",
"avatarHash",
"fullName",
"initials",
"username",
"__FK_members"
FROM "members" FK "__FK_members")
FROM JSON (wrap on) "root" PK "__KEY_root";

[labels]:
LOAD [id] AS [trello.label.id],
[idBoard] AS [trello.board.id],
[name] AS [trello.label.name],
[color] AS [trello.label.color],
[uses] AS [trello.label.uses],
[__FK_labels] AS [__KEY_root]
RESIDENT RestConnectorMasterTable
WHERE NOT IsNull([__FK_labels]);

[members]:
LOAD [id_u0] AS [trello.member.id],
[avatarHash] AS [trello.member.avatarHash],
[fullName] AS [trello.member.fullName],
[initials] AS [trello.member.initials],
[username] AS [trello.member.username],
[__FK_members] AS [__KEY_root]
RESIDENT RestConnectorMasterTable
WHERE NOT IsNull([__FK_members]);

[root]:
LOAD [id_u1] AS [trello.card.id],
[name_u0] AS [trello.card.name],
[idList] AS [trello.list.id],
[url] AS [trello.card.url],
//[due] AS [trello.card.due],
    Date([due],'MM/DD/YYYY') as [trello.card.due],
[dueComplete] AS [trello.card.dueComplete],
[__KEY_root] AS [__KEY_root]
RESIDENT RestConnectorMasterTable
WHERE NOT IsNull([__KEY_root]);

DROP TABLE RestConnectorMasterTable;

 

If everything works well you should be able to get all of your cards in the QVF. Now, lets add the filters for priority and completed

2017-08-18 16_43_49-.png

 

That's it!

 

Yianni

einsteinshow.jpgIn this week's Qlik Design Blog I am pleased to share some tips from our own Mitul Vadgama of our Qlik Consulting Services team.  Mitul was recently working at a customer site when he noticed something that seemed a bit off when analyzing the customer's data. On the surface after loading the data everything appeared fine - but once they started performing selections, Mitul was able to identify the specific cause with the help of Qlik's Associative Difference, the elusive <NULL> value.

 

The Problem

 

The customer's data model had about 300+ fields with a number of these fields being of a nominal data type (also known as categorical data). Put simply, I like to describe nominal data as the attributes in the data that don't carry a numerical value. Examples of nominal data are as follows:

 

 

nominal-scales.png

 

Mitul found that when business users were selecting values in a nominal field it gave the correct result, however when they performed advanced selections such as using the the Select excluded option available in a select list, the results did not match up against what was expected. Thanks to Qlik's Associative Difference they were able to quickly and easily identify that <NULL> values were being excluded when the customer performed a Select Excluded selection. Yes, I know that sounds weird, the Select excluded option excluded <nulls> from the exclusion selection. (read-on and watch the quick video so this makes more sense to you )

 

Click to enlarge image

 

The Fix

 

One way is to use the NullValue variable and NullAsValue statement set in the Data Load Editor settings.  (Qlik Help)

 

Syntax: 

Set NullValue='<NULL>';

NullAsValue Field1, Field2;

 

In our example data we have <null> values in the StateProvince and OfficeStateProvince fields both in the Customers, and Employees tables. In the image above you can see that the <null> value is also not select-able in the filter pane.

 

Example:

 

Set NullValue='<Unknown>';
NullAsValue StateProvince, OfficeStateProvince;





 

After adding these settings to the Data Load Editor we were able to get the correct results as the <null> values were now being taken into consideration.

 

Click to enlarge image

 

Companion Video: Replacing Null Values in Multiple Fields

 

NOTE: To increase resolution or size of the video, select the YouTube logo at the bottom right of the player. You will be brought directly to YouTube where you can increase the resolution and size of the player window. Look for the 'settings' gears icon in the lower right of the player once at YouTube.

 

We hope this post has shown you another efficient way to handle <null> values in your Qlik application.

 

I'd like to thank Mitul for his valuable contribution to the Qlik Design Blog.

 

mitul.png

 

 

 

About Mitul: Mitul is a member of our Qlik Consulting Services team in the UK. He has worked on a variety of consulting projects using both Qlik Sense and QlikView with many enterprise customers. His passion is transforming data into valuable business insights, knowledge sharing, and enabling customers to get the most value out of Qlik products.

 

 

 


 

Can't see the video?

 

Download the .mp4 and watch from your computer or mobile device.

Continuing with the description of the new charts available in the Qlik Sense June 2017 release, today is the Box plot’s turn.

 

The American mathematician John W. Tukey introduced the box-and-whisker plot (called simply a box plot) in his 1977 book, "Exploratory Data Analysis".

 

Like the Distribution plot, the Box plot is a histogram-like method of displaying data and is appropriate to represent the degree of dispersion, skewness, and whether there are potential unusual observations in the data set. It’s particularly useful for comparing distributions between several sets of data, short of having several histograms close to each other so you can compare across them. The data center, spread and overall range are immediately apparent for each data set.


In my previous post about the distribution plot, I used an example data set containing data for 3 salespersons recording their monthly sales data. I'll reuse that data to illustrate how the box plot works.


1.png



A Box plot will typically help us to visualize 5 numbers, the statistical median represented as a horizontal line inside the box, the box ends show the first and third quartiles values. The whiskers indicate the range of the data and they are represented as horizontal lines ending in a small vertical line. Whiskers extend to the farthest points that are not outliers. Depending on the box plot configuration you choose, a provision is made for the representation of extreme values, typically upper/bottom quartile range +/- 1 x interquartile range or IQR. Additionally, outliers or extreme values are represented with dots.


2.png


Some general observations about our salespersons’ box plots:

  • The box plot is comparatively short – see Sheri. This suggests that overall monthly sales have a high level of similarity with each other.
  • The box plot is comparatively tall – see Dani. This indicates Dani’s monthly sales are quite different across the year.
  • The box plot is skewed – see Dani. There are more data points on the left/bottom (toward lower values), most of Dani's sales are small amount of sales.


To get the chart working in your Qlik Sense app it only requires one dimension (add a second dimension to compare across it) and one expression. Qlik Sense's new Box plot offers three standard presets, standard (Tukey), percentile-based, and standard deviation. For those of you with special needs or for those interested in learning more about fine tuning your chart, there’s a manual mode that give us full control over each one of the chart elements.


6JiB6eH.png


Enjoy it.

Arturo (@arturoqv)


In the this video edition of the Qlik Design Blog, I show you how I use the Web File connector to combine retro-video game pricing data (Sega Master System) with my own local video game collection. The Web File connector is available in all Qlik Sense products, including the free version of Qlik Sense Cloud (Basic). It is commonly known that the Web File connector is fairly simple to use, however I wanted to demonstrate its use in a fun and meaningful way as well as provide additional information that will help you understand how and when it can be used and what to look out for. Enjoy!

 

8-7-2017 2-34-02 PM.png

Sega Master System Value Analysis - Mike's Collection - Qlik Sense App

 

The video is 16 minutes long. I first show you how to simply use the Web File connector with a internet based source via HTTP:// (Current Master System Video Game Prices - GameValueNow.com) and then build a few Qlik Sense KPIs. Then I expand on possible issues you COULD run into with Web File, as well as an example using FTP://, then I conclude with a simple demonstration analyzing some of my video game value data. Analysis result: Purchasing a number of the cartridge titles separately from the cases and manuals and the combining to re-sell may prove profitable. Enjoy!

 

Regards,
Michael Tarallo (@mtarallo) | Twitter

 

 

 

Qlik Sense Cloud - Using Web File

 

Time Index:

• 0:00 - 8:30 - Intro and using the Web File connector

• 8:30 - 10:38 - Additional information to be aware of: https://youtu.be/HEcYYn1hrrk?t=8m30s

• 10:38 - 11:40 - Using FTP with inline credentials: https://youtu.be/HEcYYn1hrrk?t=10m41s

• 11:40 - 12:46 - REST connector information: https://youtu.be/HEcYYn1hrrk?t=11m40s

• 12:46 - End - Fun information / demo using finalized Video Game pricing analysis app: https://youtu.be/HEcYYn1hrrk?t=12m52s

 

NOTE: To increase resolution or size of the video, select the YouTube logo at the bottom right of the player. You will be brought directly to YouTube where you can increase the resolution and size of the player window. Look for the 'settings' gears icon in the lower right of the player once at YouTube.

 

Sample Qlik Sense app and data attached in case you wanted to play.
Web File Help document: Loading data from files ‒ Qlik Sense

 

Can't see the video?

 

Download the .mp4 and watch from your computer or mobile device.

I've seen a few people asking recently if and how they can use webpack to build their mashup. The answer is yes, and I'm gonna discuss a few implementation details and provide some example code.

 

So to use the Qlik Capability APIs, you're probably already aware that you need to load the Qlik Capability API code, which includes loading a custom require.js file, and then requiring the qlik.js file through the loaded instance of require.js. The thing is, there's really no way to get around this, that's how the Qlik Capability APIs are loaded.

 

But you can still use webpack for all of your own project code, you just have to decide how you are going to load the custom require.js file and where you'll use the require.js instance to require qlik.js. This is how I've been doing it.

 

First, I load the Qlik custom require.js file in a script tag in the head of the document. Can you get fancier if you'd like with something like the script-loader, yea sure you can, but the goal here is to load that Qlik custom require.js file in a global context, and to me the simplest way to do it is to just include it in a script tag in the head of my html document.

 

Then, you'll need to set the require.js config and require the qlik.js file through require.js somehow. The trick here is that the require.js instance can be accessed with window.require. Also, since requiring files with require.js is asynchronous, and you'll almost certainly want to return some stuff when qlik.js is done loading, it's useful to use a promise here. This is what my module looks like for this in ES2015 -

 

webpackcapabilityconfig.png

 

You'll notice the config object which you should be used to for mashups, then how I'm using window.require.config to set the require.js config. Also, I explicitly set the path for 'qlik' because I find this helps avoid some errors, especially with regards to loading extensions. Then, I export a promise which resolves with the app from the openApp() method as the value. You can resolve this promise with the 'qlik' object, or multiple apps, or whatever your needs are, but for myself, most of the time, I'm just opening 1 app and I just resolve the app.

 

So in summary, if you want to use webpack with the Capability APIs then the Qlik custom require.js file will need to be loaded in a global context in some way, and then you'll be able to access the require.js instance on 'window.require' (but not just simply 'require' since webpack will use that keyword).

One of the new enhancements in the June 2017 release of Qlik Sense is the ability to define colors in dimensions and measures in the master items library.  When creating a dimension or measure in master items, users now can specify a color that will be used for the dimension or measure.  This makes it easier for users to be consistent in their color choices throughout their app.  Every time the master item is used, the specified color will also be used.

 

I found this new feature helpful when building out visualizations for an app.  The design required that measures that showed the actual number be a rusty color while standard measures appeared as gray.  I could do this by selecting the color I wanted to use for each measure when I created the master item.  Let’s take a closer look at how I added the coloring in the objects below.

 

charts.png

 

The 3 KPIs on the left are measures.  In each one, I specified the color when I created the measure.  In the image below, you can see the new color option when you create/edit a dimension or measure.

edit measure.png

 

When I use the measure in a KPI, the color is automatically set since I specified it in the master item.  In the Cost Variance KPI at the top, I wanted to add conditional coloring instead of the color I specified in the measure so I selected the option to not use the library in this object as seen below.  This flexibility allowed me to take advantage of the conditional coloring when needed.  Note: The ability to turn off “Use library” is not available in all objects.

 

Color.png

 

In the combo chart, the bars and lines were colored based on the measure color giving me the ability to color the bars and line in the chart exactly as the design required.  While this may seem small, it is a huge enhancement for users and expands the design capabilities of Qlik Sense.  The color palette also provides several different color options so apps can be branded as needed.  To learn what else is new in Qlik Sense June 2017, check out Michael Tarallo’s blog.

 

Thanks,

Jennell

What is Advanced Analytics?

 

Gartner defines Advanced Analytics as:

 

The autonomous or semi-autonomous examination of data or content using sophisticated techniques and tools, typically beyond those of traditional business intelligence (BI), to discover deeper insights, make predictions, or generate recommendations.

 

What resonates with me here are the key words "sophisticated techniques and tools" - these can mean statistical analysis environments, (perhaps R), or general purpose and machine learning program languages (Python / MATLAB) or even specific operations used for pattern search (regex), just to name a few. So what does this have to do with Qlik? Well, let's say you have an investment in R, Python, MATLAB or even something custom you created for your advanced analytics activities. You may want to reuse or apply algorithms from those systems to data available in your Qlik environment, taking advantage of Qlik's associative model as well - how would you do that? Previously, you might have to export the data from those systems and then import and associate it within Qlik. Well not any longer now that we have Qlik Advanced Analytics Integration.


What is Qlik Advanced Analytics Integration?


7-20-2017 5-40-37 PM.png

Architecture

 

Simply put, Qlik Advanced Analytics Integration (AAI) enables direct server to server data exchange between Qlik Sense and 3rd party calculation / analysis engines via a connector or what we also call a plugin. So for example, a specific forecasting function that is part of an R library can now be called from within Qlik script and chart expressions and calculated on the fly. Passing the results back to the Qlik analysis engine and subsequent visualizations.

aa1.gifi.e. - Holt-Winters Forecast / K-means Clustering - running on R

 

With the release of Qlik Sense June 2017, Qlik specifically now supports the APIs that can provide connectivity to such engines. Allowing you to build virtually any connector to any system. The Qlik Sense engine is also now aware of specific expressions to directly call the 3rd party engine via these connectors. To kick things off we have provided two open source connector projects that enable connectivity to R and Python. (there are compiled binaries for R available here)

 

To learn more about Qlik Advanced Analytics Integration, join the conversation and obtain resources and community support please visit the Advanced Analytics Integration forum.

 

Take a look at this 60 second video that provides a quick overview of Qlik Advanced Analytics Integration:

 

 

 

 

NOTE: To increase resolution or size of the video, select the YouTube logo at the bottom right of the player. You will be brought directly to YouTube where you can increase the resolution and size of the player window. Look for the 'settings' gears icon in the lower right of the player once at YouTube.

 

Regards,

Michael Tarallo (@mtarallo) | Twitter

Qlik

 

Can't see the video?

 

Download the .mp4 and watch from your computer or mobile device.

Yianni Ververis

Trello and Qlik Sense

Posted by Yianni Ververis Jul 21, 2017

Are you a Trello user and want to start integrating your cards with Qlik Sense and getting some statistical analysis out of your projects' workflow? Here I will show you how to connect to you boards and get your lists and cards into Qlik Sense.

 

First, you need to have a developer’s key and an authorization token, both generated for you by trello.com.

  • To get you Key you need to go to https://trello.com/app-key
  • To get your Auth token, at the same page, right under your key, there is a link "Token". Click on that and it will take to a page that asks you "Let Server Token use your account?". You need to click "Allow" and then copy the key.

 

Then, lets go to Qlik Sense and setup our Rest Connector to get our data. All of the desired template links are in Trello Developers. Here I will just create a simple connection that retrieves all of the lists and their cards from a single board

  • Go to your "Data Load Editor"
  • Create a new section and name it Trello
  • Create a new connection using the "Qlik REST Connector"
  • In the url add "https://api.trello.com/1/boards/[board_id]/lists?cards=open&card_fields=name&fields=name&key=[key]&token=[token]". Don't forget to substitute the key and token that you got above. To get your board id, simply open your trello board and go to the url. It should be in the form of "https://trello.com/b/[board_id]/[your-board-name]".
  • Method is "GET"
  • Under Authentication select "BASIC" and add your username and password, give it a name and save it.
  • 2017-07-19 07_49_08-Qlik Sense Desktop.png
  • Click on "Select Data" and select what you want to get. If you select "root", you will get only the lists. If you select cards too, then you will get all of the lists with their cards
  • The REST Connector should generate the load script for you and should look something like this

 

LIB CONNECT TO 'Trello-board-list';

RestConnectorMasterTable:
SQL SELECT
"id" AS "id_u0",
"name" AS "name_u0",
"__KEY_root",
(SELECT
"id",
"name",
"__FK_cards"
FROM "cards" FK "__FK_cards")
FROM JSON (wrap on) "root" PK "__KEY_root";

[cards]:
LOAD [id] AS [card_id],
[name] AS [card_name],
[__FK_cards] AS [list_key]
RESIDENT RestConnectorMasterTable
WHERE NOT IsNull([__FK_cards]);

[root]:
LOAD [id_u0] AS [list_id],
[name_u0] AS [list_name],
[__KEY_root] AS [list_key]
RESIDENT RestConnectorMasterTable
WHERE NOT IsNull([__KEY_root]);

DROP TABLE RestConnectorMasterTable;






 

The end result should be something like :

2017-07-18 10_48_40-Qlik Sense Desktop.png

 

There are a lot of possibilities here. You can combine this with some power ups/custom fields that you would like to track and get more detail into your visualizations.

 

This is it!! Now with few steps you can add your lists and cards intro Qlik Sense and create charts or KPIs based on these data.

 

https://branch-blog.qlik.com/trello-and-qlik-sense-2da6e1912967

 

Yianni

gio.png

 

Happy Tuesday everyone! - I have the pleasure of introducing our newest contributor to the Qlik Design Blog, Giuseppe Panella. I like to call him Gio! Gio has joined Qlik in 2015 after the acquisition of NPrinting by Qlik. He is now part of the Product Content and Media team as an interaction designer working on the production of videos for the Qlik Help channel managed on YouTube. Gio and I share the same love for video production at Qlik and will be teaming up to bring you the latest news, features, capabilities and innovation from time to time via the Qlik Design Blog and other channels. Make sure to follow / subscribe to get the latest updates on our posted content. Gio is now producing a video series called Tuesday Tips and Tricks - with each short clip describing a particular capability across the Qlik product line. Today's clip shows you how to use a Qlik Sense extension available from Qlik Branch that enables Qlik Sense to provide an On-Demand Report capability in combination with NPrinting. (This capability is native in QlikView.)  You can learn more about this feature here. http://branch.qlik.com/#!/project/58be6fc151be1c2744fb32a0 Future Tuesday Tips and Tricks will be promoted on the Qlik Design Blog from time to time and will also be made available in the Help Channel playlist. Enjoy!

 

 

 

Tuesday Tips and Tricks

 

NOTE: To increase resolution or size of the video, select the YouTube logo at the bottom right of the player. You will be brought directly to YouTube where you can increase the resolution and size of the player window. Look for the 'settings' gears icon in the lower right of the player once at YouTube.

 

Can't see the video? - You can download the attached .mp4 file to play on your computer or local device.

The Qlik Sense June 2017 release came with a bunch of new visualizations, distribution plot is one of the new objects available to drag and drop into Qlik Sense. Let’s use an example to check what a distribution chart can tell us that was previously hidden from our eyes.

 

I’m going to use a very simple example of sales data, it contains 3 sales rep and monthly sales that extends over a year. We want to see how our reps are preforming over the year by observing some execution indicators such as total sales and average sales.

 

table.png

 

In our not-so-random example data, sales are even for the sales team. As you can see in the picture below, their aggregated numbers are almost identical.

 

barchart.png

 

Average is just not enough to see how sales rep are performing, we need more granularity if we really want to understand how the sales process works. To do so we could try to include months and maybe use a different visualization object like a line chart.

 

linechart.png

 

Line chart will help us to see sales with a temporal component, I see how both Jerry and Sheri have a very regular sales process over the months while Dani's go all over the board with excellent months and not so great ones.

 

Distribution plot can help me to get a better picture of our sales by giving us a glance of data dispersion.

 

distributionplot.png

 

I see that despite having the same yearly sales amount and sales average the actual distribution over time is quite different from each other.

 

Jerry has tight sales performance month to month with all the points(months) falling in a compact cluster. Sheri meanwhile has a very tight bucket of dots a little over $150 but also a couple of months that could be considered as outliers. That is valuable information that wasn’t obvious only attending to the line chart.

 

Dani's sales don’t follow the pattern described by the other two individuals. For Dani, monthly sales range from $0 to $600 is either an excellent or a terrible month. Any company will be happier with a more consistent sales performance and our imaginary company is no exception to that. By learning how each one of the sales team performs we can take the necessary actions to help Dani to be more reliable.

 

As we have seen similar yearly sales and identical sales average could hide some valuable information, there’s a story in your data that needs to be discovered.

 

Enjoy it,

Arturo (@arturoqv)

In this edition of the Qlik Design Blog, Denise is back discussing some additional connectivity updates for Qlik Sense Cloud Business and Qlik Sense Cloud Basic.

 

What's New

 

Qlik Sense Cloud Business users have been eagerly waiting for direct connectivity to an on-premise Microsoft SQL Server. We’ve seen rapid adoption of Qlik Sense Cloud Business’s connectors to cloud data sources – Salesforce, web connectors, etc. – over the past few months, but we know that just because you’ve moved your analytics to the cloud, you haven’t necessarily moved all of your data there. In this article you will find how to set up the connector and to learn about few other Qlik Sense Cloud updates.

 

MS SQL Server in Qlik Sense Cloud Business

 

The process of setting up connectivity between Qlik Sense Cloud Business and a MS SQL Server is similar to what you’ve done to set up other connectors. A prompt will ask you to enter the appropriate host information (server host name, port number, available database, and credentials) to establish the connection and allow access passed the firewall. Check out Mike Tarallo’s video below to see how he set up connectivity between his SQL server and the Qlik Sense Cloud Business environment (thanks Mike!). And, don’t forget, you can use the automated data refresh functionality to update your Qlik Sense apps from your MS SQL data!

 

 

Here are a few other updates and improvements that have also been introduced to the Qlik Sense Cloud offering:

 

Web File Connectivity

 

You might already have learned a trick to use the REST Connector in Qlik Sense Cloud Business to directly connect to web files, but we’ve now added a separate web file connector so that users have a much simpler and easier way to connect to an unsecured web file. Basically any file source that Qlik Sense can connect to (HTML tables, csv, xml, xls, etc) can also be made available over the web via HTTP and even FTP. Please refer to our online help to learn how to configure these types of connections. As an added bonus, this connector is now available in both Qlik Sense Cloud Business and Qlik Sense Cloud Basic. Qlik Sense Cloud Basic users now have another way to load data in addition to uploading files allowing them to freely experience how the associative model works to uncover insights across multiple data sources.

 

App Governance

 

When using Qlik Sense Cloud business you can have up to 50 users within a workspace. With up to 50 users viewing and editing multiple apps, group members often want transparency around when apps were accessed and by whom. We’ve added a “recent history” data stream to apps in the collaborative workspace so users have visibility into group activity, making governance and communication even easier to manage. Simply click on the “i” icon in any app to view the details:

 

app_gov.png

 

Data Wizard Redesign

 

As you’ve been building out new apps, you probably noticed that the Data Wizard looks a little different lately. All of the same functionality exists – upload or attach files, access to Qlik DataMarket, etc. - but we’ve listed options differently for better usability. The biggest improvement is that all available connectors will be visible on the screen, which will be particularly helpful when we launch the next group of connectors on the way – check back soon!

 

data_wiz.png

 

NOTE: To increase resolution or size of the video, select the YouTube logo at the bottom right of the player. You will be brought directly to YouTube where you can increase the resolution and size of the player window. Look for the 'settings' gears icon in the lower right of the player once at YouTube.

 

denise.pngDenise LaForgia is a Senior Product Marketing Manager focused on Qlik cloud solutions. On an occasional basis, Denise will share updates on our Qlik Sense Cloud solutions on the Qlik Design blog so please subscribe and stay tuned. You can also download the videos mentioned in these blog, see the .mp4 attachment on the bottom.

With the Qlik Sense June 2017 release comes server side extensions, which allow you to extend the Qlik built-in expression library with functionality from external calculation engines. We've released an open source server side extension that enables interaction with R, and if you use the R-Plugin, you know that you have to start Rserve.exe and SSEtoRserve.exe, then restart the Qlik Sense Engine Service. What I'm going to walk you through is how to setup Rserve.exe and SSEtoRserve.exe to run as services, and then make the Qlik Sense Engine Service depend on those services so that they start whenever the Qlik Sense Engine Service starts.

This post is for people who have already installed the open source R-Plugin and would like to run the plugin as a Windows service instead of starting it manually. If you haven't gotten started with the open source R-Plugin, and would like to, please check out this guide sse-r-plugin - get started.

 

The first thing we need is NSSM. Download and unzip, then open a command prompt with admin privileges and change directory to  <path-to-nssm>\nssm-{x}.{x}{x}\win64.

nssm.png

 

Now we need to install our 2 new services. In the command prompt, enter nssm install RserveService. An interface will pop up where we can define the service. Enter <directory>\Rserve.exe into "Path", and set "Startup directory" to the directory Rserve.exe is in. Then, go to the "Environment" tab, and enter PATH=%Path%;C:\R\R-3.4.1\bin\x64 (assuming you have R-3.4.1 installed in the C:\R directory, otherwise make adjustments as necessary). Now click the "Install service" button.

rservepath.pngrserveenv.png

 

Next, we need to install a service for SSEtoRserve.exe. So, again, at the command prompt enter nssm install SSEtoRserveService, and then enter <directory>\SSEtoRserve.exe into "Path", and set "Startup directory" to the directory SSEtoRserve.exe is in. Now click "Install service".

ssetorserve.png

 

Now that the two services are installed, we can set the Qlik Sense Engine Service to depend on them, so that any time the Qlik Sense Engine Service starts, these services will be available. Back at the command prompt enter nssm edit QlikSenseEngineService. Go to the "Dependencies" tab and add RserveService and SSEtoRserveService, each on their own new lines under the already existing QlikSenseRepositoryService.

engineservice.png

 

All of you have to do now is restart the Qlik Sense Engine Service and you should be good to go.

Jennell McIntire

Rank Function

Posted by Jennell McIntire Jun 30, 2017

Over the years, I have seen the Rank function used in various expressions.  Recently, I was working on a Broadway Shows project where we wanted to show the rank in a bar chart before the label adding a numeric indicator of how a show ranked.  You can see what I am referring to in the bar charts used in the Broadway app.  The bar chart below is an example of one of the charts.  We added the rank before the show name on the y-axis label.

Broadway.png

In this blog, I will discuss how the Rank arguments can be used to change how the rank is presented.  To do so, I will use a simplified data set to illustrate how the rank can be displayed.  Let’s start by defining the Rank function.  The Rank function is a chart function and is defined in Qlik Sense Help as:

 

Rank() evaluates the rows of the chart in the expression, and for each row, displays the relative position of the value of the dimension evaluated in the expression. When evaluating the expression, the function compares the result with the result of the other rows containing the current column segment and returns the ranking of the current row within the segment.

 

For charts other than tables, the current column segment is defined as it appears in the chart's straight table equivalent.

 

Syntax:

Rank([TOTAL] expr[, mode[, fmt]])

 

Originally, I used the Rank function without any arguments.  This will rank the products by their sales and display it before the product label.

Rank no arguments.png

Rank no arguments chart.png

By default, with no arguments for mode and fmt, the Rank function will show the lowest and highest value displayed like a range as seen in the chart above.  But what if you want to show a single number for the rank where Product_B and Product_J would show 1 as the rank for both projects since they both tied for first place.  This can be accomplished by using the mode and fmt arguments.  Mode can take values 0 – 4 and controls which rank is shown for each row for example show the lowest rank, the average rank or the highest rank.  The fmt argument takes values 0 – 2 and controls how and where the rank is displayed.  You can find the detailed description for each setting in Qlik Sense Help.

 

For the Broadway app, I set the mode to 4 and the fmt to 1.  If I do this with this data set, I will get a chart like this:

Rank arguments.png

Rank arguments chart.png

The mode argument is 4. This will show the lowest rank on the first row, then increment by one for each row.  The fmt argument is 1 and this will show the low value on all rows.  When there is a tie, only the lowest rank will be displayed on the respective rows.

 

There are not always ties when using the Rank function but when there are, the Rank function provides options for how to handle the display of the rank.  This was something I never had a need for until now but I found it to be very valuable so I thought I would share what I have learned.  The next time you use the Rank function, try out the various arguments to find the display that works best for your app.

 

Thanks,

Jennell

2laurie.pngThis week I am honored to introduce our newest guest blogger, Laurie Chan-Lam. Laurie is one of our talented architects in Qlik R&D who has personally worked on one of Qlik's unique and game changing capabilities, Smart Search. She recently was inspired by Mitul's blog post on Controlling Fields Shown in Smart Search - when encountering some questions regarding the possibility to create the Smart Search Index, BEFORE the actual search was initiated. (If you are not familiar with Qlik's Global and Visual Smart Search capabilities - you can review a few videos on the topic here)

 

 

Mitul's blog Controlling Fields Shown in Smart Search explains how you can configure what fields are searchable when creating the Search Index. So to recap, in order for the Smart Search capabilities to present the desired information to the user when using Smart Search, Qlik Sense needs to index it. With previous versions of Qlik Sense, the search index was created when first requested, therefore taking an additional amount of time before the results were displayed. Starting with Qlik Sense 3.1, you can now chose to create the search index at reload time as explained in the documentation by using the system variable CreateSearchIndexOnReload.

 

Follow these steps to learn more how to achieve this:

 

 

How can I turn on/off the creation of the search index at reload time?

In order to turn on the creation of the search index at reload time, several criteria need to be met:

  1. The Engine needs to be enabled to support the creation of search index at reload time. This can be done via a setting in the QMC. (Qlik Management Console)
    1. Go to menu items Engines
    2. Edit the node you want to work on
    3. Tick the Advanced menu
    4.   Tick the "Enable creation of search index on reload" box

 

ww.png

 

Then in the app in the Data Load script:

 

The app needs to have the System Variable Set CreateSearchIndexOnReload=1; This statement exists by default in Qlik Sense. Note that the statement of Set CreateSearchIndexOnReload=0; will allow the user to delay the creation of the search index at search time.


xx.png

 

Why should I create the search index at reload time?

Creating the search index at reload time makes the search index ready from the first use. Therefore there is no need to wait for the index to be created. The first use of Smart Search after the initial  reload will be as fast as the following ones.

 

Some exceptions:


Session apps

By definition, session apps are not persisted. Therefore, the corresponding search index shouldn't be persisted and Qlik Sense doesn't index at reload time for session apps.

 

Synchronized persistence

If the reload node is not the node on which the user is searching, then the creation of the search index on the reload node needs to be disabled. If you do not disable this, an index is created when you reload, which consumes time and disk space to no advantage


Thank You for reading.


Laurie Chan-Lam

Qlik Architect

A while ago I blogged about 2 of our most beautiful mashups in the Demo Team, Salesforce and CIO dashboard.

 

Case study: Salesforce mashup

Jazzing up your Mashups

 

After I was asked by many for the source files, here are the 2 github pages

 

GitHub - yianni-ververis/CIO: CIO mashup created by the Demo Team

GitHub - yianni-ververis/Salesforce: Salesforce Mashup created by the Demo Team

 

Upload the qvfs on your server and put the ids into the project.json file. Then in the command line type "npm install" to install all the required libraries and "gulp" to build and run the project.

 

Depending of the version of Qlik Sense you are running, most likely you will get CORS errors and some fonts may not load up. If you have valid certificates for localhost then under ./gulp-tasks/server.js comment out lines 15-18

 

Mashups:

https://webapps.qlik.com/salesforce/index.html

CIO Dashboard

 

Best,

Yianni

Filter Blog

By date:
By tag: