Qlik Community

Blogs

Hear directly from Qlik employees in our eight unique blogs. Check out the new Architecture Deep Dive Blog!

All about product and Qlik solutions: scripting, data modeling, visual design, extensions, best practices, etc.

Learn about what's new across all of the products in our growing Qlik product portfolio.

Deep dives into specific back-end technologies which allow for the extension of Qlik to fit the needs of the enterprise.

Information on all new product releases, connectors, beta programs, and technical product information.

Updates for Qlik Community offerings, announcements and changes.

Important and useful support information about end-of-product support, new service releases, and general support topics.

This forum was created for professors and students using Qlik within academia.

On this forum you can access and follow the latest updates of our courses and programs with the Qlik Education team.

Recent Blog Posts

  • Image Not found
    Qlik Academic Program Blog

    The Qlik Academic Program made a splash at this years Qonnections!

    This year the Academic Program got the opportunity to present to Qlik customers and partners  about what the program provides and how its made an impact to one of our professors.  The presentation was hosted by Angelika Klidas, a professor from  Hogeschool van Amsterdam who is also a Qlik customer and a Qlik Luminary!  Angelika has been teaching her students about the importance of learning Data Literacy and how to use Ql... Show More

    This year the Academic Program got the opportunity to present to Qlik customers and partners  about what the program provides and how its made an impact to one of our professors.  The presentation was hosted by Angelika Klidas, a professor from  Hogeschool van Amsterdam who is also a Qlik customer and a Qlik Luminary!  Angelika has been teaching her students about the importance of learning Data Literacy and how to use Qlik Sense as a means of visualizing data!

    Angelika brings a unique perspective to the program because she is also a Qlik customer who uses Qlik Sense at her company so she understands the importance of understanding data literacy and Qlik Sense.  In fact, Angelika said that teaching  students offers her a wonderful opportunity to select her top students for employment upon  graduation!  Since she began teaching she has hired 5 of her students to work for her.

    The presentation was a hit!   There were no empty seats and a line had formed after she was done for additional Q&A. 

    To learn more about how you can enhance your course with Data Literacy and Qlik Sense, visit  qlik.com/academicprogram.  To learn more about Angelika you can visit training the next generation of BI specialists

     

    Show Less
  • Image Not found
    Qlik Academic Program Blog

    Qlik Academic Program expands its reach to 80 countries!

    The Qlik Academic Program has recently reached a new milestone. Since 2012 when the program was born, we have now had involvement from students and academics in 80 different countries! This has encompassed involvement from 1,390 Universities and over 7,000 students.  This is a great achievement for the entire organisation as we continue to progress towards our vision of a data-literate world, where everyone can use data to solve their most c... Show More

    The Qlik Academic Program has recently reached a new milestone. Since 2012 when the program was born, we have now had involvement from students and academics in 80 different countries! This has encompassed involvement from 1,390 Universities and over 7,000 students. 

    This is a great achievement for the entire organisation as we continue to progress towards our vision of a data-literate world, where everyone can use data to solve their most challenging problems. Currently only 21% of 16-24 year-olds deem themselves to be data literate, and the Academic Program is an excellent resource for bridging this skills gap. 

    The program is open to students and academics from all accredited Universities globally and is completely free of charge. Members get access to free Qlik software and training resources, as well as Qlik Sense qualifications which can really help students to stand out from the crowd in their job applications. Professors are able to build our content directly into their teaching, including product agnostic lecture materials on theories and concepts in analytics. 

    To find out more or to apply for the program visit qlik.com/academicprogram. You can also email academicprogram@qlik.com with any inquiries. 

    Please help us to spread the word on this invaluable free resource from Qlik, to help us to move ever closer to our vision of a data literate world, one student at a time!

    Show Less
  • Image Not found
  • Image Not found
    Qlik Design Blog

    "Stealing" the Visualization Bundle to be used on an older release

      Hey guys - a few valued Qlik Community members and contributors  ( @millerhm  @juraj_misina  ) brought to my attention an interesting topic after we released the February 2019 release of Qlik Sense. What if I want those exciting, sexy, awesome, new visualizations I just saw....BUT I am not ready to upgrade to February 2019?  Since we don't offer the Visualization Bundle as a separate installation package, ... Show More

     

    Hey guys - a few valued Qlik Community members and contributors  ( @millerhm  @juraj_misina  ) brought to my attention an interesting topic after we released the February 2019 release of Qlik Sense.

    What if I want those exciting, sexy, awesome, new visualizations I just saw....BUT I am not ready to upgrade to February 2019? 

    Since we don't offer the Visualization Bundle as a separate installation package,  I guess you could find them individually in the Qlik Branch Garden - as I originally suggested, but @millerhm pointed out that they wanted the "certified extensions" that were part of the February 2019 release. That's when @juraj_misina made mention of a simple work-around involving "stealing them" :smileywink: from the February 2019 release of Qlik Sense Desktop. I thought this was a great topic to produce a quick video on to show others whom might not be familiar with how that process might look.

    Watch this quick video to see how I "stole" the visualization bundle from the February 2019 release and added it to my Qlik Sense Enterprise November 2018 release.

     

    Thanks @millerhm and @juraj_misina for your contribution!

    Note: I cannot attach the .zip file here at this time. It is possible if you have any issues with these extensions while being used with an older release, our support team may ask you to reproduce the issue within the February 2019 release, so please be aware.

    Can't see the video? YouTube blocked by your region or organization?

    Download the .mp4 to watch on your computer or mobile device.

    Thanks,

    Mike Tarallo

    Qlik

    Follow me

    Show Less
  • Image Not found
    Qlik Academic Program Blog

    What can you do with an analytics degree?!

    It's been seven years already since the Harvard Business Review declared business analytics the "sexiest job of the 21st century", and the glamour of the job hasn't shown any signs of waning.   New opportunities for graduates with business analytics skills Analytics degrees can open doors for new graduates, particularly in light of the widening talent gap created by the new challenges presented by big data. According to a r... Show More
    It's been seven years already since the Harvard Business Review declared business analytics the "sexiest job of the 21st century", and the glamour of the job hasn't shown any signs of waning.
     
    Show Less
  • qlik-community-blogs.jpg
    Qlik Design Blog

    TextBetween Function

    I was parsing data with a colleague when I learned about the TextBetween function. It is a simple function that can be used in a chart or in the script to return the character(s) that are between two delimiters you specify. Here is the syntax from Qlik Help: TextBetween(text, delimiter1, delimiter2[, n]) The first parameter, text, is the input string. Delimiter1 is the first character to search for in the text while delimiter2 in the second chara... Show More

    I was parsing data with a colleague when I learned about the TextBetween function. It is a simple function that can be used in a chart or in the script to return the character(s) that are between two delimiters you specify. Here is the syntax from Qlik Help:

    TextBetween(text, delimiter1, delimiter2[, n])

    The first parameter, text, is the input string. Delimiter1 is the first character to search for in the text while delimiter2 in the second character to search for in the text. The last parameter, n, is optional and is used to search for a specific delimiter pair. Let’s look at some examples.

    The chart expression below returns 1234. The TextBetween function finds the first open parenthesis and the first close parenthesis and returns the text that is between them.

    chart.png

     

    Now if the text included multiple sets of data in parentheses, I can use the chart expression below to get the text in the third parentheses set.

    chart2.png

     

    This chart expression returns 3456 because I have set the fourth parameter to 3 in the TextBetween function which means I want the text between the third delimiter pair (the third pair of parentheses).

    TextBetween can also be used in the script. In the script snippet below, I load 3 products into a table named Temp. Then I parse the Product field using TextBetween to create another field in the Products table named Product Code.

    script.png

     

     

     

     

     

     

     

     

    The result is a table like this:

    table.png

     

     

     

     

    In the past, I would have approached this parsing exercise differently. I would have used a combination of functions like the index function and the mid function to parse out the product code. Using the TextBetween function is so much easier, cleaner and more straight-forward. I cannot believe it took me this long to learn about it but I am glad I know about it now.

     

    Thanks,

    Jennell

    Show Less
  • Image Not found
    Qlik Design Blog

    Creating custom charts with qdt-components

    Qdt-components is a library that we've build in the Demo Team to help us with our mashups. We had many requests for custom picasso charts, other than the pre existing ones we already include in the bundle. So far we have  'comboLineBarchart',  'horizontalBarchart', 'lineChart', 'multiLineChart', 'pie', 'piechart', 'scatterplot', 'verticalBarchart', 'verticalGroupBarchart', 'stackedBarcha... Show More

    Qdt-components is a library that we've build in the Demo Team to help us with our mashups.

    We had many requests for custom picasso charts, other than the pre existing ones we already include in the bundle.

    So far we have  'comboLineBarchart',  'horizontalBarchart''lineChart''multiLineChart''pie''piechart''scatterplot''verticalBarchart''verticalGroupBarchart''stackedBarchart''verticalGauge''verticalRangeGauge' and 'rangeArea'.

    Today I have also added a Gantt chart (https://qdt-apps.qlik.com/qdt-components/react/#/picasso-gantt)
    picassoGantt.png

     

    So the question is what if I want to create another chart that is not one of the above?

    There are two ways of achieving this. Either by getting a preexisting one and adding more components, like a bar chart and add a line to make it a combo or, by including all of the components yourself.

    In order to make this possible, we have exported all of these preexisting charts, as well the individual components like axis, boxes, lines, dots, labels, legend, pie, point, range and tooltip. 

    Here is an example that describes both ideas.

    https://qdt-apps.qlik.com/qdt-components/react/#/picasso-custom-combo-chart

    Screen Shot 2019-06-13 at 11.34.45 AM.png

    In the first example "custom1", I used an already predefined setting, verticalComboChart and appended 2 lines and 3 points.

    In the second example "custom2", I created the entire settings file.

    https://github.com/qlik-demo-team/qdt-react-website/blob/master/src/pages/PicassoCustomChart.jsx

    https://github.com/qlik-demo-team/qdt-react-website/blob/master/src/components/QdtComponent.jsx

    Render in your Template
    <QdtComponent type={viz2.type} props={viz2.props} />
    Define the props in your code
    
        // In this page:
        const viz2 = {
            type: 'QdtPicasso',
            props: {
              type: 'custom1',
              cols: [
                "Case Owner Group",
                "=Num(Avg([Case Duration Time]), '##.0')",
                "=Count( {$<Priority={'Low'}, Status -={'Closed'} >} Distinct %CaseId )",
                "=Count( {$<Priority={'Medium'}, Status -={'Closed'} >} Distinct %CaseId )",
                "=Count( {$<Priority={'High'}, Status -={'Closed'} >} Distinct %CaseId )",
              ],
              outerHeight: 300,
            },
          };
          
          const viz3 = {
            type: 'QdtPicasso',
            props: {
              type: 'custom2',
              cols: [
                'Case Owner Group',
                "=Num(Avg([Case Duration Time]), '##.0')",
                "=Count( {$<Priority={'Low'}, Status -={'Closed'} >} Distinct %CaseId )",
                "=Count( {$<Priority={'Medium'}, Status -={'Closed'} >} Distinct %CaseId )",
                "=Count( {$<Priority={'High'}, Status -={'Closed'} >} Distinct %CaseId )",
              ],
              outerHeight: 300,
            },
          };
    
          // in the QdtComponents class:
          componentWillMount() {
            const { props } = this.props;
            const { settings, components, interactions } = QdtComponents.picasso;
            if (props.type === 'custom1') {
              props.type = null;
              props.settings = settings.verticalBarchart;
              props.settings.scales.y = { data: { fields: ['qMeasureInfo/0', 'qMeasureInfo/1', 'qMeasureInfo/2'] }, invert: true, expand: 0.04 };
              props.settings.components.push(components.line({
                displayOrder: 3, y: { field: 'qMeasureInfo/1' }, stroke: '#960000',
              }));
              props.settings.components.push(components.point({ displayOrder: 4, y: { field: 'qMeasureInfo/1' }, fill: '#960000' }));
              props.settings.components.push(components.line({
                displayOrder: 5, y: { field: 'qMeasureInfo/2' }, stroke: '#99cc66',
              }));
              props.settings.components.push(components.point({ displayOrder: 6, y: { field: 'qMeasureInfo/2' }, fill: '#99cc66' }));
              props.settings.components.push(components.point({ displayOrder: 7, y: { field: 'qMeasureInfo/3' }, fill: '#275378' }));
            } else if (props.type === 'custom2') {
              props.type = null;
              props.settings = {
                scales: {
                  x: { data: { extract: { field: 'qDimensionInfo/0' } }, padding: 0.3 },
                  y: { data: { fields: ['qMeasureInfo/0', 'qMeasureInfo/1'] }, invert: true, expand: 0.2 },
                  c: { data: { field: 'qMeasureInfo/0' }, type: 'color' },
                },
                components: [
                  { type: 'grid-line', y: 'y' },
                  components.axis(),
                  components.axis({ scale: 'y' }),
                  components.tooltip,
                  components.box({ fill: '#3399CC', stroke: '#275378' }),
                  components.labels(),
                  components.line({
                    key: 'line2', displayOrder: 3, y: { field: 'qMeasureInfo/1' }, stroke: '#CC6666',
                  }),
                  components.point({
                    key: 'point2', displayOrder: 4, y: { field: 'qMeasureInfo/1' }, fill: '#CC6666', stroke: '#B35A01',
                  }),
                  components.range(),
                ],
                interactions: [
                  interactions.itooltip,
                  interactions.pan(),
                ],
              };
            }
          }

    Yianni

    Show Less
  • Image Not found
    Qlik Academic Program Blog

    Why data literacy is a must have for everyone

    In a recent article for The Data Literacy Project , Experian's Head of Thought Leadership & Data Literacy, Paul Malyon, discusses not only how data literacy is useful to Experian as an information services company, but how it can benefit us all as individuals.  Paul discusses the example of buying a home, and how many of the factors that we take into consideration when we make this decision are based on data.  Th... Show More

    In a recent article for The Data Literacy Project , Experian's Head of Thought Leadership & Data Literacy, Paul Malyon, discusses not only how data literacy is useful to Experian as an information services company, but how it can benefit us all as individuals. 

    Paul discusses the example of buying a home, and how many of the factors that we take into consideration when we make this decision are based on data.  Things we may want to consider include commute time to work, local school performance, crime rates, planning history and much more. And while some of the information needed may be easily accessible, in other cases we may need to look beyond the surface level data to get the real answers that we are looking for. It's about being curious, and having the confidence to go out and request additional information to perform your own analysis, to meet your specific needs. You can read the full article here: https://thedataliteracyproject.org/posts/data-literacy-a-must-have-in-the-data-powered-future

    And these skills of curiosity and confidence that come with being data literate can help us in many other aspects of our lives too. For example when we are considering a new career path we may want to analyse data on salaries, job satisfaction and progression opportunities. Or if we want to relocate we can compare living costs, services and well-being information to help us to make the best choice. 

    So you can see from the above examples that data literacy is not just a skill for the workplace, but something that can bring us big benefits in our personal lives too. Qlik is committed to improving data literacy rates through the Data Literacy Project and also the Qlik Academic Program. The Data Literacy Project has learning resources open to all, and the Qlik Academic Program is specifically for students and academics who want to get trained in the use of Qlik analytics software, as well as to learn more about general theories and concepts in analytics. To find out more or to sign up visit qlik.com/academicprogram

     

    Show Less
  • qlik-community-blogs.jpg
    Qlik Design Blog

    Don't join - use Applymap instead

    It is, in fact, one of my favorite functions and I do not seem to be alone in this choice. Several of the QlikView developers who regularly write on QlikCommunity seem to share this preference and have written about this function, e.g., QlikView Notes, Quick Intelligence and QVApps.   So, what does the function do? Well, basically it is just a lookup function – it takes one value as input, checks if this value exists in a mapping table and r... Show More

    It is, in fact, one of my favorite functions and I do not seem to be alone in this choice. Several of the QlikView developers who regularly write on QlikCommunity seem to share this preference and have written about this function, e.g., QlikView Notes, Quick Intelligence and QVApps.

     

    So, what does the function do? Well, basically it is just a lookup function – it takes one value as input, checks if this value exists in a mapping table and returns the corresponding value from the second column in the mapping table. Think of it as a translation function where the translation is fetched from a pre-defined, two-column table. A simple translation function, but you can still do a lot with it...

     

    What has this got to do with joins? Everything. A very common situation in data modeling is that you need to get a single field value (per record) from a different table than the current one. Then the standard way to do this is to use a join. However, in QlikView you can – and should – use Applymap() instead. The only time that you cannot use Applymap() instead of a join is if you want to fetch more than one single corresponding value (record) from the second table.

     

    Let's look at an example of how to use Applymap(): In an ERP system, the customer table is the table where all information about the customer is stored, e.g. the name and country of the customer. Further, it could be that you need the customer’s country when making a calculation in the order table. This is a field that you don't have in the order table. In SQL you would join the two tables to get country into the order table.

     

    In the QlikView script you would instead first define the mapping table that maps a customer ID to a customer country as follows:

     

         MapCustomerIDtoCountry:
         Mapping Load CustomerID, Country From Customers ;

     

    The second step is to use this information when reading the order table, such as:

     

         Orders:
         Load *,

              ApplyMap('MapCustomerIDtoCountry', CustomerID, null()) as Country
              From Orders ;

    Tables2.png

     

    The "null()" as third parameter of the function defines what it should return when the customer ID isn't found in the mapping table.

     

    And with this, you have joined the field Country with the order table – without using a join. And you have done it faster and with less chance of errors. Bottom line: Whenever you know that you just want to fetch one single value per record – don’t join. Use Applymap() instead.

     

    HIC

     

    See more in the Technical Brief on Joins and Lookups.

    Show Less
  • Image Not found
    Qlik Community Manager Blog

    Community Enhancements for May 2019

    Hello Qlik Community! Once again, we've made more exciting enhancements in the month of May (and early June).   1. New Qlik Resources Page In place of the Qlik Company page, we now have a Qlik Resources page with links to a wide array of Qlik resources, including portals, sites, and social media channels. It's your one stop shop for all things Qlik. Since this page offers easy access to so many other Qlik resources, be sure to bookmark it. ... Show More

    Hello Qlik Community!

    Once again, we've made more exciting enhancements in the month of May (and early June).

     

    1. New Qlik Resources Page

    2019-06-12 Qlik Resources Nav.png

    In place of the Qlik Company page, we now have a Qlik Resources page with links to a wide array of Qlik resources, including portals, sites, and social media channels. It's your one stop shop for all things Qlik. Since this page offers easy access to so many other Qlik resources, be sure to bookmark it.

    2019-06-12 Qlik Resources Cards.png

     

    2. Sort Feeds by Date on the Fly

    2019-06-12 Sort By Filters Context.png

     

    The filter selection for content feeds now has two more options - Sort by Original Post Date and Sort by Latest Reply.

     

    Sort by Original Post Date to see the order threads were created, or choose Latest Reply to see which threads are currently active with new replies. You can still make your own selection in My Settings, and use this filter when you want to switch views temporarily. To do so, go to My Settings > Preferences > General > Sort Topics by.

    2019-06-11 My Settings Sort Topics.png

    3. New Blog - Qlik Architecture Deep Dive Blog

     

    2019-06-12 Architecture Blog Image.png

    The Qlik architecture team has launched a new blog for deep dives into specific back-end technologies which allow for the extension of Qlik to fit the needs of the enterprise. Blog posts so far cover getting notifications from Qlik Sense, SMTP, UDP, and external program tasks. Check out the Qlik Architecture Deep Dive Blog and welcome them to the community. 

    With the addition of this Architecture blog, Qlik Community now has eight blogs!

     

     

    4. Standardized Date Display

    2019-06-12 ISO Date.png

    Discussion board pages were using a different date format from the rest of the community. Now, all dates displyed in the community are ISO format of YYYY-MM-DD.

     

    5. Icons for Partners

    2019-06-12 Partner Rank Leaderboard.png

     

    Looking for a partner? We've added a new rank icon for community members who are Qlik partners, and "Partner" is listed next to their usernames.

     

     

    6. Link Fixes

    We've made updates to repair broken links in the community due to the platform migration. This was particularly affecting links to blog posts, but also some other pages as well. Now, they redirect to the proper page. 

    If you find any links that still need to be repaired, let us know with a comment below and a link to the page the broken link is on.

     

    Thanks for reading and thanks for being a community member. As always, let us know if you have any questions or feedback.

     

    Best,

    Jeremy and the Qlik Community team

     

    Show Less
  • qlik-community-blogs.jpg
    Qlik Design Blog

    Qlik Sense Mobile - Update (video)

    Hi folks - this video will show you how to get started with Qlik Sense Mobile from a basic sense. There have been some signifcant changes since I last recorded a video on this and it was time for a brief update. Due note that we have much more for those of you who administer, secure and deploy mobile BI. We work with Enterprise Mobile management vendors to tightly integrate our solution with their platforms. See the resource links below.In this v... Show More

    Hi folks - this video will show you how to get started with Qlik Sense Mobile from a basic sense. There have been some signifcant changes since I last recorded a video on this and it was time for a brief update. Due note that we have much more for those of you who administer, secure and deploy mobile BI. We work with Enterprise Mobile management vendors to tightly integrate our solution with their platforms. See the resource links below.

    In this video you will learn how to:

    • Install the Qlik Sense Mobile App on iOS
    • Configure and Send Client Authentication Link Using the QMC
    • Verify Offline Security Settings
    • Start the app and login to your server
    • Download your app
    • Access your app offline

    Note: Offline access via the Qlik Sense Mobile App is only available to Qlik Sense Enterprise customers. However, Qlik Sense servers and Qlik Sense Cloud can be quickly and easily accessed via a mobile device such as a tablet or smart phone by simply using a mobile browser that supports HTML5 - i.e. Chrome, Safari, etc. Check out these 2 videos to learn more:

    Please let me know if you have any comments or questions.

    Qlik Sense Mobile

    Resources:

    Enjoy!

    Michael Tarallo (@mtarallo) | Twitter

    Can't see the embedded video? YouTube blocked by your organization or region? Download the .mp4 to watch on your computer or mobile device.

    Show Less
  • qlik-community-blogs.jpg
    Qlik Support Updates Blog

    Qlik April 2019 - New Feature Releases for Qlik Sense and QlikView

    Hello All Qlik Customers,We are pleased to confirm that Qlik Sense April 2019 and QlikView April 2019 feature releases are now available on our download site. These new feature releases include a host of new features as well as numerous bug fixes.  For additional information, please see the attached release notes. Qlik Sense April 2019 - New features including: Associative Insights – offering powerful new AI insight suggestions that reveal ... Show More

    Hello All Qlik Customers,

    We are pleased to confirm that Qlik Sense April 2019 and QlikView April 2019 feature releases are now available on our download site. These new feature releases include a host of new features as well as numerous bug fixes.  For additional information, please see the attached release notes.

    Qlik Sense April 2019 - New features including:

    • Associative Insights – offering powerful new AI insight suggestions that reveal hidden insights in your selections, driven by the Qlik Cognitive and Associative Engines working together.
    • Two New Chart Types in the Visualization Bundle - Bar & Area chart and Bullet chart 
    • New Mapping Enhancements -  It is now possible to set a default map background for all new map charts.
    • SaaS Deployment for Qlik Sense Enterprise - a standalone SaaS deployment option for Qlik Sense Enterprise (QSE), with the ability to create, reload and consume Qlik Sense Enterprise apps entirely on Qlik’s hosted cloud.


    QlikView April 2019 - New features including:

    • Supporting QlikView and Qlik Sense dual-use – New unified licensing for customers taking advantage of QlikView and Qlik Sense dual-use.
    • Cross product integrated links - offers linking to QlikView from Qlik Sense Enterprise on Qlik Cloud Services and Qlik Sense Enterprise on Kubernetes.

     

    As always when upgrading any software, make sure that you backup your system and applications before doing any installation and follow upgrading best practices. Thank you for choosing Qlik software.

     

    Kind regards
    The Global Support Team

    Show Less
  • qlik-community-blogs.jpg
    Qlik Technical Bulletin Blog

    Technical Preview: Qlik Sense June 2019 & Qlik NPrinting June 2019

    Qlik is pleased to invite Customers and Partners to participate in the Technical Preview program for the June 2019 release of Qlik Sense and Qlik NPrinting.  Please go to the respective board for preview details.  Qlik Sense June 2019 Technical Preview  Qlik NPrinting June 2019 Technical Preview 
  • qlik-community-blogs.jpg
    Qlik Architecture Deep Dive Blog

    External program tasks in Qlik Sense

    External program tasks in Qlik Sense are simply another task type that exists, but not fully exposed by the QMC. They are tasks that are triggered from the QMC but allow for commands to be run in a command shell process behind the scenes; which in turns means you can run more or less anything you can run on the command prompt. Once you define your command and create a new task, you can both trigger and chain these types of tasks in the QMC. I wil... Show More

    External program tasks in Qlik Sense are simply another task type that exists, but not fully exposed by the QMC. They are tasks that are triggered from the QMC but allow for commands to be run in a command shell process behind the scenes; which in turns means you can run more or less anything you can run on the command prompt. Once you define your command and create a new task, you can both trigger and chain these types of tasks in the QMC.

    I will be using JavaScript for all the examples which means that node.js needs to be in your PATH variable (the location of node.exe). Again, you can run any command that you can run in the windows command prompt, so these examples are only for demo purposes.

    Before we get started, we need to understand that IF you are calling scripts in your command, the script needs to be accessible by the user running the Qlik services. In this example, there’s a folder on the root C: drive called ‘externalTasksExample’, in this folder there is a createFile.js file which simply creates a new file in the same folder.

    The file looks like:

    var fs = require('fs');
    var outputText = "This text will be in my output file.";
    const data = new Uint8Array(Buffer.from(outputText));
    fs.writeFile('C:\\externalTasksExample\\testCreateFile.txt', data, function (err) {
      if (err) throw err;
      console.log('The file has been saved!');
    });

    You can run the file from the command prompt by doing the following:

    C:\externalTasksExample>“C:\Program Files\Qlik\Sense\ServiceDispatcher\Node\node.exe” createFile.js

    When the command runs successfully, you should have a new file created in the externalTasksExample folder called “testCreateFile.txt” with the contents: “This text will be in my output file.”

    Now we will delete this testCreateFile.txt and try to run that same JavaScript file using an external program task in Qlik Sense. The first thing we need to do is actually create the task.

    The endpoint is:

    POST /qrs/externalprogramtask

    With the body being:

    {
      "path": "C:\\Program Files\\Qlik\\Sense\\ServiceDispatcher\\Node\\node.exe",
      "parameters": "C:\\externalTasksExample\\index.js",
      "name": "ExampleExternalTask",
      "taskType": 1,
      "enabled": true,
      "taskSessionTimeout": 1440,
      "maxRetries": 0,
      "privileges": null,
      "schemaPath": "ExternalProgramTask"
    }

    Once you post this into Qlik, you should be able to go to the QMC and see the following task in the task list.

    You should be able to select the task, click 'Start', and the same file should appear in 'C:\externalTasksExample'. You are now running an external task. Remember you don't have to use node.js, you can trigger anything you want as long as it can be run from the command line.

    Scheduling

    When it comes to scheduling an external program task, the easiest way is to create a "scheduled trigger" for a dummy reload task in the QMC, then move the trigger from the reload task to the external program task. You will need the ID of the external program task for this, which you would have gotten back in a response from the POST in the previous section, or you can use the GET call below to get a list of all external program tasks and their IDs.

    GET /qrs/externalprogramtask

    To start, go back to the Tasks list in the QMC and create a new task. Give it a memorable name (I will use 'tempTask'), and choose any application. Then under 'Triggers -> Actions', 'Create new scheduled trigger'. Fill out the scheduled trigger as if it was for the external program task.

    Hit ok, click apply on the reload task, and you will then be taken to the 'Tasks' screen in the QMC. Next, we will use the API to find the new scheduled trigger we created.

    GET /qrs/schemaevent?filter=name eq 'testTrigger'

    Note the ID returned for this object, then get:

    GET /qrs/schemaevent/{ID}

    You will want to copy the entire response, which should look like something below.

    {
        "id": "23268794-35f3-42f6-a9c0-57d91e2040cd",
        "createdDate": "2019-02-16T01:42:38.583Z",
        "modifiedDate": "2019-02-16T01:42:38.583Z",
        "modifiedByUserName": "DESKTOP-GS8LAA5\\jesse paris",
        "timeZone": "America/Chicago",
        "daylightSavingTime": 0,
        "startDate": "2019-02-15T19:47:30.000",
        "expirationDate": "9999-01-01T00:00:00.000",
        "schemaFilterDescription": [
            "* * - * * * * *"
        ],
        "incrementDescription": "0 0 0 0",
        "incrementOption": 0,
        "operational": {
            "id": "f113579d-3c68-4313-b448-1d934f09c998",
            "nextExecution": "2019-02-16T01:47:30.000Z",
            "timesTriggered": 0,
            "privileges": null
        },
        "name": "testTrigger",
        "enabled": true,
        "eventType": 0,
        "reloadTask": {
            "id": "4eb7f372-1333-4f1c-842d-678e6e3b3acb",
            "operational": {
                "id": "fe6cc117-5fcb-44bb-a18d-1c35dade5189",
                "lastExecutionResult": {
                    "id": "9f4b69d7-c97e-4262-ab52-07401b93df7e",
                    "executingNodeName": "desktop-gs8laa5",
                    "status": 7,
                    "startTime": "2019-02-16T00:53:17.140Z",
                    "stopTime": "2019-02-16T00:53:19.171Z",
                    "duration": 2031,
                    "fileReferenceID": "792555fa-e96a-41ea-afbe-59b0028d8439",
                    "scriptLogAvailable": false,
                    "details": [
                        {
                            "id": "dc3a8eb0-9d44-4b32-aac7-bafb9c7d4e32",
                            "detailsType": 2,
                            "message": "Changing task state to Triggered",
                            "detailCreatedDate": "2019-02-16T00:53:17.140Z",
                            "privileges": null
                        },
                        {
                            "id": "8551a721-7d48-45fe-8505-c2fe6d1a1ee1",
                            "detailsType": 2,
                            "message": "Trying to start task. Sending task to slave scheduler desktop-gs8laa5",
                            "detailCreatedDate": "2019-02-16T00:53:17.468Z",
                            "privileges": null
                        },
                        {
                            "id": "55e9458f-af57-4f4b-92c5-463c9ad5ae67",
                            "detailsType": 2,
                            "message": "Changing task state from Triggered to Started",
                            "detailCreatedDate": "2019-02-16T00:53:17.718Z",
                            "privileges": null
                        },
                        {
                            "id": "5836b6c3-2287-4c8f-8c9b-af39dbea4176",
                            "detailsType": 2,
                            "message": "Reference to scriptlog added",
                            "detailCreatedDate": "2019-02-16T00:53:19.093Z",
                            "privileges": null
                        },
                        {
                            "id": "d0c66f1d-3238-43f5-a7c1-358a8d40a746",
                            "detailsType": 2,
                            "message": "Changing task state from Started to FinishedSuccess",
                            "detailCreatedDate": "2019-02-16T00:53:19.233Z",
                            "privileges": null
                        }
                    ],
                    "privileges": null
                },
                "nextExecution": "2019-02-16T01:47:30.000Z",
                "privileges": null
            },
            "name": "TestTaskDeleteME",
            "taskType": 0,
            "enabled": true,
            "taskSessionTimeout": 1440,
            "maxRetries": 0,
            "privileges": null
        },
        "userSyncTask": null,
        "externalProgramTask": null,
        "privileges": null,
        "schemaPath": "SchemaEvent"
    }

    We will take this response, remove the 'reloadTask' object, and add a reference to our external program task. Here we will need the ID that was returned when we created a new external program task. A final body should look like the following:

    {
        "id": "23268794-35f3-42f6-a9c0-57d91e2040cd",
        "createdDate": "2019-02-16T01:42:38.583Z",
        "modifiedDate": "2019-02-16T01:42:38.583Z",
        "modifiedByUserName": "DESKTOP-GS8LAA5\\jesse paris",
        "timeZone": "America/Chicago",
        "daylightSavingTime": 0,
        "startDate": "2019-02-15T19:47:30.000",
        "expirationDate": "9999-01-01T00:00:00.000",
        "schemaFilterDescription": [
            "* * - * * * * *"
        ],
        "incrementDescription": "0 0 0 0",
        "incrementOption": 0,
        "operational": {
            "id": "f113579d-3c68-4313-b448-1d934f09c998",
            "nextExecution": "2019-02-16T01:47:30.000Z",
            "timesTriggered": 0,
            "privileges": null
        },
        "name": "testTrigger",
        "enabled": true,
        "eventType": 0,
        "reloadTask": null,
        "userSyncTask": null,
        "externalProgramTask": {
            "id": "e7ba25a8-a56c-4529-bc9a-af41755d3feb"
        },
        "privileges": null,
        "schemaPath": "SchemaEvent"
    }

    Using this body, you will update the schema event in the Qlik Sense Repository service with

    PUT /qrs/schemaevent/{ID}

    Once this is done, the task you created will now be assigned to the external program task. If you go back to the temporary reload task you created, you will notice that it no longer has a scheduled trigger associated to it, and you can delete that task. Any changed to the trigger need to be made to the schema event through the API, and any changes to the task itself needs to be made to the external program task through the API.

    Happy APIing!

    Show Less
  • Image Not found
    Qlik Product Innovation Blog

    April 2019 Qlik Product Releases are here!

           Qlik Sense April 2019 sets us apart from the competition with significant advancements to our multi-cloud capabilities and the introduction of our new market leading AI offering,  Associative Insights. This release continues to support our position as a leader in the market and the only BI & Analytics solution that supports the diverse needs of customers looking to execute their cloud strategy and push the boun... Show More

     

         Qlik Sense April 2019 sets us apart from the competition with significant advancements to our multi-cloud capabilities and the introduction of our new market leading AI offering,  Associative Insights. This release continues to support our position as a leader in the market and the only BI & Analytics solution that supports the diverse needs of customers looking to execute their cloud strategy and push the boundaries with Augmented Intelligence.

     

    Check out the live What's New Demo app

     

    Learn what's new in this brief video:

     

    To begin, Qlik Sense April 2019 introduces a new Enterprise SaaS deployment option, running on our multi-cloud Kubernetes architecture and giving our enterprise customers more flexibility and choice on where they deploy Qlik Sense Enterprise. This new capability allows users to consume, create and reload apps directly on Qlik’s hosted SsaaS cloud environment, Qlik Cloud Services, and also allows them to deploy Qlik Sense Enterprise in their own public or private cloud infrastructure using Qlik Sense Enterprise on Kubernetes. No matter which deployment option(s) you choose, you get all of the benefits of Qlik Sense Enterprise. All deployment options for Qlik Sense Enterprise – including Qlik Sense Enterprise on Windows – work cohesively as part of a multi-cloud deployment framework.

     

    You will also find in this release the much-anticipated augmented intelligence capability - Associative Insights.   This unique and powerful new feature combines our associative and cognitive engines to suggest hidden insights in data for users to explore.  Our Associative Engine uniquely identifies the data values that are unrelated to your selections, and our Cognitive engine can now analyze those unrelated values and reveal the most significant insights that might have been overlooked.  Associative insights, provides users with peripheral vision, and prompts them to ask additional questions to bring about new, and potentially transformative, discoveries across data sets.

    associativeinsights2.PNG

    With this release, we are also including several new QlikView features, making it easier for our QlikView customers to adopt Qlik Sense for dual-use.  This includes a new unified licensing capability, which allows organizations to unlock both QlikView and Qlik Sense with a single license key, and integrated links to QlikView apps from select Qlik Sense environments.  Providing a central hub for users to access both QlikView and Qlik Sense apps. These features make it possible for organizations using QlikView to add Qlik Sense and take advantage of our latest innovations.QVtoQS.PNGWe continue to add new and improved visualizations and mapping capabilities, such as:

    • Bullet chart - great for tracking goals and showing targets combined with color banding to depict your defined ranges in a clear and organized fashion

    • New Bar & Area chart  – a variant of the standard bar chart giving more flexibility when applying labels to stacked bar charts, showing percentage differences or showing dimension values on the bars.VizBundle.PNG

    And, our native map chart now has a new background layer that can use any image as a map background. This is great when using custom drawings that require GPS coordinates to analyze specific dimensions –  specifically things such as: floor plans/space layouts, hardware positioning, parking grids, stadium seating, transit routes, and much more.

     We have also released a new iOS app - Qlik Sense Mobile for Blackberry client, which is a containerized version of Qlik Sense Mobile supporting advanced management and security for BYOD (bring your own device) environments. MobileforBlackberry.PNG

    We have added new task notifications to Qlik NPrinting, allowing greater efficiency for administration as well as extended Qlik Associative Big Data Index functionality with additional "live" mode aggregation options in a KPI object, e.g. sum/min/max/avg. As mentioned, all of this content, and much more, will be featured at Qonnections, which is just a month away! 

    The more you understand about what’s possible with our platform, the more you and your organization can benefit from it. Register now for our May 29 Qlik Insider session for a live, exclusive look at the Qlik April 2019 release, including the newest features and extensions to our platform.

    Please download the latest product releases from our customer downloads site and let us know what you think in the comments below!

    Show Less
  • Image Not found
    Qlik Product Innovation Blog

    Dual Use Licensing is Now More Flexible, Easier to Qualify for and Simpler to Im...

    Several major changes have recently been made to the QlikView and Qlik Sense Dual Use Licensing offer. These changes make Dual Use Licensing more flexible, easier to qualify for and simpler to implement. First, we’ve opened-up a subscription option, which accommodates a Capacity licensing model for greater flexibility, so you don’t have to worry about the complications associated with a mixed site (perpetual and subscription). You’ll be able to l... Show More

    Several major changes have recently been made to the QlikView and Qlik Sense Dual Use Licensing offer. These changes make Dual Use Licensing more flexible, easier to qualify for and simpler to implement.

    First, we’ve opened-up a subscription option, which accommodates a Capacity licensing model for greater flexibility, so you don’t have to worry about the complications associated with a mixed site (perpetual and subscription). You’ll be able to leverage new functionality sooner and adopt a more unified approach to Qlik product usage. And now, to leverage Dual Use licensing, you can either convert Session and Usage CALs directly to subscription to take advantage of the Capacity model or convert them to Named User and Doc CALs then to the standard Professional and Analyzer licensing model for Dual Use.

    Dual_Use_Customer_Journey.pngQlikView Customer Journey -- Dual Use Licensing

    To utilize Dual Use under subscription, there is a 40% uplift on annual QlikView maintenance for a 3-year term. Under the perpetual model, Dual Use licensing is available for a 30% uplift on your annual QlikView maintenance.

    We’ve also removed the July 1, 2018 offer cut-off date to make it easier to qualify for QlikView and Qlik Sense Dual Use Licensing. This means, regardless of QlikView version or when you initially purchased QlikView, you are eligible* for the Dual Use offer, so long as you’re current on maintenance (Federal and accounts with Enterprise License Agreements continue to be ineligible). Additionally, you are not required to upgrade your release, though we strongly encourage you to use the current version to leverage Professional, Analyzer, Capacity licensing; unified licensing (described further below); and QlikView links in Qlik Sense Enterprise on Qlik Cloud Services and Kubernetes. Conversion to Dual Use remains a one-time event.

    Unified licensing, available with QlikView and Qlik Sense April 2019 releases, aligns licensing of QlikView and Qlik Sense, entitling users to both products using a single license key enabled by the Qlik Licensing Service (QLS), to simplify Dual Use adoption. Unified licensing supports Qlik’s one user, one license, one analytics experience vision (formerly known as 1x1x1), with the goal to deliver a single access point for both QlikView and Qlik Sense, bringing the products closer together. Functionality providing greater alignment between products will be delivered later this year. 

    Qlik Dual Use Services help simplify Dual Use adoption preparing you to maximize your investment, whether creating new apps in Qlik Sense or transitioning existing apps from QlikView to Qlik Sense.

    Customer Success for Dual Use.png

    Furthermore, our new version of the QlikView Governance Dashboard provides a Sense Profile Score to answer questions about different QlikView app characteristics. More information can be found in this blog post. This app can be downloaded for free from the Qlik download site.

    Contact your account manager for more information on QlikView and Qlik Sense Dual Use licensing. 

    *Exceptions: CPU Cores or IAS Server licenses     

    Show Less
  • qlik-community-blogs.jpg
    Qlik Design Blog

    Qlik Sense Custom Report

    Four years ago, I wrote the Customizable Straight Table blog illustrating how you can build a custom table in QlikView.  Last year, I wrote the Custom Report Extension blog that shows how to use the Climber Custom Report in Qlik Sense.  Today, with the help of Patric Nordstrom and Jason Michaelides, I am going to blog about how you can build a custom report in Qlik Sense.  With continued enhancements to the Qlik Sense table such as... Show More

    Four years ago, I wrote the Customizable Straight Table blog illustrating how you can build a custom table in QlikView.  Last year, I wrote the Custom Report Extension blog that shows how to use the Climber Custom Report in Qlik Sense.  Today, with the help of Patric Nordstrom and Jason Michaelides, I am going to blog about how you can build a custom report in Qlik Sense.  With continued enhancements to the Qlik Sense table such as column show conditions and the ability to change the column order of a table, building a custom report in Qlik Sense is possible right out-of-the-box.

     

    Patric built the attached Qlik Sense app that illustrates how to build a custom report in Qlik Sense.  In this blog, I will review the steps needs to build your own report.  Below is an example of how the report looks with some dimensions and metrics selected.  On the left there are two filter panes, one for the dimensions and one for the metrics, that can be used to select the columns you would like to see in the report.  Then there is the table which by default will be empty and will prompt the user to select the dimensions and metrics.  In this example app, the user is encouraged to select no more than 5 dimensions and 4 metrics.

    table.png

    Let’s start by looking the script.  You would load your data as usual but what you will need to add to the data model is a data island for the dimensions and for the metrics.  In the script below, you can see how Patric did it, providing very clear details of each dimension and metric.  The first field in each table is the dimension/metric grouping, the second field is the dimension/metric name as it will appear in the filter panes.  The third field is a number to represent the default order of the dimension/metric columns in the report and the last field is description data about the dimension/metric.  The KPIs table has a fourth field that shows the formulas for the metrics.

    script.png

    Once the app is loaded with the data islands, you can begin to build the custom report.  You will need to add two filter panes and a table to your sheet.  The Dimension filter pane uses the Dimension field and the Metric filter pane uses the Metric field.  In the table, you will add 5 dimension columns and 4 measure columns since that is what is encouraged in this example.  Now here is where Patric used Jason’s FirstSortedValue trick.  For the first dimension, enter the text below in the Field.

    field.png

    And this in the Label:

    label.png

    So, you may be wondering what the expression is doing.  Basically, the Dimension field is being sorted by the DimensionNo field and then, since the third rank parameter is being used, the expression returns the Dimension for the nth sorted value.  In the report screenshot above, the dimensions Product Name and Product Number were selected.  When you sort these by DimensionNo, Product Name comes before Product Number since 3 comes before 4 and when you rank these by their sorted value, Product Name is first and Product Number is second.  This same idea was used in all the dimensions as you can see in the second dimension shown below.

    field2.png

    The measures are done in the same manner.  Below is the Field and Label for the first measure and the additional measure columns will follow the same concept as the dimension columns.

     

    Field

    m_field.png

    Label

    m_label.png

    Now the last step is to add a conditional show to the columns.  Basically, you only want the column to show if there is a dimension and/or metric selected to be displayed.  For the first dimension column, you will set the “Show column if” property to:

    condition.png

    For the second dimension, it will be the same except if greater than or equal to 2 and so on.  The first measure will have the “Show column if” property set to:

    m_condition.png

    Additional measure columns will follow the same format as described above for dimension columns.

     

    Once all the columns are added and the properties are applied, the user can select the dimensions and metrics they would like to see in the report.  By default, the column order will be based on the DimensionNo field but feel free to drag columns in the table to a new position.  For more information on how Jason used FirstSortedValue, check out his document or Qlik Sense Help.

     

    Thanks,

    Jennell

    Show Less
  • qlik-community-blogs.jpg
    Qlik Design Blog

    Qdt-components - latest additions

    Qdt-components is a library that we've created to support the Demo Team's work.In the past I talked about how we can use it with various frameworks, qdt-components - A Components Library that can be used in simple Html, Angular 5 and React‌ and as a Wordpress plugin, qdt-components - A Wordpress plugin.‌I have also shared with you, some of the components with examples on how to use themqdt-components - Horizontal Barchart by Picasso.js &amp; ... Show More

    Qdt-components is a library that we've created to support the Demo Team's work.

    In the past I talked about how we can use it with various frameworks, qdt-components - A Components Library that can be used in simple Html, Angular 5 and React‌ and as a Wordpress plugin, qdt-components - A Wordpress plugin.

    I have also shared with you, some of the components with examples on how to use them

    qdt-components - Horizontal Barchart by Picasso.js &amp; Selection Toolbar and, Qdt-components &amp; Picasso.js - More Charts!‌ (Custom Selection Toolbar, Picasso Horizontal/Vertical Barchart, Pie Chart, Scotterplot, Line Chart and Combo Chart)


    Since then, we have added some more components. Below are the latest additions with their examples on how to use them in your websites. Here are the latest additions with v1.3.5

    Enjoy

    Yianni

    Show Less
  • Image Not found
    Qlik Support Updates Blog

    Scaling the QlikView Publisher

    Wondering how many engines to allow? How to scale the Publisher cluster and identify bottlenecks? What configuration fine-tuning we have available under the hood? Or really just wondering what the QlikView Publisher is at this point? Yeah, that's fair. Let's start with that: The QlikView Publisher is the Reload & Distribution engine in a QlikView deployment. Using QlikView Publisher, you can automate the generation of data stores to be c... Show More

    Wondering how many engines to allow? How to scale the Publisher cluster and identify bottlenecks? What configuration fine-tuning we have available under the hood?

    Or really just wondering what the QlikView Publisher is at this point? Yeah, that's fair. Let's start with that:

    The QlikView Publisher is the Reload & Distribution engine in a QlikView deployment. Using QlikView Publisher, you can automate the generation of data stores to be consumed, the reload of fresh data and the distribution of QlikView documents via email or to a specific QlikView Server or directory folder. In the QlikView Management Console, the Publisher is referred to as the QlikView Distribution Service, which is also the name of the Windows service managing the role. As a service, it can be clustered over multiple Windows server nodes.

    And as the deployment grows and demand rises, you might start asking yourself a bunch of questions on how to address bottlenecks, prevent the same, or generally scale it better.

    We here at Qlik are often approached by system administrators wanting to streamline their environment and address resource related issues that are currently causing their tasks to fail or not to trigger as expected. Fortunately, the QlikView Publisher is flexible and allows for a wide range of configuration options to help with that, though not all of them are immediately evident.

    This new whitepaper (Scaling the QlikView Publisher) aims to demystify the scaling and fine-tuning of your Publisher cluster and provide you with basic best practices. It's been put together by Qlik Architects and Support Engineers and offers a good baseline to get started with, all of which can be further expanded on to fit your environment's specific needs.

    The content covered in the document:

    • What is a QlikView Publisher?
    • Horizontal vs Vertical Scaling
    • Identifying Bottlenecks
    • Best Practices
    • Optimizing Stability and Performance
    • QlikView Distribution Service .config File
    • Publisher Groups
    • Overload Protection

    It is available in our Resource Library and the initial version of the pdf can be downloaded here.

    And if you're curious about more settings across the QlikView Distribution Service landscape, check out our knowledge article on configuration settings for the Management Console and Publisher (kb 000060690).

    As always, feedback and questions are appreciated, and we’ll get back to you soon as we can.

    /Sonja

     

    Show Less
  • Image Not found