Skip to content

September 2019

The summer has passed in the northern hemisphere and it's time for a new Qlik Core update. There are a number of updates in this edition that we hope you will like, some of the key highlights include:

New license key format

We're migrating to a new license format, effectively dropping the serial and control number in favor of a license-key. For those of you using a trial license, you will get the new key when you apply for a renewal and existing customers will receive a new key.

Please read more about how to apply the new license key in the core-using-licenses repo.

Release of enigma-go 1.0

Similar to enigma.js, enigma-go is a library that helps you communicate with a Qlik Associative Engine when creating golang projects. Examples of use may be building your own analytics tools, back-end services, or other tools communicating with a Qlik Associative Engine.

The library has been alive for quite some time by know and is being used in a couple of external tools. Since it has been stable for quite a while, we decided to move the library into a stable 1.0.0 release.

If you are interested in how it can be used, take a look at corectl, a command line tool written in go, which uses this as communication layer to the Qlik Associative Engine. There is also several examples in the repo for common use cases.

New corectl release

The new version 1.4.0 includes all the latest features. As always, you can get the latest by using brew upgrade, snap refresh or downloading from GitHub.

Some notable features are listed below.

Quiet flag

Are you into scripting? The new --quiet flag has been added to all commands returning an id (app, object, connection, ...). Instead of returning the whole table the command will return only the ids.

$ corectl connection ls --quiet
3d196c6e-cc87-4f0b-a4ab-48dabb9ffed7
f39601c0-70be-4e48-9a75-4085e69262fc
3718abde-ef0e-438b-8941-bd3185c33f6c
9c632be3-f844-466a-8546-3b56291215dc

This enables scripts like piping ids back to corectl in order to do multiple commands. As an example removing all connections in an app can be done by:

$ corectl connection ls --quiet | xargs corectl connection rm
Saving app...
App successfully saved

$ corectl connection ls
+----+------+------+
| Id | Name | Type |
+----+------+------+
+----+------+------+

Introducing context

Contexts store connection information such as engine url, certificates and headers, similar to a config file. The main difference between contexts and configs is that they can be used globally. Using the context you can quickly switch between different environments such as local, stage, production, Qlik Core and Qlik Sense Enterprise.

Use the context sub-commands clear, get, ls, rm, set, use to work with the context. Note that contexts have the lowest precedence. This means that e.g. an --engine flag (or an engine field in a config) will override the engine url in the current context.

As an example you can setup two contexts:

corectl context set testapps --engine localhost:39076 --comment "All my local test apps"
corectl context set deployment --engine wss://<qlik-sense-url>:4747 --certificates <certfolder> --headers "X-Qlik-User: UserDirectory=<userdir>; UserId=<userid>"
corectl context ls

and switch between them using the same load script file.

corectl context use testapps
corectl script set script.qvs --app test
corectl reload

corectl context use deployment
corectl script set script.qvs --app deployedapp
corectl reload

Support for alternate states

If you have been working with Qlik for a while you might have come across alternate state. This feature allows you to make different selections on the same dimension, and compare the selections in two or more visualizations. You can also use it in "set analysis" in order to compare expressions with different selections.

In corectl you manipulate the alternate states in the state command with the following actions add, ls and rm.

Other fixes

Together with the larger changes we also have the following improvements:

  • Added --limit flag to reload to limit number of rows to load
  • Performance improvements when creating objects
  • Sort ids alphanumerically
  • Fixed URL escaping in json files to improve readability of expressions.