Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
This space offers a variety of blogs, all written by Qlik employees. Product and non product related.
By reading the Product Innovation blog, you will learn about what's new across all of the products in our growing Qlik product portfolio.
The Support Updates blog delivers important and useful Qlik Support information about end-of-product support, new service releases, and general support topics.
This blog was created for professors and students using Qlik within academia.
Hear it from your Community Managers! The Community News blog provides updates about the Qlik Community Platform and other news and important announcements.
The Qlik Digest is your essential monthly low-down of the need-to-know product updates, events, and resources from Qlik.
The Qlik Education blog provides information about the latest updates of our courses and programs with the Qlik Education team.
When building an app, there are certain functions that I use over and over again. This is the case when I need to add a Quarter field to my data model. I often have dates in my apps and sometimes I like to provide the user with a Quarter field so I thought I would share the script that I often use. Below is the script I always use to create a Quarter field in my data model.
When creating the Quarter field, I use the Ceil function. The Ceil function can be used in the script or a chart and it rounds a number up to the nearest multiple of the specified step interval. You cannot talk about the Ceil function without mentioning the Floor function. The Floor function does the opposite of the Ceil function by rounding numbers down. Both functions have a third parameter, the offset, which allows you to increase or decrease the result of the Ceil or Floor function by a specified value. Let’s take a look at some examples.
The syntax for the Ceil function is:
Ceil(x[, step[, offset]])
The Floor function does the same as the Ceil function except instead of rounding up, it rounds down. Let’s take a look at the same examples and see how the results vary.
The syntax for the Floor function is:
Floor(x[, step[, offset]])
So now let’s apply the Ceil function to determine the quarter from a date. The script I like to use is:
If we break this down, we first use the Month function to return the month number and then we divide that by 3 since there are 3 months in a quarter. So assuming the OrderDate is December 11, 2015, Month(OrderDate)/3 will return 4 (12/3=4). Then the Ceil function is used to round that number up. The script above also uses the Dual function so that we can display the Quarter as a string, Q4, with a numeric value of 4. This makes it easier to sort charts that use the Quarter field.
The Ceil and Floor functions provide rounding capabilities with the ability to set the step as well as an offset. If I had a cheat list of scripts I like to use, this Quarter script would be on the list. What would be on your list?
Thanks,
Jennell
Today’s corporate environment is global. QlikView application developers are required to support many regions and many languages. So how does a QlikView application developer handle multiple languages? Well, that depends on how the data is captured and the overall goal of the application developer. Let’s look at two scenarios.
Scenario 1: The developer only needs to translate the labels and textboxes within the application and not the actual data.
=Only({<Index={12}>} [$(=vDataLanguage)])
for all textbox and object captions that need to be translated.
Scenario 2: The data from which the QlikView application developer is developing is recorded in English but he/she needs to have some of the actual data translated into other languages.
=$(vIndustry).
That’s it! Easy, right? Well, it is a bit time consuming if you are trying to translate data in fields but translating text and labels is really not that difficult. I created a technical overview that walks you through the two scenarios mentioned in this blog as well as a third scenario which can be found here. This resource includes a How-To, sample data files and 2 QVWs.
Good luck with the translations! Lycka till med översättningarna! 翻訳で頑張ってください!
The latest Qlik Sense June 19 version ships with a nice new feature that should let anyone to embed or share a chart in style.
It’s simple, find the chart you want to embed and right-click on it, you should access to the context menu where you could for example see the data table for the chart you are looking at. In this case what we want to click on in that menu is the option called “Embed Chart”. Note if your screen mode is set to touch, you will find this option by touching in the vertical ellipsis (aka Kebab Menu) icon.
That will pop a window up with a nice preview of the chart and some options that are very handy.
You can customize how you can interact with the embedded object.
You can select if you want the user to be able to interact with the embedded object.
You can select if you want the context menu to be available when the embedded object is right-clicked.
You can select which language to use in menus for the embedded object.
You can select which theme to use for the embedded object.
You can choose if the user can make selections in the embedded object, and which selection state to show in the embedded object.
You can select to use the current selections in the app.
You can select to show the selections bar above the sheet.
You can select if you want the user to be able to make selections in the embedded object. You also need to enable Allow interaction.
You can select to clear all selections made in the app when the object is rendered.
You can select to apply a bookmark and use the selections defined in the bookmark. Bookmarking selections
When the page containing the embedded object is rendered, the initial selection state is defined by the order of execution and your settings.
When you make selections in the embedded object, they will be replicated in the app. If you select Clear selections on reload, for example, and use the embedded object, selections are cleared in the app.
Enjoy it,
Arturo (@arturoqv)
Data is used across all different types of organisations in every sector from banking to retail and healthcare to manufacturing. And as we all know, data is very valuable. When insights are understood and interpreted correctly, they can have a huge impact in cutting costs and creating efficiencies. But it’s not all about profit margins and revenue. Data can also be used to help solve some of the world’s most pressing issues.
Qlik.org is the Corporate Responsibility arm of Qlik and provides plenty of examples of how we can lead with data to create a more sustainable world. You will find examples of sustainability initiatives from water security to global health strengthening, and the role that data plays to tackle these challenges.
Recently, Qlik.org ran a hackathon with the challenge of building an application to help the UN plan their air travel more responsibly and to reduce emissions. The “No planet B Challenge” blog post gives the full story. The winning application is due to be launched at the Global Climate Action Summit in September and will also be made available to the public.
If you are a student or academic and want to analyse your own data to see how you can drive positive change at the individual or community level, the Qlik Academic Program can help you to do this. You will receive free access to Qlik software and training resources which could be used to determine how you can reduce your CO2 footprint, or electricity usage or meat consumption...Even at the micro level, data can help us to all do our bit to contribute to a more sustainable world. To sign up for the program today visit: qlik.com/academicprogram.
Florence Nightingale may not be the first person who springs to mind when you think of big data, but in fact it's not such a strange pairing as you may initially think.
Did you know that before Florence became a nurse she trained as a statistician? And prior to the Crimean War she became a successful hospital manager. During that war she combined her nursing and statistics to reduce death rates in military hospitals from 42% to just 2%, and used infographics to ensure that politicians couldn't ignore the figures.
This short BBC ideas video directed by James Quinn encourages us to think about what Florence might think of the vast volumes of data available to us today, and the opportunities that we have to use that data to make the world a better place.
Our Qlik Academic Program aims to give University students the ability to read, work with, analyse and argue with data to bring about positive change, regardless of their discipline or area of interest. And the program is also open to University academics who want to bring this teaching into their classrooms. To find out more or to sign up visit: qlik.com/academicprogram, and maybe you could be the next Florence Nightingale!
Do you ever use inline tables in your Qlik Sense app? I do, especially when I need to add a small amount of data to an app that does not already exist in an Excel file or some other data source. With the November 2017 release of Qlik Sense, manual entry was added in the Data manager. With manual entry, users have the option to either manually enter their data into the table editor or paste their data into the table editor to add it to the Data manager. I like this new small feature because it makes it very easy to copy Excel data or a table from a web page and add it as a table in the Data manager. Let’s look at how it works.
From the Navigation menu, click on Data manager to open it.
Once the Data manager is open, click on the plus sign to add data. On the left, there is an option for Manual entry as seen below. Select Manual entry to open the Manual entry editor window. Once the Manual entry editor window is open, users can enter a name for the table they would like to add as well as the field names and table entries. To enter data, double-click on the cell and start typing. You will find that as you enter data into the cells, additional rows and columns are added automatically. Once you are done entering the data for the table, click the Add data button at the bottom right to add the table to the Data manager. Users can also paste in rows from an Excel table or a webpage which is how I like to use it. Simply, copy the rows you would like to add, select the entire data entry table by clicking a column or row until they turn orange (as seen below) and then paste the table/rows (Ctrl-P).
After the data is added to the Data manager, it can be loaded and added to the data model. Refer to Qlik Sense Help for shortcuts that can be used when using the table editor. Now, if you are accustomed to creating inline tables via the script editor, you can still do that in the script editor using the syntax below:
This script will add a Products table with 2 fields, Product and Sales. Five rows of data will be added to the Products table.
Manual entry allows users to manually enter data into the Data manager in a few easy steps. Users do not need to remember the inline load script and they can load just the rows of data they need. Manual entry is ideal when you have a small amount of data to add to an app. When you have a lot of data, loading directly from the source or an Excel file may be easier.
Thanks,
Jennell
On the occasion of World Youth Skills Day on July 15th, continuing our mission to create a data literate society, Qlik continues to invest in the Qlik Academic Program- enabling Universities with its free analytics resources and the Data Literacy Project which provides learning resources and certification in Data Literacy and Data Analytics.
We also continue to forge partnerships with various Universities such as the Hyderabad based Anurag Group of Institutions where 53 students and Professors completed the Qlik Sense Business Analyst qualification and 40 students gained the data analytics certification.
To read about how Qlik's efforts in building analytics skills, visit: https://blog.qlik.com/the-value-of-data-literacy-on-youth-skills-day
To understand how your University can build its analytics skills for Professors and students, visit: www.qlik.com/academicprogram
A few weeks ago, Francis wrote a piece here about the (formerly) secret developer menu accessible via URL, Developer menu is a great finding but is not the only one URL hack available. These are some of the URL “hacks” I use:
/options/developer
More info here: Developer menu in Qlik Sense client
/language/language_key
Adding /language/key will change the client language for that tab session. Remember you can always check the available client languages by checking Dev Hub
https://localhost:4848/app/app_id/sheet/sheet_id/state/analysis/language/es_ES
/theme/theme name
Likewise, you could change the theme of an app by specifying the theme name in the URL. Also remember you can check the available themes in Dev Hub.
https://localhost:4848/app/app_id/sheet/sheet_id/state/analysis/theme/qdt theme
/identity/id
By specifying an identity id you can create selection realms. For example, you could have 2 different tabs open in the same browser as:
https://localhost4848/app/app_id/sheet/sheet_id/state/analysis/identity/1
https://localhost:4848/app/app_id/sheet/sheet_id/state/analysis/identity/2
Selections performed under “identity 1” won’t impact on the tab session “identity 2”, alternatively you could share selections in different browsers by using the same identity in each one of them.
/ttl/seconds
Adding /ttl/ and a number representing seconds will override the settings of session-expiry time in the server, setting it up to the number specified in seconds. For example, adding 1800 will set the expiration time for the session to 30 minutes.
https://localhost:4848/app/app_id/sheet/sheet_id/state/analysis/ttl/1800
As a general disclaimer, please note that anything that isn't documented or officially supported is subject to change in the future. Handle it with care.
Arturo (@arturoqv)
Hello Qlik Community,
With June, we kicked off the Summer season and closed out the first half of 2019. The Community team made quite a few updates to the user interface, automated some processes, and made performance enhancements as well. Let's take a look at some of the highlights.
1. Automated Welcome Email for New Members
New community members will now automatically receive a welcome email from the Qlik Community team two days after joining. The welcome email provides links to getting started resources and places of interest in the Community to help new members get up to speed quickly and find what's most relevant to them.
2. New Notification Settings
Four new notification settings make it easy to control whether or not you receive different types of notifications. If you turn any these notifications off, you will still get notifications in your community notification feed, which you can access through the bell icon in the page header.
3. Added Social Icons to Events & Webinars Cards
The Events & Webinars page showcases upcoming events and webinars you can register in advance for, as well as listing webinars available to watch on demand, anytime. We've added social sharing icons to each event card, making it easy for you to invite a friend or share events of interest with your network.
4. Meetups Page Now Updates Automatically
The Meetups page displays the upcoming Meetups being held around the world. This page now displays the upcoming events automatically, so it is always up to date.
5. New Groups Tab for Leader Groups
On the Groups page, we've created a new tab for Leader Groups. These are private, invitation only groups for members of each program. We've moved Qlik Community MVPs and Qlik Luminaries groups from the Topic Groups tab to the Leader Groups tab, and added a new group for Qlik Meetup Captains.
6. Added Sort By Filter to Blogs
The Sort By Filter is now available on each blog, allowing you to sort blog posts by Most Popular, Most Viewed, Original Post Date, or Latest Reply, just like you can in other areas of the community.
7. Updated Labels in Community Corner
We've updated the labels on posts in the Community Corner in order to better categorize content. In many cases, the labels used were converted to tags, and new labels applied. Labels work best when few are used as a general classification, and then more tags are used for detailed classification.
8. Performance Improvements
We also made some performance enhancements and resolved an issue that was causing Firefox browsers to load slowly.
Thanks for reading, and thanks for being a member of the Qlik Community.
Let us know in the comments below which of these updates are most important to you.
Thanks,
Jeremy and the Qlik Community Team
With Qlik Sense June 2019 comes the addition of a container object to the list of native objects. The new container object allows you to add Qlik Sense visualizations in a limited space by using tabs to switch between the visualizations. Developers can use the Visualization API to create container objects and add visualizations to it on the fly.
You can check out the documentation for the creating a container object with the Visualization API at https://help.qlik.com/en-US/sense-developer/June2019/Subsystems/APIs/Content/Sense_ClientAPIs/CapabilityAPIs/VisualizationAPI/container-properties.htm. Let’s walk through the example of creating a container object and adding some visualizations to it from the docs.
The first step is to create a few visualizations. There's no need to show them yet, but the promises need to be resolved so the visualization objects can be used.
// create some visualizations
var bar = app.visualization.create('barchart', ["Dim1","=num([Expression1])"],{ title:"Great on-the-fly barchart" });
var line = app.visualization.create('linechart', ["Dim1","=Sum([Expression1])"],{ title:"Great on-the-fly linechart" });
var pie = app.visualization.create('piechart', ["Dim2", "=Sum([Expression2])"], { title: "Great on-the-fly piechart" });
// wait for the promises to resolve so the visualization objects can be used
Promise.all([pie, bar, line]).then(function(data) {
// the rest of the code will go here
});
The next step is to create the container. Let's take a look at that.
// create the container object using the Visualization API
app.visualization.create('container', null, {
// only a couple of options are set here, but you can refer to the docs for other available options
title: 'My container',
showTitles: true
}).then(function(container) {
// the rest of the code will go here
});
Now that the container has been created, it's time to add visualizations to it, and then to show the container. That will look like this.
// loop through the visualization objects
for (var i = 0; i < data.length; i++) {
// use the getProperties method on each visualization object model to get its qProp
data[i].model.getProperties().then(function(child) {
// use the createChild method on the container object model to add each child to the container
container.model.createChild(child);
});
}
// show the container on element with id="QV02"
container.show("QV02");
Now the container is created and displayed. There are two methods used above from the Engine API on the model of visualization objects, which are really just generic objects, which you may not be familiar with if you are not familiar with the Engine API. I've linked to those below.
You can also save a reference to the child when using the createChild method, so you can later remove it from the container object if that's something that you anticipate. You would just use the id of the reference to the child in the destroyChild method you can find here https://help.qlik.com/en-US/sense-developer/June2019/APIs/EngineAPI/services-GenericObject-DestroyChild.html.
It looks like this when all put together.
var bar = app.visualization.create('barchart', ["Dim1","=num([Expression1])"],{ title:"Great on-the-fly barchart" });
var line = app.visualization.create('linechart', ["Dim1","=Sum([Expression1])"],{ title:"Great on-the-fly linechart" });
var pie = app.visualization.create('piechart', ["Dim2", "=Sum([Expression2])"], { title: "Great on-the-fly piechart" });
Promise.all([pie, bar, line]).then(function(data) {
app.visualization.create('container', null, {
title: 'My container',
showTitles: true
}).then(function(container) {
for (var i = 0; i < data.length; i++) {
data[i].model.getProperties().then(function(child) {
container.model.createChild(child);
});
}
container.show("QV02");
});
});
That's how to create the new container object and add visualizations to it using the Visualization API.
As we see an increase in the desire to utilize data and analytics to empower organizations, there is an increase in investment in learning and tools to help facilitate this growth. As I have been traveling the world, and working with organizations from across industries, I have noticed there are a couple of roadblocks that stand in the way of true success with data and analytics: lack of overarching data and analytical strategy, and lack of understanding of the 4-levels of analytics. These are not new topics in the least.