Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi All -
Apologize for asking what may be a known to you all, but does Qlik provide API(s) for directly accessing the in-memory data store?
Thanks in advance!
Brian
Not for Qlikview afaik. There is an API for the Qlik Sense Engine that allows you to calculate with and retrieve data from the in-memory data store of Qlik Sense apps.
You can certainly gain access to the in-memory data of a running QlikView application both for an application you are running in single-user or on a server shared by many.
First there is the application's own internal Module/Macro that can be written in either VBScript or JScript. It use the QlikView Object Model to gain access to any part of the QlikView enviroment and data.
The QlikView object model expose a rich - but not very fast - API. This can be leveraged not only from the inside as mentioned first but also from the outside by any scripting or programming language that supports Windows Automation. So everything from a simple VBscript, JScript running from a .vbs/.js text-file external to the application and Microsoft Office (through VBA) to .NET languages or Python can connect to a .QVW (single-user) or to a server via the QVP-protocol. Any of these programming languages can control and automate QlikView in the way a user would do interactively and hide or show QlikView while it does so. The control is more extensive than what a user can gain via the user-interface.
Doing massive manipulation of data with Windows Automation without resorting to reloads is rather slow but apart from that you can really gain full control of the QlikView-application and integrate it with other applications that way.
Via the JavaScript API you can also gain access and integrate with QlikView server-applications in a number of ways through HTTP. It is not only limited to writing object extensions and document extensions.
And there is something called Dynamic Update and it can be used in several ways to change/update in-memory data. It is not well documented and it has some serious limitations - but as long as you stick to some sensible rules and thread very carefully it can be useful. The documentation is very slim. You can leverage it even in a regular QlikView applications by using Buttons/Text Boxes/Actions and doing INSERT, UPDATE and DELETE against the in-memory data-model. This can be employed from any Macro Module too (VBScript/JScript) and the external Windows Automation. Qlik themselves does not promote this and it might disappear in future version of QlikView. It is not supported in Qlik Sense.
There is an OCX-version of the Windows Automation too - which is mostly or maybe only used by OEM-partners.
Hope this is not too confusing - but if you have a more specific need I could certainly elaborate a little bit more on a specific approach...
HTH
- Petter
There is a lot of information to be found here on the community - for instance here:
Along with the proper installation of "Documentation and Tutorial" which is separately and freely downloadable for anyone you will get a QlikView Application that is a comprehensive documentation of the Windows Automation and OCX-API. It is called APIGuide.QVW (AFAIK last updated this January).
Hi Petter –
Thanks for the responses. Unfortunately, we require direct API access because OCX, as you mentioned in your note, will create a performance issue that we cannot absorb in the architecture we are putting together.
Thanks,
Brian
Then you probably should go for an in-memory external DB-solution that you can connect to QlikView via Direct Discovery. There are several in-memory closed-source and open-source solutions to pick amongst.
One of the newest partners to Qlik that connect quite well via Direct Discovery is JethroData. This leverage Hadoop and creates a solution that can be used in close integration with QlikView and Qlik Sense.
Look here: Qlik Sense and JethroData demo-site
A clarification. For QlikView, you can access the fieldvalues via API but you cannot access data tables row by row. The workaround is to create a chart or tablebox that contains the rows and fields you want. The API can read rows of a sheet object.
-Rob
Hi Rob,
Does QlikSense differ from QlikView in this regard? Is it possible to access data tables directly in the Qix database via the Qlik Engine API?
Thanks,
alessandra
P.S. Sorry that this thread is about QlikView not Qlik Sense but I am exploring access to data in both.
See my questionWhat are exactly Structs objects for?
You can create hypercubes -- dimensions & measures -- on the fly in Sense and then access that data. I don't know if direct table access is provided, but you can simulate the same with a hypercube.
-Rob