Oracle Bi Solutions

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Friday, 1 March 2013

OBIEE11g - Inline Microcharts using Google Charts API

Posted on 04:11 by Unknown

By using a combination of techniques it is possible to display charts inline, within an OBIEE report. In other words we can achieve this type of ‘sparkline’ trend indicator instead of a plain table.
To achieve this we need to make use of Google’s excellent chart API. The following example is a bit of a clumsy hack but it illustrates some clever principles at work. In summary we need to use a combination of a native OBIEE request and some javascript to manipulate a dummy, placeholder image via the Document Object Model (DOM).
Firstly create a simple report. I’ve used the Sample Sales repository (11gR1) for this example but the technique also works on version 10.3.x.
I’ve created measure columns for ‘this month’ and ‘last month’ and have used the ‘filter using’ syntax to fix their data for 2 successive months. E.g.
LM column formula:
IfNull(Filter(“Base Facts”.”Revenue” using “Time”.”Per Name Month”=’2010 / 11′),0)
TM column formula is basically the same but fixed for month 12.
Note that the IfNull function is there so we get zero instead of null data – this is needed for the Google API.
Once you have your base columns, add an extra column to the request for the chart image. Set the formula to build up an string representing an HTML image tag. The formula should be as follows, including the single quotes.
'<img src="" id="trend_' || Cast(RCOUNT("Base Facts"."Revenue") as char) || '" />'
Notice how I include a row pointer (the RCOUNT part) so that our image can be uniquely identfied later by javascript.
Set the Column Properties > Data Format to treat the contents of the column as HTML
Next, add a second additional column to the request and edit its formula so that it contains a comma delimeted set of the last 6 months’ values. We must use the ‘Cast’ operator to convert each fact measure into a char equivalent. After the measure values we also concatenate another instance of the row pointer as per the earlier step.
Set the Column Properties > Data Format to be ‘Custom Text Format’ and enter the following:
@<script>buildGoogleChart(‘@’)</script>
Now we need to add the javascript to the report. On the results tab add a new view of type ‘Static Text’. Edit it and paste the javascript which handles the calls to Google for the images. Make sure you tick the box for ‘Contains HTML Markup’. The javascript is as follows:
<script language="javascript">
function buildGoogleChart(inputVals){

arrVals = inputVals.split(',');
var obiData = '';

for (x=0;x<arrVals.length-1;x++){
arrVals[x] = (isNaN(parseFloat(arrVals[x]))) ? 0 : parseFloat(arrVals[x]);
obiData += arrVals[x].toString() + ',';
}

obiData = obiData.substring(0, obiData.length-1); // remove trailing comma

var maxVal = arrVals[0];
for (x=1;x<arrVals.length-1;x++){
if (arrVals[x] > maxVal) maxVal = arrVals[x]; }

var minVal = arrVals[0];
for (x=1;x<arrVals.length-1;x++){
if (arrVals[x] < minVal) minVal = arrVals[x]; }

imgURL = 'http://chart.apis.google.com/chart?';
imgURL += 'cht=lc:nda'; // line chart, no data axes
imgURL += '&chco=005CB8'; // rgb colour of chart line
imgURL += '&chs=65x18'; // image width x height
imgURL += '&chf=a,s'; // transparent background
imgURL += '&chd=t:'+obiData; // append data values
imgURL += '&chds='+minVal+','+maxVal; // x axis lower and upper limits

var imgID = 'trend_' + arrVals.pop().toString();
imgObj = document.getElementById(imgID);
imgObj.src = imgURL;
}
</script>
Add the static text view to the compound layout, above the table where the charts are to be displayed.
The final step is to hide the column containing the javascript in the results table. We can’t use the regular column ‘Hide’ checkbox or the script call won’t get written to the page. Instead we must ‘fake it’ by changing the borders and colours so the column blends in to the white background.
Neat eh? With a few minutes effort it would be easy to expand this idea as the beginnings of a nice dashboard.
Why not download the entire request as XML. You can paste this into the Advanced criteria tab (11g) and have a play.
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Posted in OBIEE | No comments
Newer Post Older Post Home

0 comments:

Post a Comment

Subscribe to: Post Comments (Atom)

Popular Posts

  • Upper Function
    In Oracle/PLSQL, the  upper function  converts all letters in the specified string to uppercase. If there are characters in the string that ...
  • OBIEE 11g Hide/Show Sections based on Dashboard Prompt
    allow a user’s interaction to hide/show certain sections of a dashboard. In this particular case the user wanted to choose either ‘Quarterly...
  • [OBIEE11g] - OBIEE Dashboard for Informatica Metadata Reporting
    The metadata that Informatica Power Center 8 retains in its repository can be exposed via OBIEE reports and dashboards. This metadata includ...
  • [ODI] - Frequently Asked Questions (FAQ)
    Here is a list of FAQs about Oracle Data Integrator 1) What is Oracle Data Integrator (ODI)? 2) What is E-LT? 3) What components make up Ora...
  • OBIEE 11g not showing new dashboard in the drop down menu
    When creating New dashboard in  OBIEE 11g, I have faced with issue that dashboard name did not show up in drop down dashboard menu. 1. When ...
  • Data Modeling: Schema Generation Issue with ERwin Data Modeler 7.3
    We are using Computer Associate’s ERwin Data Modeler 7.3 for data modeling. In one of our engagements, we are pushing data model changes to ...
  • Installation Informatica Powercenter 9.1 on Oracle Enterprise Linux 5.6
    Ingredients: Program Version Filename Oracle Express 11G 11.2.0 oracle-xe-11.2.0-0.5.x86_64.rpm SQL Developer 3.0 sqldeveloper-3.0.04.34-1.n...
  • Informatica Powercenter Workflow Manager Repository Navigator docking float issue
    In case you’re also experiencing where your Repository Navigator is not dock or attached and it seems just floating within Workflow Manager ...
  • [OBIEE11g] - Creating Dashboard Traversing Through Graph
    The general requirement asked for by customers is that they want to Click on the Main Dashboard Page’s Graph and be transferred to the other...
  • OBIEE 11g - Query Limit
    Query limit and number of minutes a query can run per physical layer database connection, follow the below steps. > Login to Repository u...

Categories

  • BI Publisher
  • DAC
  • DataWarehouse
  • Hyperion
  • Informatica
  • OBIEE
  • ODI
  • Oracle Applications EBS 12.1.3
  • Oracle Database
  • PL/SQL
  • SQL
  • Unix/Linux

Blog Archive

  • ▼  2013 (500)
    • ►  November (8)
    • ►  October (1)
    • ►  July (4)
    • ►  June (9)
    • ►  May (15)
    • ►  April (24)
    • ▼  March (43)
      • EBS 12.1.3
      • OBIEE 11g - Weblogic Security Administration
      • Error: OBIEE 11g: Error: "Stream Closed" Server Ex...
      • OBIEE 11g - Oracle Map viewer Installation & Confi...
      • Hyperion - Essbase Production Server crash
      • Hyperion - EPM, Fusion Edition Performance and Tun...
      • Hyperion FAQ'S
      • Hyperion Planning 11.1.2.2 Calculation Manager Is...
      • OBIEE 11g - Hyperion Integration With OBIEE
      • OBIEE 11g - Single Sign On With (EBS)
      • Hyperion Financial Reports – Preview User Point of...
      • OBIEE 11g - Display user name and time of the repo...
      • OBIEE 11g - Getting the custom links on the OBIEE ...
      • OBIEE 11g - supports 2 kinds of clustering Vertica...
      • DAC - Replace Base: Procedure for Upgrading
      • DAC - Simplified Refresh From Base Option
      • DAC - Peer to Peer Merge
      • OBIEE 11g - User Specific UI
      • OBIEE 11g - Multiple values in single column using...
      • OBIEE 11g - Look up Tables in obiee11g
      • DAC - W_DAY_D and Configure the Multi Calendar su...
      • OBIEE 11g - Roll back Selection Security to be Enable
      • OBIEE 11g - XMLP Server Cache Control
      • OBIEE 11g - How to remotely connect to online RPD
      • BI Publisher - 10g to 11g Upgrade Process
      • OBIEE 11g - Deployment of BI Publisher reports
      • OBIEE 11g - Deinstall
      • OBIEE 11g - Uploading/calling PDF file into OBIEE ...
      • OBIEE 11g - Switching Between Multiple Reports
      • OBIEE 11g - Action link saving a report in local d...
      • OBIEE 11g - Disable Caching
      • OBIEE - Executing Stored Procedures/Functions befo...
      • How to call stored procedure from DAC?
      • OBIEE - Selecting a Single Value and Showing a Range
      • OBIEE - Handy Date Session Variables
      • OBIEE 11g - Calculated % always shows up as 0%
      • OBIEE 11g - Using a Dashboard Prompt as a Column S...
      • OBIEE 11g - How to get proper date sorting in graphs
      • OBIEE 11g - Sorting on the Total in a Pivot
      • OBIEE - Google Charts
      • OBIEE11g - Inline Microcharts using Google Charts API
      • OBIEE 11g - Dashboard Background Image or Watermark
      • NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A gen...
    • ►  February (73)
    • ►  January (323)
Powered by Blogger.

About Me

Unknown
View my complete profile