Pivot Table Grids

Using dimensions on the X and Y axis and plotting measures at the intersection is a useful visualization. The out of the box solution in QlikView is the Grid chart.

The grid chart does have limited options for representing data.

The Pivot Table can be a more robust alternative.  A Pivot Table grid (Crosstable) is created by dragging one of the dimensions to the horizontal position.


Now we can represent the measures as a heatmap by coloring the background of the cells.  This is frequently a more effective visualization than circles,  .

We can also display numbers in the cells.


We can display multiple expressions per dimension.


Here I show both the number and a linear gauge allowing for clear comparisons between Regions. The user can swap the dimensions if desired.


You can mix colors and numbers to show interesting patterns. Here’s a map of average Sunrise/Sunset/Daylight for my home town.

Maybe it’s not a design winner, but I find it interesting.


We can blank some cells in the grid to make meaningful shapes, in this case a rough outline of the United States.

All of the examples shown can be downloaded here.

A few styling tips:

  • Style format “Clean” is a good starting point for managing border lines and spacing.
  • “Custom Format Cell” Border before/after (double line) can be used to create white space between rows as shown in the Minimum Wage example above.  Also, setting Text Size to other than the default 100% can be useful.

Do you have any examples of Pivot Grids to share?



16 thoughts on “Pivot Table Grids”

  1. I have used pivot tables to create gantt charts, not that unique i know but one example used by many more in the community.

  2. I used this kind of object in retail applications (or documents qv) to display with “traffic light” which branch had sent their data to the central Dababase.
    Generally this kind of businesss work offline from central host and data is sent in a asynchronously manner, so the traffic ligth is a quickly way to show what data is showing in de QV apps.

    1. Karl, I don’t know of a specific limit on the grid size. I modified my Daylight chart to have 365 dates across the top and 1440 minutes on the left and it rendered fine. That’s 535k cells! Not a particularly useful viz, and probably better plotted as a Scatter Plot.

  3. Rob
    I would like to thank you for putting these together; they were very helpful.

    I did have a question regarding the heat-map. If you go to the ’presentation’ properties tab and check off ‘Show Partial sums’ for the days(row) and times(column) the text color mix will carry over and the majority of these totals will not be visible. Is there a way to adjust the color-mix coding to show these partial sum totals as just black()?


    1. Hi Rick,
      I’m not following. When I check “Show partial sums” for both dimensions the heat block and the text show up just fine. The comments section doesn’t allow for pasting graphics. If you have a different result, contact me on the Contact form on this site and I’ll arrange to look at the image.

        1. Rick,
          You can conditionally format by detecting the Totals with Dimensionality() (total row) or SecondaryDimensionality() (total column). So modify the Text background to look like this:

          if(Dimensionality()=0 OR SecondaryDimensionality()=0, black(), //otherwise

          The same can be done for the Background color to force a specific color. Or the same colormix scheme can be carried over in the total rows by modifying the aggr() to use only one dimension on the total rows.

  4. Using the pivot instead of the grid chart means you can have a larger dataset as the table can scroll where the grid chart would just use smaller dots

    Love the cartograph of the US btw 🙂

  5. Hi Rob

    This is excellent. Especially the US States map.

    We no need to bother about Google API calls, Latitude, Longitude, boundary details. With just the X and Y axis grids, it does the magic and the rest will be taken care by Custom format Cells.


Leave a Reply

Your email address will not be published. Required fields are marked *