One of the new features release on Monday with Qlik Sense 1.1 is the ability to generate date and time fields. Now, you may be thinking that you always generate date fields in your applications – I know that I do – but in Qlik Sense 1.1, we have introduced the Declare and Derive statements that make it easier for you to create a calendar definition that you can use for all date fields in your application. This is brilliant and easy to do.I tested it out by loading some employee expense data that looks something like this:I then used the Declare statement to create a calendar definition.I named the definition Calendar and tagged it as $date. I indicate what the first month of the year should be and then I list the fields that I want generated by the definition. In this example, I entered Year, Month, Date and Week. I could enter others if I want here like Day and Time.Last, I entered one group that will create a drill down for Year, Month and Date and I named it YearMonthDate. I could list other groups here as well if I need them. In this definition $1 represents the data field from which the date fields will be generated. In this example, that will be the ExpenseDate field.Now that the calendar definition is created, I just need to use the Derive statement to apply the calendar to the date field that I have already loaded. In this example, the field is named ExpenseDate and my Derive statement looks like this:If I had more date fields that I had loaded in my data model, I could apply the calendar definition to all of them in the Derive statement by separating the field names with commas. In my Derive statement I used specific data fields but there are alternatives as well. You can also derive fields for all fields with a specific tag or for all fields with the field definition tag. You can find examples of these in Qlik Sense Help.Once this is complete, simply reload the app. Now when you go into the Fields tab in the Assets panel, you will see a tab for Date & time fields and when you expand it, you will see the date fields that were generated by the calendar definition. These date fields can be used like you usually use them in your applications – as filters, in visualizations and so on.I recommend you try it out and refer to Qlik Sense Help for details if you need help. It will save you time especially if you have an application with a lot of date fields that you would like to build out into a calendar. You create the calendar definition one time and in one statement (the Derive statement), you can list all the fields that the definition should be applied to (that you want to generate date fields for). Reload and the calendar is done. Did I already say that this is brilliant!Thanks,Jennell
...View More
Hello Qlik Community! You may be wondering - how do we make our product delight as many people as possible? It is quite simple actually. We take everything we've learned as a software company and push it one step further. That being said, we are very excited to announce Qlik Sense version 1.1, our first point release for our next generation self-service data visualization software. Qlik Sense 1.1 introduces new visualization objects, usability improvements and of course bug fixes. To learn more about Qlik Sense 1.1, watch this brief video to see its highlights and continue reading on to learn about each feature. Get a free version of Qlik Sense Desktop - hereQlik Sense 1.1 Highlights New Pivot TableA welcomed addition to Qlik Sense is our new Pivot Table object. It offers rapid interchangeability of metrics and dimensions, which create different responsive views of the same data-set. Depending on what you want to focus on, you simply “pivot” dimensions and measures to summarize and group data of interest and hide data that is either too detailed or irrelevant during the analysis. We have also added on-the-fly filtering and search, which simplifies your analysis by allowing you to focus on what’s important so the necessary data is displayed front and center. When used in combination with other Qlik Sense visualizations, uncovering outliers and spotting areas of interest become even easier. Watch this brief video (7 min) below to see the Pivot Table in action.The KPI ObjectOur customers are just as innovative as we are. We noticed that the Text and Image object was being used often to present summarized metrics. So we took this capability one step further and we added a new type of visualization called the KPI object. The KPI object is used to quickly track performance of your metrics. It can display a main measure along with an optional secondary measure for complimentary or comparison purposes. There is also conditional styling and defined thresholds, which can easily highlight alerts and comparison differences. With the addition of graphics, such as trending arrows and other symbols, visual notification is improved - allowing you to quickly visualize and track performance of key metrics and measures. Take a look at this brief video (5 min) to see the KPI object in action.Map Object UpdateIn this latest release of Qlik Sense, our goal was to make our mapping easier to use. By teaming up with Mapbox, an innovative provider of comprehensive mapping capabilities, we provide simplified mapping without the need to negotiate usage agreements or pay additional fees. This is available to both the Free Qlik Sense Desktop product and Qlik Sense Server. If you have your own map service or want to use another the option is available for you to configure. Other improvements include null value recognition, adjustable opacity, improved color intelligence, labels for expressions and the ability to take snapshots for storytelling.Watch this brief video update (8 min) to learn more about the changes to the Qlik Sense map object.Finally, small changes make a big difference. We have added a number of usability enhancements that improve the overall user experience when navigating and creating content in Qlik Sense. Some of these include, improvements to Data Storytelling, additional shortcut menu options, automatic grouping of date and time fields and much more, please refer to the Qlik Sense 1.1 release notes for more information on these and other improvements. Thanks for taking the time to learn what’s new in Qlik Sense. Don’t forget to visit the New to Qlik Sense forum on the Qlik Community where you can quickly learn how to get started with Qlik Sense, browse how-to videos and join in the conversation with me and others.Kindest Regards,Michael TaralloSenior Product Marketing Manager@mtarallo - Follow me on TwitterQlik
...View More
Set analysis is one of the more complex things you can use in QlikView or Qlik Sense. Its syntax is often perceived as complicated and there are some misunderstandings around it. So here is my short explanation.
Since the release of Sense back in September 2014 a lot of good things have happened to the product. If you look back you almost can’t believe that it was just 6 months ago when we launched Sense. Since then, R&D guys and girls have added quite a lot of improvements and new functionality (and more is coming next) into the product.Today, I don’t want a focus on the company’s centralized development. We talk enough about ourselves here, but on the decentralized Sense development guerrilla from out there. Since January 26 these individuals contributing with a fresh view to Qlik Sense (to QlikView as well) have a place to share their ideas and Open Source projects. It’s called Qlik Branch and it’s open for everyone to join.From all the projects already submitted to Qlik Branch, I will nominate 3 of my favorites created so far. SenseIt by Alex KarlssonIt goes to my personal Top 1 for a variety of reasons but particularly because it opens a completely new and unexplored category for Extensions. We are used to seeing extensions (or visualizations) within the product itself but this is something completely different. SenseIt is a browser extension or plugin that will let you create a new app on the fly by capturing a table from Chrome and loading it as data into your Qlik Sense Desktop. Truly amazing experience and the name is cool too (isn’t it?)D3 Visualization Library by Speros KokenesAs a visualization junkie I am, I love D3.js, I truly love some of the beautiful and smart visualizations built around the popular JavaScript library. I have seen (and ported) some of those charts to Sense, one by one, so you end up having a packed chart library on your Sense desktop. Speros have gone a bit further by converting the Visualization object into a truly D3js library where you can go and pick up your favorite D3js visualization, very entertaining. In future releases we might end up having control over the chart colors and some other cool stuff that will make this extension superb, remember you can contribute and make it even better. deltaViz self-service dashboard by Yves Blake For those of us QlikView lovers any addition to the dashboard world in Sense it’s always very much appreciated. If it’s very well executed and designed as it is deltaViz, then there’s no reason to not try it. DetalViz is a complete solution for dashboards focused on comparisons and very well implemented to take advantage of Qlik Sense grid system. If you still have doubts about this visualization, you can see it live here: https://www.youtube.com/watch?v=4s30AEf4qJc These are my top 3 favorite extensions/visualizations created so far, but what are yours?AMZ
...View More
It’s a simple but profound statement to say that QlikView has worked with ODBC connectors for many years. Even our new product, Qlik Sense, has worked with ODBC connectors since its creation. But what are the implications of working with ODBC connectors?ODBC was created to solve a simple problem: how to extract data from different databases in a fast and standardized way? Nowadays, most database vendors supply ODBC drivers or OLE DB providers and there’s even a thriving market of driver providers. If your application supports ODBC, you have a huge range of databases to connect to. This means that there are many, many databases you can connect QlikView and Qlik Sense to.I got bored one day and started to list the ODBC databases QlikView and Qlik Sense connect to. You can see my list to the right, not including different versions of the same driver.Now if you need something more, then you can always use an existing 3rd party custom connector or create one using the Qlik QVX SDK. So there are always options and ways that your data can be loaded into a QlikView or Qlik Sense application. The options are endless.Do you know of more databases you can connect to with the Qlik ODBC connectors?
...View More
What is design? Who is a designer? I've been a designer for 13 years and what I do now isn't the same as what I started doing but I'm still a designer. I spent the first couple of years designing books and doing traditional ad agency work, eventually moving into User Experience design. While the nature of the output changed I was still a "designer" just in different mediums.I've heard the term "designer" used to describe a wide variety of jobs. Usually when people outside of the creative world talk about designers they are thinking just about people who make things look nice. At the same time however I've heard Information Architects referred to as designers and they don't usually contribute to the aesthetic at all. So who's a designer? What defines a designer? I think the answer is in how you answer the larger question of, "what is design?"What is Design?Design is not defined by making things look pretty. Making things aesthetically pleasing can be a component of design, but it is not the sole defining factor. At it's most broad, design is problem solving. It is making a solution to meet the needs of other people (users). By this definition you can have well designed code, a well designed wire-frame, a well designed city, a well designed phone, a well designed experience, etc. It isn't necessarily about the visual. When something is well designed it meets the needs of the intended audience - it has solved a problem. User Experience design works to solve the problems of users interacting with an experience (usually digital). A UX designer then is someone taking human computer interaction knowledge, usability data, and visual design and bringing them together to create great interactive experiences that help people. Still though the idea that great design means something looks great persists. Is Craigslist well designed? It isn't attractive but it has the content people want and it solves a problem. Is the Juicy Salif well designed? It's beautiful but the gold plated version can't be used to juice lemons because the acid in the lemons will destroy the gold. It can be challenging to define what makes great design, but at its core is the creation of something that solves problems for others.
...View More
The Evaluate() function is a string function that takes one text string parameter. If the string is a valid QlikView or Qlik Sense expression then the evaluated result of the expression will be returned. If the string is not a valid expression, then Null is returned. The Evaluate() function can only be used in the script and not in a chart expression. Evaluate() will do the math for you in the script and return the result. For example, if you are loading a field whose content is expressions like this:Then you can view that data in two ways. You can either view the actual expression or you can use Evaluate() and view the results.The Evaluate() function is also useful when you are loading a number from a text file or a text field in a database with more than 14 digits. When that number is loaded into QlikView, it is interpreted as a string since it is too long (more than 14 digits).Note that while using Evaluate() returns a number, it is only stored with 14 digit precision. While you may be able to see more than 14 digits, this is just the formatting. The internal mantissa is only 14 digits.Evaluate() can similarly be used with variables which can be helpful if you have a value that you would like to use multiple times in the script.So why use a Evaluate()? At first it seemed unnecessary to me because the calculation would still be done without the Evaluate() function but then I realized that that is only the case when the values are numeric and not strings. So Evaluate() is helpful when your expression is in a string format or when the expression is a number with more than 14 digits. It allows a string expression to be evaluated and the result returned. It is like a short-cut to solving the expression. Try it out!Thanks,Jennell
...View More
A chart in QlikView or in Qlik Sense has Dimensions and Measures. What these are is described in Dimensions and Measures. This post is about charts with multiple dimensions and/or multiple measures and your options when designing such charts.
In the words of the Fugees; Ready or not, here I come. Be warned though, this will be a wall of text so grab yourself a cup of coffee, sit back, relax and immerse yourself into the world of code and a little history lesson.A brief history of timeWith the release of QlikView 10 we shipped the possibility for developers to build their own QlikView objects using web technologies like javascript, HTML and CSS. These objects could leverage the power of the QlikView association engine, making selections and behave just like standard QlikView charts would. Did you need a specific chart for this specific project? No problem, now you could extend the standard set of charts with something custom and specific just for you. So was it a huge success out of the gate? Hell no.Not only did this introduce a new skillset that previous was not common amongst a BI team but back then the browser landscape was extremely fragmented and inconsistencies between them was many. Things started to pick up as QlikView 11 was released (adding support for Document Extensions) and a huge improvement was made both to the documentation and the many examples that started to ship with the product. I guess it was also around this time that things really started moving outside of the Qlik-o-sphere. Infographics, charts on the web and javascript frameworks became more commonplace, normal people’s interest in data spiked and development time on the web was greatly reduced.Over the years we have seen innovative mapping solutions for QlikView entering the market, lots and lots of new charts has been developed and are available for free and under open source licenses. Mind you this is not something Qlik has developed, we merely produced the tools and the community stepped up and has produced some amazing things.Fast forward to 2015 and beyond Charts and data in the real world has become more and more common place, web technologies has advanced tremendously and we are soon reaching an evergreen state of web browsers allowing developers to leverage the greatest and latest features the web has to offer. Visualization frameworks and libraries are popping up everywhere making it easier and easier to chart data which in turn also puts pressure on us, Qlik, to be as open as possible and be able to integrate with these libraries.Qlik Sense has also been released for almost 6 months and that marked a milestone for us, not only is it a new product but it was also built with the mindset that everything a software developer at Qlik is able to build should be built on an open and documented platform that anyone should be able to leverage.We no longer make a separation between things built by Qlik and visualizations produced by a partner or a customer, we give each visualization an equal amount of weight.We also took the opportunity to do a little name change, because naming things are important. No longer is it called Extensions, as in an extension of the product, but instead we simply refer to it as Visualizations.Enough with the ranting, let’s write some code! So what skills do you needA understanding of HTML and CSSBasic to advanced javascript knowledgeWhat software do you needQlik Sense DesktopA text editor (Optional)This video will give you a short introduction to the workbench editor that ships together with Qlik Sense Desktop and showing you how to build your first visualization.Additional assets: http://help.qlik.com – Documentation http://branch.qlik.cm – Developer Community to share and collaborate on projects
...View More
In the QlikCommunity forum I have often seen people claim that you should minimize the number of hops in your Qlik data model in order to get the best performance.
I claim that this recommendation is not (always) correct.
In most cases, you do not need to minimize the number of hops since it affects performance only marginally. This post will try to explain when an additional table significantly will affect performance and when it will not.
The problem is which data model to choose:
The question is: Should you normalize and have many tables, with several hops between the dimension table and the fact table? Or should you join the tables to remove hops?
So, I ran a test where I measured the calculation time of a pivot table calculating a simple sum in a large fact table and using a low-cardinality dimension, while varying the number of hops between the two. The graph below shows the result. I ran two series of tests, one where the cardinality of the dimensional tables changed with a factor 10 for each table; and one where it changed with a factor 2.
You can clearly see that the performance is not affected at all by the number of hops – at least not between 0 and 3 hops.
By 4 hops, the calculation time in the 10x series however starts to increase slightly and by 5 hops it has increased a lot. But this is not due to the number of hops. Instead, it is the result of the primary dimension table (the dim table closest to the fact table) getting large: By 5 hops it has 100.000 records and can no longer be regarded as a small table.
To show this, I made a second test: I measured the calculation time of the same pivot table using a fix 3-table data model, varying the number of records in the intermediate table, but keeping the sizes of the other tables.
In real life, this structure would correspond to a part of a more complex data model, e.g.
Facts - Products - Product Groups
Order Lines - Order Headers - Customers
The result of my measurement can be seen in the red bars below:
The graph confirms that the size of the intermediate table is a sensitive point: If it has 10.000 records or less, its existence hardly affects performance. But if it is larger, you get a performance hit.
I also measured the calculation times after joining the intermediate table, first to the left with the fact table, and then to the right with the dimension table, to see if the calculation times decreased (blue and green bars). You can see that joining tables with 10.000 records or less, does not change the performance. But if you have larger tables, a join with the fact table may be a good idea.
Conclusions:
The number of hops does not always cause significant performance problems in the chart calculation. But a large intermediate table will.
If you have both a primary and a secondary dimension (e.g. Products and Product Groups), you should probably not join them. Leave the data model as a snowflake.
If you have the facts in two large tables (e.g. Order Lines and Order Headers), you should probably join them into one common transaction table.
HIC
PS. A couple of disclaimers:
The above study only concerns the chart calculation time - which usually is the main part of the response time.
If the expression inside your aggregation function contains fields from different tables, none of the above is true.
Your data is different than mine. You may get slightly different results.
Further reading related to this topic:
To Join or not to Join
...View More