Localize your global Xcelsius dashboard

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.

Posted in Xcelsius | Tagged , , , , , , | 2 Comments

QaaWS vs LiveOffice

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…

Posted in Xcelsius | Tagged , , , | Comments Off on QaaWS vs LiveOffice

Google style search on your Xcelsius dashboard

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

Posted in Xcelsius | Tagged , , , , | Comments Off on Google style search on your Xcelsius dashboard

Creating a dashboard level column selector in OBIEE

Creating a dashboard level column selector in OBIEE

Users of OBIEE Answers are accustomed to the versatility of reports provided with the Column Selector. The column selector setup is very easy and intuitive to configure and use. However, it is a report level component, and as such does not work across reports in the context of a dashboard page or an entire dashboard. That is not something users like to hear or care to understand. Fortunately, you can “fake out” the column selector functionality using a dashboard prompt, and by doing that provide the same column selector functionality, for your dashboard page or your entire dashboard. Here’s how:

First, in your Answers reports, use a variable as the column you would like to substitute using the selector functionality. Do this in every Answers report you plan to include in the dashboard that should “swap” a column based on the user selection

 

Next, create a dashboard prompt that will act as a column selector. Select the prompt scope as desired (Page or Dashboard). In the Show column, use custom SQL to retrieve the list of columns you wish to have the users swap. Reference column names as Table.Column. For example, using the Paint repository, the following SQL will result in allowing the users to select between the Region and District columns:

select ‘Markets.Region’ from Paint where Markets.Region = ‘CENTRAL REGION’

union

select ‘Markets.District’ from Paint where Markets.Region = ‘CENTRAL REGION’

The query uses a where clause to gurantee only one row is retrived from the database for each value, and can be unioned as many times as needed to include any number of columns you would like to provide the users as selected.

Pick the desired value as the Default and be sure to use the Set Variale option to populate the variable you created in the Answers report with the value from the prompt.

 

Voila!

All you need to do now is pull in all the reports you created in Answers, along with the dashboard prompt. You will be able to change the “selected column” using the prompt, and the reports will change accordingly.

Posted in OBIEE | Tagged , , , | 4 Comments

Naming Conventions In The Data Mart

What you call things matter. It matters to you, and it matters to others who interact with you. When you name things, your project, your children, your children’s stuffed animals, you typically consider two perspectives: what YOU think the name should be and what would OTHERS think about it.

Naming your data mart database tables is no different. And while when naming pets or stuffed animals, I would argue that what you think should matter just as much as what you think others will think about it, when it comes to tables and columns in your mart, I would suggest the OTHERS perspective should have a much higher weight.

Coming up with a naming convention and database standards at large is probably one of the first tasks you will face when starting to work on your reporting project implementation phase. In your logical designs and high levels diagrams you were able to use names that business users relate to, but when the time comes to start implementing the physical model, the DBAs, ETL developers and the rest of the technical database development team takes over and the needs of OTHERS, when it comes to what things are called, are usually completely ignored.

The fact of the matter is that most of the folks who are working on creating the data warehouse, operational data store or data mart, will never actually use it for any kind of reporting purpose. They are concerned with building database objects that would satisfy a variety of reporting needs, explicitly stated, and sometimes not. Structuring them in a way that will transcend the mind boggling fast pace of change in any modern organization. Systems come and go, business rules constantly change, personnel and minds shift. Designing a model that will hold throughout all that, and continue to deliver accurate, timely and reliable results is hard enough, and if that is accomplished, nobody except the database development team should have any say about what objects are called inside the database. Right? Well, they might be missing something.

Just like any other corporate project, the success of your reporting project is dependent on perception. The “rep” on the project is what will ultimately determine its faith. If people in the organization perceive the project to be a success, you will be a hero, but if, for whatever reason, the talk over the water fountain deems the project as a failure, you can forget about that promotion or extension you were eying.

And who will create this success or failure perception on your reporting project? Well, we can think of the people who will create this perception in terms of three groups.

First, you have your end users. These are typically the business users who defined the somewhat narrow requirements that launched your reporting initiative. They will never see the inside of your data warehouse or mart, and most of them have no idea what is an RDBMS or the faintest clue regarding how it works. They will see and use reports, dashboards and applications that rely on the data you produce, and their perception will ultimately rule. That is why you invest heavily in reporting technologies, and spend months refining fonts, colors, layouts and graphs. The end result of the monumental data effort has to look absolutely stunning, and the information has to be accurate. That is a given. If you cannot accomplish that, don’t bother getting started.

The third group is the technical implementation team. It consists of developers, business analysts, quality assurance folks and many others. This is the group the builds “the thing”. You better make sure they are all “groupies” and that the aura they project regarding anything related to the data work, is bright and positive.

The second group, in between the end users and the development team, is responsible for gluing the two. It’s the group of folks who design the interfaces between the database, and the reporting. The meta layer of your project. They are report and dashboards developers, universe designers or admin tool administrators or framework managers. They are tasked with understanding the tables, joins and structures of your database and translating those into something that can support the information needed from the end users. Some of them work directly for you as part of the project team, some you know of, but don’t manage, others, you may learn about in hind sight.

Why do these folks matter? Well, this group of individuals typically strudels the development and business worlds. They talk to everybody. They are often opinionated, and let folks on both sides of the project know what they think about the technical implementation as well as the business requirement.

They are the OTHERS you should consider when thinking about the naming convention you will deploy. Even if you are using a meta data layer such as BusinessObjects Universe, or OBIEE Admin Tool, these are the folks who will still go back to the database layer to check things, test, validate, understand, and design end products in the form of meta data layers, reports and dashboards and applications. This could be a fairly large group, and in a global situation, can be spread across the world.

If your report developers and meta data layer gurus start trashing the reporting data in front of your end business users because they cannot understand it – NOT BECAUSE IT IS NOT GOOD, BUT BECAUSE THEY CAN’T FOLLOW YOUR NAMING CONVENTIONS, you will be facing a perception problem.

So, how can you stay ahead of such a problem? Simply consider the needs of those who will be querying the database, as well as those who will be developing it, when naming things. Here are some concrete suggestions:

  1. All report developers and meta data layer designers are familiar with basic dimensional modeling concepts. They will expect to see dimensions and facts. Name your objects accordingly. Use a _FACT or _DIM suffix (some prefer prefix) to indicate the object orientation from a dimensional perspective. If you model an object as both (does that really happen often?), indicate that (_DIM_FACT). Use this same concept to indicate additional concepts such as aggregates.
  2. Avoid using acronyms and abbreviations if possible. If your RDBMS has restrictions on object names, and you have to shorten names, seek report developers and business users advise on appropriate short names to use. If you can’t do that, look to avoid cutting off long words, instead use shortening techniques that use letters from the beginning, middle and end of the word you seek to shorten. If you don’t have enough space to spell out CATEGORY, consider using CATEG, instead of CAT. A couple of months from now, It may save the report developer in Japan a lot of time and wonder as to why you would use domesticated animal  references in the reporting table names.
  3. Consider whether you need to indicate the database object type as part of its name. Your report and meta data layer developer will not care if they are using a view, a materialized view or a table. Your developers are using database tools that clearly indicate the object type, typically by displaying different types in different groupings. Especially if you are short on space for object names, do you really need to devote 3, 4 5, 6 or more character of the object names to indicate it is a _TBL_, _VW_ or _MV_?
  4. Column names matter as well. Once again, avoid acronyms and abbreviations as much as possible and spell out as much as you can to avoid ambiguity by someone who is not sitting right next to you right now, understanding exactly what you mean by some obscure three letter code you choose to use.
  5. Use a convenient and easy to follow naming convention for Primary and Foreign key column names. This is especially critical if you do not plan to enforce data integrity at the database level (which I personally typically don’t, but that’s a topic for another post..). It would make the reports and meta data layer developers life so much easier if they know that a CATEGORY_ID is a CATEGORY_ID is a CATEGORY_ID. Be clear about synthetic keys as opposed to natural keys, your reporting folks would care about that.
  6. Perhaps the most important of all is BE CONSISTENT. If your naming convention is consistent, even if it’s somewhat complex, people will eventually get it, and when they do, they will love the predictability and ease in which they can understand your models. Lack of consistency will throw the reporting team off, causing confusion, doubt and ultimately reduce the level of confidence in the mart.
Posted in Data Warehousing | Tagged , , , | Comments Off on Naming Conventions In The Data Mart

Handling the ALL level in Xcelsius selectors

Handling the ALL level in Xcelsius selectors is always a problematic proposition. If you tried using a selector to pass a value to your BusinessInteligence prompt, in order to retrieve filtered data from the database, you must have run into this issue. While selector components are generally highly configurable and provide loads of useful functionality, they lack the inherent capabilities to handle an “all” selection, which would apply everything is selected. When using BusinessObjects as a data source for an Xcelsius dashboard, you can use one of the following simple techniques to address this problem, and resolve it with relative ease.

First approach: leverage webi optional prompt option for a single list of values

Since the release of XI 3.0 webi was enhanced with the capability to create optional prompts. If you only need to handle a single list of values in a single selector, and you are looking to retrieve new database values each time the selection changes, you can create an optional prompt in your query, and then bind the prompt value to a cell in your excel model. The value that the webi  web service (LO/QaaWS/BI Service) will be looking for to ignore the selected prompt would be <Not Specified> (including the greater then less then brackets). You can use a formula in your model to convert this value for presentation purposes, and display ALL or anything else for that matter.

Second approach: when dealing with multiple lists of values

The second use case addresses a situation in which multiple selectors are needed and you do not plan to retrieve data from the database every time a selection is made. In this scenario, you will need not just one ALL row, but multiple ALL rows, one for each dimensional value in your multi-selectors. In this example, you need to produce data for states and product lines (from eFashion) with revenues, and allow users to filter the data for any combination of states and lines.

 

In this case, you can create an ALL object in your universe (for two dimensions, you will need two) and then use union queries in your webi report to artificially manufacture an ALL summary row for each level in your data. Once you have your data setup this way, you will be able to easily filter it based on the user selection in the selectors. 

The second use case addresses a situation in which multiple selectors are needed and you do not plan to retrieve data from the database every time a selection is made. In this scenario, you will need not just one ALL row, but multiple ALL rows, one for each dimensional value in your multi-selectors. In this example, you need to produce data for states and product lines (from eFashion) with revenues, and allow users to filter the data for any combination of states and lines.

In this case, you can create an ALL object in your universe (for two dimensions, you will need two) and then use union queries in your webi report to artificially manufacture an ALL summary row for each level in your data. Once you have your data setup this way, you will be able to easily filter it based on the user selection in the selectors.

Posted in Xcelsius | Tagged , , , | Comments Off on Handling the ALL level in Xcelsius selectors

Round corners in Xcelsius – Easily add images with transparent background to your dashboard

The Xcelsius image component is the key to creating a professional and good looking dashboard that will appeal to users and make them BI Happy.
Creating elaborate graphics with complex software such as adobe or gimp can be time consuming and complex (not to mention expensive in the case of adobe, gimp is free). One technique you can use to save time, effort and quickly and effectively create nice looking graphics is leveraging Power Point.
If you use MS Power Point 2007 (and let’s face it, who doesn’t have access to it?), you can create nice smooth image, with transparent background to incorporate into your Xcelsius dashboard in minutes.

First, pick your image from Power Point extensive image library. You can use the Insert menu to insert a SmartArt image, a Shape, or anything else such as a Clip Art image. After you insert the image into the slide, simply right click on it and select Save As Picture…

At this point you will be prompted to save the image. Notice the image will be saved into .png file format. This file format allows for transparent backgrounds, so you will be able to integrate the new image smoothly into your existing background, or components. Round corners and all.

Enjoy your professional looking dashboard..

Posted in Xcelsius | Tagged , | 5 Comments