Jump to content
  • Using Spotfire for visualizing market development KPIs

    This article provides an example of how to configure a Spotfire KPI chart to visualize KPIs for market data. In this case, we want two KPIs for visualizing.


    The overall market (which we define as all brands in the data set) development this month, compared with last month, as a percentage.

    • The development for each individual brand this month compared with last month as a percentage.

    We want to color the overall market KPI based on the following criteria.

    • If it is higher than 5%, it is Good (Green).
    • If it is between -5% and +5%, it is OK (Yellow).
    • If it is lower than -5%,  it is Bad (Red).

    We want to color the Brand KPIs according to the following criteria.

    • If it is more than 5% higher than the market KPI, it's Good (Green).
    • If it is within 5% (positive or negative) from that market KPI, it is OK (Yellow).
    • If it is more than 5% less than the market KPI, it is Bad (Red).

    Here is how the final dashboard should look.


    In this case, the data is typical Market Research data. Here is an example.


    In this case, we want to show all KPIs in one chart. The Overall Market KPI will have only one tile, and the Brand KPIs will have one tile for each brand. We start by creating a KPI chart and defining the Overall Market KPI.

    Creating the KPIs

    The overall Market KPI

    1.  Create a new KPI chart, and set the KPI Settings, as demonstrated below. (Make sure there is nothing on the Tile by axis.)



    2. Calculate the Value for the Market KPI. You can do this easily by selecting the column Sales Amount, and then selecting Difference % as Aggregation. Format the value as percentage. Also, provide text for the Display name.



    To give the single tile a useful name, you could set the Tile by axis to a simple custom expression: "<"Market">".

    3. Implement color rules for the Market KPI:



    The rule for Bad is set as follows.



    The rule for OK is set as follows.



    The rule for Good is set as follows.



    The KPIs for each individual brand

    1.  Create a new KPI, and then set Tile by to the column "Brand".



     For the Value axis, just use difference% as for the Market KPI. 

    2. On the color axis, we want to compare the development of this brand against the development of the market (which we define as all brands together). We need a slightly more complex custom expression on the color axis.

      "Sum([Sales Amount]) OVER (All([Axis.Tile])) THEN ([Value] / First([Value]) 
       OVER (NavigatePeriod([Axis.X],"Month",-1))) - 1 THEN [Y.FinalValue] - [Value]"

       An explanation of the expression follows.


    Thus, the result of the expression is the difference between the individual brands development and the overall markets development. 



    3. Now, all we have to do is to define color rules that implement the following logic.

    • If it is more than 5% higher than the market KPI, it is Good (Green).
    • If it is within 5% (positive or negative) from that market KPI, it is OK (Yellow).
    • If it is more than 5% Less than the market KPI, it is Bad (Red).


    These KPIs provide a clear overview of the development both of the market in general and the individual brands. It is a dynamic solution that responds to filtering and other data manipulation, as you would expect from TIBCO Spotfire. Using this visualization type, you can analyze historical time periods and exclude certain categories from the analysis.

    This example can be extended with other KPIs, such as for each manufacturer, for each category, and so on, and perhaps you can use drill-down, too. Furthermore, the KPI chart could be used in a regular web dashboard, in a mobile app, or in the desktop client.

    The DXP file used for the screenshots is attached. You need Spotfire 7.6 or later to use it.

    Read more about using the KPI chart and using Spotfire on mobile devices here:




    User Feedback

    Recommended Comments

    There are no comments to display.

  • Create New...