Archive for January, 2011

Designing BusinessObjects reports for mobile devices

Published by Ron Keler in BI At Large on January 31st, 2011 | 2 Comments »

Mobile devices are moving very quickly to replace computers and laptops as the new productivity tools for execs and employees. We all use our iPhones and BlackBerrys constantly. We check email, play with apps, chat and talk, whether we’re in the office, or outside. We are constantly connected. The BI vendors have been slow to respond to this trend, but are gaining traction and stepping up. BusinessObjects faces a particularly delicate problem as its main dashboarding platform (Xcelsius) is Flash based and will not run on Apple iPhone and iPad devices.

To respond, BusinessObjects released an iPhone/iPad app that is based on its Explorer product. It’s a great and intuitive way to explore data. However, it lacks the ability to configure navigation, or control high level of refinement, as you would expect from any dashboard or BI application, mobile or not.

I have spent some time exploring alternative options to the Explorer web app, and none proved to be very easy to use and effective. Web Intelligence, the reporting flagship product for BusinessObjects has many interactive features that would have made developing mobile applications terrific, but many don’t work on the iPhone platform. For example, using a table block as an input control to filter another report block, did not work on iPhone. After much experimentation, I found the best approach for designing your own reports based mobile application to be using Crystal Reports. Crystal Reports provide a nice drill down capability “out-of-the-box” that works on iPhone. The charts are image based, so will display on any mobile device, Apple’s included. And using report part navigation along with group down drills, you can create some very nifty reporting capabilities, “on the go…”

 

Xcelsius Step Chart – Combine charts to create a new kind of chart

Published by Ron Keler in Xcelsius on January 30th, 2011 | No Comments »

While BusinessObjects Xcelsius has many chart components that provide very robust variety “out-of-the-box”, more often than you like, users ask for a chart that does not exist as a preconfigured component. One of the ways to answer such needs is combining multiple charts by leveraging component properties such as transparency, the ability to sync (bind) scale and values, and the the size of position of components, relative to each other (in absolute, not relative terms. The lack of relative positioning in Xcelsius is a bit miss). Here is an example of a “Step chart” that was created to illustrate movements from opening to closing balance across several “steps”.

Download XLF Here.

Documentation – the difference between a great consultant, and a great consultant who cares…

Published by Ron Keler in BI At Large on January 29th, 2011 | No Comments »

A great consultant comes in, completes an impossible task with flying colors, wins the day for their sponsor, and leaves. A great consultant, who cares, also leaves behind documentation.

Documentation is most definitely the step child of any IT project. Unfortunately, most developers are either not thoughtful enough about their work to leave behind documentation, or simply don’t like it. Junior developers will document their work, but at a very rudimentary level, which basically equates to going through their code/product and unwinding it. Senior developers are too busy developing interesting “stuff” to be bothered with actually documenting it at a useful level of detail.

Well, as a consultant, I find it highly rewarding to see how much clients appreciate the fact that I always look to leave proper documentation behind, and also take the time to go through it with them. It’s a very simple actually: by leaving behind documentation that can actually help support the work I leave behind, I show that I care. I care about the client, and their long term success. I care enough to put together a deliverable that can serve to explain why I’ve done the things I’ve done (when there’s no doubt there were other ways to do them), how those things actually work, what to do to keep them up and how to extend them.

The same way you wouldn’t want to buy a consumer product with no documentation that explains how to use it, especially if it has any level of complexity bigger than a toothpick (and even those come with instructions on the box), why on earth so many IT, and especially BI, projects end with no proper documentation?

Well, a lot of it has to do with misunderstanding, or uninformed judgment. BI work is often perceived as “creating a report”. Well, modern reports are much closer to applications, then to letter size paper printed reports. They almost always include interactivity and functionality (from prompts to drill downs and navigation), they often rely on complex data that is sourced from multiple sources, they contains code (even reporting application that are GUI driven completely generate code to interact with a data source at some level) as well as visual designs, they incorporate business logic and are expected to address multiple (in some cases hundreds!) or use cases. When you lay all this out, the level of complexity is obvious and obviously merits a diligent effort of documentation, right? Well, the typical response is unfortunately still: “what do you mean you need 4 weeks to document a report???!!!”

Since BI is considered more of an IT discipline then actual software development, it is perceived as more utilitarian and commoditized then the R&D work that any perceives is involved in developing new software. However, BI work is often a lot closer to software development then wiring CAT 5 cables or setting up wireless access points. It always follows some sort of SDLC, includes large cross functional teams (business users, infrastructure, database developers, reports/applications developers…), and a high degree of creativity. Especially since most BI projects start out with high level vague requirements and evolve as they progress.

So, next time you work on a BI project, be sure to set aside some time to properly document your work. If for no other reason, your clients (internal or external) will love you for that, and will certainly take that into consideration when thinking about working with you again.

Tags: , , ,

Control the size of your Xcelsius dashboard in InfoView

Published by Ron Keler in Xcelsius on January 28th, 2011 | 8 Comments »

If you ever tried to publish an SAP BusinessObjects Xcelsius dashboard to InfoView by using the “Export” option to “Enterprise”, you surely ran into a sizing problem when viewing the dashboard. As the dashboard designer, you pay great attention to the dashboard canvas size and try to maximize each and every pixel on the canvas for optimized viewing and information delivery. However, when you go to open the dashboard you exported from to InfoView from within InfoView, you will most probably be surprised to see fonts reduced to sizes that make words illegible, components overlapping and other display problems. That is because InfoView opens the swf file you exported to the BusinessObjects repository without specifying the height and width attributes you created for your canvas. The swf scales to the user browser window size. It will likely be too small if opened inside the InfoView portal, or too big if opened in a separate window, and in either case, it will certainly not look exactly like you want it. So, what can you do? One work around you can use is provide you users a hyperlink objects inside of InfoView, rather than the actual swf object, as a way to open the dashboard. The hyperlink can direct the user request to a web page on the local BO server that will embed your dashboard with the proper dimensions, as well as handle the user authentication and embedding the user session token into your dashboard, in case you are connecting to a BusinessObjects universe via QaaWS or LO. You can follow the example below for the solution implementation details, this example is based on a BO system deployed using the standard Tomcat app server on windows.

  1. Create a directory inside the InfoViewApp web app directory to house the files you will create to redirect the user request and open your dashboard file. For example create a directory called dashboards in the InfoViewApp directory, like so: Tomcat55webappsInfoViewAppdashboards
  2. In this directory, you will host three files:
    1. an html file that contain a simple javascript command to open a new browser window. This is the file you will create a hyperlink to in InfoView. Its purpose is to guarantee that the dashboard will open in a new window, regardless of the user viewing preferences in InfoView.
    2. a .jsp file that will “harvest” the user session token, pass it to the Xcelsius swf file, and open the swf file using the width and height specifications you used in your canvas
    3. the actual Xcelsius dashboard swf file
  3. Finally, create a hyperlink in InfoView to the html file that will “popup” the dashboard in the desired size. You can use a relative url in your hyperlink (for example: ../../InfoViewApp/dashboards/pop_dashboard.html) which you can migrate through the import wizard without needing to change a host name on the server you will migrate this link to.

You can download an example, here. In the example, I also added the javascript to resize the dashboard, so not only it will always open in the correct size, users with larger screens can resize it if they wish (as described in this post). To use the example, extract the .zip and place the files in the directory you create in the InfoViewApp folder in step 1.

You can also download an example for adding a resize function to your dashboard here.

Some keys for a successful BI project

Published by Ron Keler in BI At Large on January 26th, 2011 | No Comments »

As you set to start working on a new BI project, you will need to address many technical issues sooner or later. Picking technologies and vendors, assembling teams, and working across the corporate silos to bring together information that does not come together under regular circumstances.. Well, before you get deep into the weeds of selecting ETL technologies or dimensional modeling, I would like to suggest you must consider whether the following conditions exist for your BI project to succeed:

Executive sponsorship and direction“it sounds great, but honestly, I got to run to my next meeting”

Real commitment to process improvement through better information and analysis is a very difficult to find. This is a lot harder than it sounds…  Almost any manager will tell you these are very important goals, and they will be happy to support them, but few can sustain a long term commitment to such goals in lieu of the daily grind of operational issues. Fires emerge everyday across the company, clients, investors, vendors, internal politics and so on and so forth, are all looking for immediate attention to their current burning issue. Production, manufacturing, supply, logistics, these are all aspects of your company that contribute directly to your bottom line. When you put BI in competition with shipping products, there’s no question who will win. Put on top of this a complex domain that sprawls across departments, technical and business resources and is not cheap to boot, and you start thinking it’s surprising any manager in their right mind would even want to hear about BI, right? Well, obviously not.  But being able to look above the “problem of the day” to get real understanding of the business is the single most important thing you will need management to embrace to be successful with a BI project.

Organizational culture that can accept change “the dashboard is stunning, but I need to download it to excel to finish my close process”

Business Intelligence content is typically an agent of change. Providing transparency into information that is typically kept away from most employees (and even managers), allowing analysis, historical trending, and the ability to make informed observations and deductions about the efficiency of various processes, can be very unpopular with those who prefer to keep things as they are, preferring their “job security” over improvements. If you don’t think the audience of your BI project is willing to accept what it may reveal, don’t bother getting started. If no one wants to hear about it, it doesn’t matter how impressive your data warehouse, report or dashboard will be, they will simply not use them. Which brings us back to the first point, you will need someone at the top who can MAKE people change, even if they don’t like to…

Content driven methodology“we need to consolidate client data from 123 source systems to deliver accurate reports, we should have that by mid next year”

Your Business Intelligence project or initiative must tell a story. The story needs to be compelling and exciting. It needs to be a game changing story for your company, allowing people to invent new ways of doing their work, enabling them to dream up and exercise opportunities for improving processes and work flows. These stories are your BI content, and your execution, or methodology has to evolve around telling these stories, delivering this content. This focus can get lost very easily when faced with the enormity of the data integration or enterprise data warehousing efforts that will be required to produce the stories. But don’t lose sight of the end result. The warehouse is just a place to store things. It’s the insight that is stored in it that people are looking for, and that insight has to remain the focus of your initiative. If you spend three years building your warehouse without delivering actionable and relevant insight, or stories, not only you will likely find yourself looking for a new job, you will also likely learn that the warehouse you built is no longer relevant. Delivering a new BI capability every three months is not only doable, but it is the only way to succeed with a BI initiative.

Google Charts – the elephant has entered the room..

Published by Ron Keler in BI At Large on January 25th, 2011 | No Comments »

Google chart example

As a developer I always had a knack for open source. So, when I started working with Business Intelligence I naturally began looking for opportunities to leverage open source software. Of course, MySQL was a great RDBMS choice (i used it for several years in very large DM implementations, with terrific results, maybe more on this in some future blog posts..). I began searching for BI tools that are open source. I ran into a few, Pentaho, Jasper, Birt all came up at some point or another. I got excited about Pentaho earlier on, but lately I think the company has resolved to switch to a more commercial direction, and I found it very difficult to continue using its non-enterprise commercial software.

Well, enter Google.

Of course, whenever Google enters a market, you know all the existing players in the field start shaking in their boots, and for good reasons. Google is innovative and produces quality products that other companies can only envy. Its Google Charts offering will surely rock the BI world sooner rather than later.

Google charts offer an astonishing variety of charts that are completely customizable, can connect to live data, and are surely to continue evolve. And there’s more than charts: with tables, grids, text components and other great looking components, Google charts (http://code.google.com/apis/chart/) is moving surely into the dashboarding and data visualization space.

Stay tuned to this topic, I am planning to explore it at depth over the coming weeks, and I’m sure we will all hear a lot about Google charts in the near future.  

Charts API gallery (http://code.google.com/apis/chart/docs/gallery/chart_gall.html)

Interactive Charts Examples (http://code.google.com/apis/visualization/documentation/examples.html)

 

Handle semi aggregate measures in universes

Published by Ron Keler in Universe Design on January 25th, 2011 | No Comments »

While relatively simple data marts can be designed as true simple stars, more often than we like, our reporting data models contains snowflakes. Whatever you want to call these entities, they represent one basic problem for your reporting tools: Cartesian products. Let’s see why. In a simple snow flake model, your fact and dimension tables are joined in a “one way” relationship: one dimensional attributes can have zero or many facts. That’s it. This is a nice and clean design, and it makes aggregation of measures across facts a walk in the park. You never have to worry about cartesian products when you join facts and dimensional attributes, since your facts cannot be double counted by joining them to the dimension. Structurally, the joins look like this:

And they will yield data like this:

John Doe had two transactions, totaling $50 and in total the 4 transactions sum up nicely and with no issues to $85.

When you snow flake, you have to account for the possibility of creating a Cartesian product. Now, each dimensional row has a one-to-many relationship with an additional table, in effect creating a many-to-many relationship in your model. Now, your model looks like this:

And when you join addresses in with sales and clients, you get wrong numbers as you sum things up:

Since Mr. and Mrs. Doe moved from CA to NY, when we join in this information, our relational DB will make it look as if their 3 transactions are 6 and the $85 we earned is $145, because it’s double counting transactions. This may be good news for the sales team, but the auditors will give you a bit of a hard time.

As much as you will try to avoid this problem, complex models often require this kind of snow flaking for all sorts of good reasons. In this example, imagine if you are dealing with many millions of customers, with addresses as multipliers for each customer, I doubt you will be looking to add an “address” dimension in your sales fact. Slightly normalizing your model and adding the kind of relationship illustrated in the second model is perfectly reasonable.

Different tools have different solutions to this problem; BusinessObjects Universe meta-data layer provides you with the tools to address this problem in the form of aliases and contexts.

First, create your universe and setup your joins. You can try running the universe Check Integrity tool, but it will not detect any problem. The structure looks correct from a simplistic perspective, and as long as you are not trying to aggregate, you will not see problems.  But we know better…

To solve the problem, we can force business objects to issue two separate queries when users request to get data from all three tables, and maintain the correct aggregation level for the sale measures. Here’s how:

First, we create an alias table to the sales table. We will point the sales object to the alias and leave the rest of the table attributes as mapped to the base representation of it.

Next, create a join from the client table to the sales alias. Finally, create two contexts, one for the join path that includes the address table and the sales table, and the other for the client and sales alias only.

That’s it! You are now ready to handle a variety of query scenarios without needing to worry about your universe users accusing you of “cooking the books”… Here’s what will happen:

When your users select the client name and address objects, webi will issue a single query based on the join path/context specified as CLIENT_SALES. When they add the address zip code, webi will issue a SECOND SEPARATE QUERY to get that data and will stitch the result sets together in its micro-cube.

Localize your global Xcelsius dashboard

Published by Ron Keler in Xcelsius on January 23rd, 2011 | No Comments »

If your dashboard is intended for a global audience, you may need to be able to localize it. By localization, most people refer to the ability to translate at minimum the labels and headers of the dashboard, based on the user locale, language. BusinessObjects provides localization solutions for its reporting platform, most notably in the form of the Translation Manager tool which allows you to provide various translations for your universe objects that are automatically displayed based on the user locale in InfoView. Unfortunately, the translation manager does not apply to Xcelsius dashboards. To work around that, you can implement a simple data driven approach that combined the power of webi with a simple translation table for your dashboard meta data to deliver a localized global dashboard.

First, you will need to create a translations table that will contain your dashboard meta-date, the labels and headers you use. You will need at least three columns in the table, the label value, the locale you enter it in, and some value to identify the label in the dashboard (in this example, I used sort order)

 

Add this table to your universe. Now, create a webi report that includes the value column. To make sure the labels displayed are at the appropriate language, add a filter to your block to filter the rows where the locale is the same as the user preferred viewing locale. You can do that by creating a variable that checks for this condition, and then apply a block filter based on this variable.

Now, use LiveOffice to embed the report data in your dashboard and use the labels column for your dashboard labels. They will automatically filtered based on your user selected locale in InfoView and presented in the appropriate language.

QaaWS vs LiveOffice

Published by Ron Keler in Xcelsius on January 21st, 2011 | No Comments »

One of the first major decisions you will face when starting to design your SAP BusinessObjects Xcelsius dashboard is which connectivity option to choose. Xcelsius supports a myriad of connectivity options, and two of the most popular connections for BusinessObjects are Query as a web service (known for short as QaaWS) and Live Office (LO for short). Both of those relay on your centralized BusinessObjects semantic layer, the universe, and from that perspective, they are equally good. They differ greatly though in how they connect to Xcelsius, and can serve different purposes.

QaaWS provides you with essentially the Webi query panel interface and is able to convert queries against the universe into web services. These web services can be consumed by any application that can communicate with these web services, Xcelsius included.

QaaWS connections are reliable and have been around for a few years, since their inception as a BusinessObjects labs offering through their full integration into the main stream product. They are fast, leverage the power of the universe and are an excellent choice for connecting Xcelsius dashboard to your live data.

QaaWS falls short however in its ability to handle more complex data structures, or its ability to provide a “staging” platform for Xcelsius. It will return, in essence, a two dimensional record set, a simple table.

Live Office has also been around the block for several years and has stabilized to become a good choice as well. It provides connectivity to a web intelligence report block, rather than to a universe query. As such, it allows you to stage data in various ways (cross tabs, complex multi row/column tables with various levels of aggregation, highly formatted data, using variables, calculations, etc). All this power though comes at a price. The integration of LO into Xcelsius is much more cumbersome and its performance is slightly inferior to QaaWS because it has additional overhead.

In general, you won’t really go wrong if you choose either one. What you should consider as you make your selection are:

QaaWS will most likely put your development effort for the dashboard data entirely in the hands of your database developers and somewhat in the universe developers. Any calculations, data combinations and complexity in staging data for your dashboard will need to be handled in the database layer, since you will not have a platform to do these, unless you want to use Xcelsius itself, which may provide impossible or drag down your performance to an unacceptable level.

LO will provide your dashboard developers with more flexibility by allowing them to stage data in powerful ways for Xcelsius consumption, but because of the complexity of integrating these connections into Xcelsius you will pay the price in maintenance, and flexibility in making changes to your underlying data model that require changes in your report blocks.

The future looks a lot more promising though. BI Services are now available to publish webi blocks as web services. This approach is rather new and is still maturing, but the direction of combining the benefits of both QaaWS and LO seems like a winning proposition.

Furthermore, the next major release of Xcelsius will contain a native query panel, right inside Xcelsius, which promises to deliver additional benefits and capabilities in terms of data integration. So, lots of exciting developments and opportunities to improve Xcelsius data connectivity are in the pipeline. Stay tuned…

Google style search on your Xcelsius dashboard

Published by Ron Keler in Xcelsius on January 20th, 2011 | No Comments »

Dashboard designers have long been concerned with design and usability, concepts typically foreign to IT development. Leveraging all types of selectors in the forms of combo boxes, list selectors, radio buttons and check boxes, they try to make information finding easier and simpler. Well, if you are looking for a way to let your dashboard users find something, why not let them simply search for it… Following these simple few steps, you can easily add “google style search” functionality on your SAP BusinessObjects Xcelsius dashboard to allow users to quickly find what they are looking for in your structured data. This example, uses the eFashion sample database and universe that ships with BusinessObjects. 

First, create a webi report that you will later connect your Xcelsius dashboard to using LiveOffice connection. The webi report should contain the data needed for your dashboard. The report query, should have an optional prompt filter for each column you would like to be able to search for. All the optional prompts must have the SAME NAME. Web Intelligence will consolidate all prompts with the same name and apply the same value entered on them to each of the criteria filters. So, the where clause generated will look something like: where search_column_1 like @Search_Prompt or search_column_2 like @Search_Prompt or search_column_3 like @Search_Prompt etc… 

  

  

Note, for this example, the Zip Code universe object was converted to a String type using Cstr(Outlet_Lookup.Zip_code) 

 

 

After creating your webi report block, insert it into excel using Live Office. Refresh the report block in LO and bound the report prompt to a cell in your excel sheet. Replace the prompt value in the bound cell with a formula that will enclose your user input in Xcelsius within two wilchar characters (%value%). Note, you can also upper case your search results this way to eliminate case issues in your case sensitive database. 

 

 

Finally, import the excel spreadsheet into Xcelsius. Complete the setup by setting up the live office connection and refresh options, layout your components, and there you go. Google style search functionality in your dashboard. You can download an example xlf HERE 

Search for store manager Steve

 

Search for zip codes that contain 96

© BI HAPPY
CyberChimps