Bullet Graph in Tableau


In this post I am going to introduce one of the most interesting graphs that we can find in Tableau, the Bullet Graph. It was created by Stephen Few and its goal is replace the gauges (i.e. the typical speedometer) because these ones waste a lot of space in the dashboards and sometimes they are difficult to understand.

The bullet graph is designed to display the comparation between two measures, for instance Revenue and Budget Revenue. Also we can set-up different qualitative measures ranges to measure the KPI performance, defining when the measure is on-track or not.

To create this graph, go to the Show Me button (note that we need two different measures to start using it).

In this example, we have two measures: Revenue and Budget Revenue for different year periods. The goal is to compare actual and budget revenue and also assign different ranges: good, regular or bad.

Choosing two measures and one dimension and selecting the Bullet Graph type, Tableau will display the following chart:

The blue bar should be the Revenue but Tableau has chosen Budget Revenue, and the black line should be the Budget Revenue because it is the target metric by year.

To swap the bars, right click on the Axis and select the option Swap Reference Line Fields. Now, the values are in the correct position for our analysis.

You can analyze taking a quick look if the revenue is close to the estimated budget by year.

This graph also allows us to determine different quantitative ranges to measure KPI performance. In order to do that, right-click on the Axis and choose Edit Reference Line> 60%, 80% of Average Budget Revenue.

In the dialog box, select Distribution and Scope Per Cell. In the Computation area, you will set up the percentages that you want (in this example we want to show the reference line as percent of the Total of Budget Revenue and set percentages to 60 and 90)

Let's apply a fill color to the Reference Line, for instance a Stoplight fill.

There are many other options to apply to the graph, for intance you might reverse the colors of the Stoplight assuming you want to show Expenses instead of Revenues. Also you have the choice to show the labels of the different percentages as you see in the graph below.

In 2012 you can easily see that  actual revenue (blue bar) is in range 60%-90% of budget (in the yellow area). In 2011 actual revenue is bigger than budget and it is in the green area because it is bigger than 90% of budget revenue.

To conclude the article, I want to highlight the power of this type of chart that provides a simple and complete analysis between different measures. Using bullet graph instead of gauges will save a lot of space in your dashboards improving your visualization.

How to burst e-mail messages via Oracle BI Publisher API


Oracle BI Publisher is a reporting solution to author, manage and deliver all your reports and documents easier and faster than traditional reporting tools.

Using BI Publisher’s bursting feature you can split data into blocks, generate document for each block and deliver the document to one or more destination. The method by which report bursting is carried out is based on a user defined rules that takes account of security or data distribution.

In this article we will try to present how to burst e-mail messages with the help Oracle BI Publisher programming interface – Java API.


We would like to send an email to all our customers with a custom text message.

Before we start, we need to get WSDL file. You will find it entering the following URL from your browser:


Please save the WSDL file in your local system.

Next step is to create Web Service Proxi with the help of a wizard in JDeveloper. Right click on Project, select "New" and pick Web Services Proxy from Web Services Tab.


Follow the wizard steps using WSDL file and choosing JAX-WS Style as a Client Style.

Once you have done it, JDeveloper automatically generates all the required Java classes. One of them is Proxy class called "PublicReportServicePortClient".

Having this class you can start implementing our bursting solution.

To be able to process bursting we are calling Bursting Processor Engine:

                                                        BurstingProcessorEngine dp=new BurstingProcessorEngine();

In our Java class we are implementing BurstingStatusListener coming from BIP Bursting Library:

Bursting Processor Engine accepts three parameters:

         1.  Temporary Directory location

              In our case it is: “C:\\JDeveloper\\mywork\\sample\\”

         2. Bursting Control File

             A bursting control file is an XML based file that defines the answers to 4 main questions.

            How do I burst the document?

            How do I deliver the burst file?

            Where do I deliver the burst file?

            What should the delivered file look like?

We will use following Bursting Control File:

Let’s take a close look at Bursting Control File.

It has a following structure:

With a single burst you can define from one to many channels.  Beside EMAIL deliver you can also use File, Fax, FTP and SFTP. Each delivery definition has its own ID. Based on this ID it can be associated with Document Delivery. In our case message ID is generated based on variable taken from XML Data File filed called EMPNO.

       3. XML Data File

            We will use following XML data for the bursting report:


Standard BI Publisher functionality allows for the bursting and delivery of your reports to various output mediums.  Sometimes you can find a user request that is difficult to implement using standard BI publisher options. In this case it is worthy to use API.

The format of the Bursting Control files can be difficult to create as they are not very user friendly.  I hope that our Bursting Control file example will help you implement your custom bursting solution.

privacy policy - Copyright © 2000-2010 ClearPeaks