Archive

Archive for the ‘Semantic Layer’ Category

Date Conversion Made Easy…

October 15th, 2010 3 comments

Have you ever been using SAP BusinessObjects WebIntelligence and wanted to turn a prompt from a date time into a date?

I do a lot of demos using Microsoft SQL Server and by default Microsoft SQL Server saves everything as a date & time.  So what if I don’t want the time?  Simply convert the datetime into a date within the semantic layer.

Ignoring the time 12:00:00

There are many solutions, including many which rely on some form of string parsing, but why make it more complicated than it has to be?  This is what I like to use:

CONVERT(DATETIME, CONVERT(INT, GETDATE()))

This is the perfect solution if all the data is stored as 1/1/2010 12:00:00, wherein the time element is 0.

Ignoring time and rounding down

If indeed there is a time and it’s important to round down, e.g. 1/1/2010 11:59pm should be rounded down to 1/1/2010, then in this case I use:

CONVERT(DATETIME, FLOOR(CONVERT(FLOAT, GETDATE())))

This is great when accessing call center data and I need to group calls around a specific day, but the time is still extremely relevant.

Anyone else have any commonly used tips or tricks within the semantic layer?  Post it in the comments below!

«Good BI»

In The Airport

October 12th, 2010 No comments

I was on my way home from a business trip earlier this year when I noticed something strange.  Something that make my BI antennae stick up.

Single Version of the Truth?

How much longer until the train arrives?

That a simple question, right?  I can see on the monitor above the entrance to the Airport shuttle that the next train arrives in 33 seconds.  No problem – that’s easy.

 

Information Monitors Inform

 

But Are You Sure?

If it were only that easy.  You see.  There are actually two answers.  If you looked closely at the yellow TV below, you would see some contradictory information.

 

Information Monitors Confuse

 

So what do you think now?  Which number is correct?  33 seconds or 40 seconds?  In my case, it didn’t really matter – it was just the matter of waiting, but in the same of CFO accountability and financial scrutiny, it could be a significant problem and even land you in jail.

Do Yourself a Favor

I’m not sure where these train monitors are getting their information but clearly they are NOT doing it the same way because the monitors are presenting two different answers.  This does nothing but spread distrust and confusion.  Help!!

We talk a lot about the strong semantic layer at the foundation of the BusinessObjects Product Suite.  It’s essential to not only make information easy to access and consume, but to know that it’s trusted.  It’s absolutely critical that if two users ask for the same information they get the right results.

Do yourself a favor.  Save yourself hours of time arguing about who’s spreadsheet is right. In an Enterprise Business Intelligence environment, you can provide an environment where regardless of who the user is – if two users ask the same question they will get the same answer.  We call this Single Version of the truth and SAP BusinessObjects Business Intelligence makes it possible.

As far as the Atlanta Airport is concerned – as my 16 year old would say:  FAIL!

«Good BI»

Categories: Miscellaneous, Semantic Layer Tags:

Supercharge Your Universe with Time-Series Analysis – Part 3

January 18th, 2010 2 comments

The Semantic Layer allows for powerful analysis of any relational database based on time.   The ability for administrators to create complex time-based measures and filters, means that business users can access the data they need to answer any adhoc questions.  We covered these topics in more detail in the previous two posts.

In the past, organizations took weeks to answer such questions or instead these questions went unanswered because the reports took too long to build.  That is no longer true.

Easiest of All

I use Quicken as part of tracking personal finance.  Last Year, Last Quarter, Last Month are common date ranges that I like to use over and over, unfortunately BusinessObjects doesn’t provide this out of the box… but with a little creativity, you can build it yourself.  It’s quite simple really and when you see how simple it is, you will be shocked.

Receipe for Success

The Recipe for Simplicity

The first thing we need to create is a database view with calculated dates which will change automatically from one day to the next.  The table will contain three columns:

  1. Name of the Range
  2. Start Date
  3. End Date

With these three columns we can build any date we wish.  Here are what the results look like when you view the table:

Results from Date Range

Note that each day, based on the associated view, these dates will change.

Here an excerpt of the logic in SQL Server to create the view:

SELECT 'Last 7 Days' AS Date_Range, CONVERT(smalldatetime,{fn curDATE()})-6
AS Begin_Date, CONVERT(smalldatetime, { fn curDATE() }) AS End_Date
FROM dbo.syscolumns
UNION
SELECT 'Today' AS Date_Range, CONVERT(smalldatetime,{fn curDATE()})
AS Begin_Date, CONVERT(smalldatetime, { fn curDATE() }) AS End_Date
FROM dbo.syscolumns
UNION ... etc.

Download the Full SQL Statement HERE.

Isn’t that AMAZING!?!  Now all you need to do is create a BETWEEN-join from the date field on your fact table and the start and end dates within the Date Range Table.  Here is the logic:
dbo.Current_Facts.sales_date between dbo.Date_Ranges.Begin_Date and dbo.Date_Ranges.End_Date

It should look something like this:

Date Range IS BETWEEN Fact Table

Now that I have this dynamic date range defined within my universe I can use it two ways:

  1. I can use it simplify the traditional prompts that typically include a  ‘start date’ and ‘end date’ field.  BusinessObjects provides optional parameters, so the report could allow the user choose which type of prompt they wish to use.
  2. Alternatively, I can use these fields for scheduled reports.  Users can specify “Yesterday” in the  prompt so that each day when the report runs, the prompt is automatically updated.

Additional Downloads

These series was inspired by some incredible work that was done by Richard Reynolds while he was working at SAP BusinessObjects.  He has an amazing way of taking basic principles around technology applying them is ways that are so simple.  The idea of the Begin/End Date connected to the fact table was his genius.  Having the chance to work with Richard was a true highlight to my career at SAP BusinessObjects and I wish him the best in all his future ventures.

If you would like to download the entire Universe, which contains fabulous examples of what I’ve been showing during this three-part series you can download it here.

Download the Foodmart Universe (Foodmart.unv)
Download the Foodmart Database (SQL Server 2005 BAK File or MDF/LDF Files)

Enjoy,

«Good BI»

Supercharge Your Universe with Time-Series Analysis – Part 2

January 6th, 2010 2 comments

Using time is one of the most important ways to analyze information.  Each day, week, month and year is unique and can best be understood within it’s specific context.  In my last post, we showed how you can use the Semantic Layer to create time-based filters.  Today we are going to discuss Time Specific Measures.

Creating Time Specific Measures

Time Specific Measures are important because they allow us additional flexibility within WebIntelligence.  Instead of creating two queries, one for last years sales and one for this years sales, we can create one query and then use the definition within the measure objects to filter the records we need.  The following examples are for SQL Server:

YTD Sales

sum(case when datepart(yyyy,dbo.Current_Facts.sales_date) =
 datepart(yyyy,getdate()) and dbo.Current_Facts.sales_date<=
 getdate() then dbo.Current_Facts.store_sales else 0 end)

Previous YTD

sum(case when datepart(yyyy,dbo.Current_Facts.sales_date) =
 datepart(yyyy,getdate())-1 and datepart(dy,dbo.Current_Facts.sales_date) <=
 datepart(dy,getdate()) then dbo.Current_Facts.store_sales else 0 end)

Now I can run a report and place these two measures on the report and the measures values for Current YTD and Previous YTD are already filtered accordingly.  What’s great about these measures is that they can be exceedingly complex within the universe, but they are easy for users to implement.  They don’t need to worry about accidentally filtering out too many records because the filtering within the case statement is non-exclusive.

Try this one on for size, Year to Date Sales v. Previous Year to Date Sales as a percent.

YTD Sales vs Prev YTD Sales %

case when sum(case when datepart(yyyy,dbo.Current_Facts.sales_date) =
 datepart(yyyy,getdate())-1 and datepart(dy,dbo.Current_Facts.sales_date) <=
 datepart(dy,getdate()) then dbo.Current_Facts.store_sales else 0 end)=0 then 0
else (sum(case when datepart(yyyy,dbo.Current_Facts.sales_date) =
  datepart(yyyy,getdate()) and dbo.Current_Facts.sales_date<= getdate()
then dbo.Current_Facts.store_sales else 0 end)/sum(case when
 datepart(yyyy,dbo.Current_Facts.sales_date)=datepart(yyyy,getdate())-1 and
 datepart(dy,dbo.Current_Facts.sales_date)<=datepart(dy,getdate())
then dbo.Current_Facts.store_sales else 0 end))-1 end

Now that’s some complicated SQL, and yet, because of the power of the semantic layer, all the end user consumer has to do is to drag the object onto the report.  The database will do the rest.

You can do the same on a monthly level.  Here is a list of time-based measures that I use all the time.

Time-based Measures

As you can imagine, it’s a great way to provide options to your users that they would never have dreamed possible before.  In my final post, part 3, I will provide a copy of the universe for you to download.

«Good BI»

Supercharge Your Universe with Time-Series Analysis – Part 1

December 29th, 2009 1 comment

To some degree or another, as we close out the year, we will all reflect on 2009 and what has been accomplished.  There are always things we might have done better, but looking at things over the time helps to put them in perspective– both in life and in business.    This is the first in a three part series.

Time Puts Everything in Perspective

When it comes to running reports and looking at your data are you leveraging time like you should?  Most organizations understand their performance month to month or year over year, but how much flexibility do you give your analysts to look at the information within the time segments they choose?  Some common time-series are:  YTD (Year to Date), MTD (Month to Date), WTD (Week to Date), but there is so much more.  As we prepare to close out 2009 and welcome in 2010, I challenge you to see if you are really using the power of time in your BI solution.

Insight Through Time

It’s important to always analyze your figures in comparison to other equivalent times, e.g. YTD with PYTD (Previous YTD).  The same with MTD and WTD, but how do you do it?  Within the Universe you can create filters.  These filters can be applied to any query.  Here is the SQL required.

YTD (Year to Date)

datepart(yyyy,dbo.Current_Facts.sales_date)=datepart(yyyy,getdate()) and
dbo.Current_Facts.sales_date<= getdate()

PYTD (Previous Year to Date)

datepart(yyyy,dbo.Current_Facts.sales_date)=datepart(yyyy,getdate())-1 and
datepart(dy,dbo.Current_Facts.sales_date)<=datepart(dy,getdate())

Because you can run multiple queries using BusinessObjects you can simply create a query with the YTD filter and then “duplicate” the query and replace the YTD filter with the PYTD filter.  The dimensions of the two queries will be merged automatically.  Here is the query panel:

And here are the results:

… but sometimes you don’t want to have to make two queries.  Why not just get all results for the last two years and split things up within the measure?  Well, the power of the semantic layer allows you to do that too.  I’ll explain more about that in my next post, but before I do, let me share some additional common filters you should consider using:

Last 7 Days

dbo.Current_Facts.sales_date between convert (SMALLDATETIME,
{fn CURDATE()})-7 and convert (SMALLDATETIME, {fn CURDATE()})

Last n Days

dbo.Current_Facts.sales_date between getdate()-
@Prompt('Days Ago','N',,mono,free) and getdate()

Last n Months

datediff(m, dbo.Current_Facts.sales_date,getdate()) <=
@Prompt('Months Ago','N',,mono,free) and dbo.Current_Facts.sales_date<=getdate()

Last n Months Ago Ending When

datediff(m, dbo.Current_Facts.sales_date,@Prompt('Ending Date','D',,mono,free))
<= @Prompt('Months Ago','N',,mono,free) and
dbo.Current_Facts.sales_date<=@Prompt('Ending Date','D',,mono,free)

I will post a copy of my everything-you-never-thought-you-could-do-in-a-universe universe at the end of this series, but here is a list of some of the filters that exist in my universe.

Time-based filters Graphic

Common Time-base Filters

That’s a long list, eh?  I almost wish all these filters were already in the universe by default, but they aren’t, so don’t be afraid to add as many as you need.  Remember, when you add a filter to a query it affects the entire query.  Tomorrow we’ll talk about the technique of creating time specific measures…

«Good BI»

WebIntelligence Integration with SAP

September 14th, 2009 No comments

After attempting to move my blog off wordpress.com on Friday, I decided it was going to be more involved and I had a bit more testing to do before I was willing to make the final switch… but that’s another story.

So what do I have for you this week?  Well, I ran across a great demo by Ingo Hilgefort.  Ingo is a great resource.  He was one of the original folks that helped Crystal Decisions develop the SAP Integration Kit way back in the day and you can read more about him on his blog.  He’s what you would call the resident expert.  Last week a saw a demo that Ingo put together and I really liked it and wanted to share it here.

Watch the Demonstration

Excellent Overview of SAP BusinessObjects and WebIntelligence Integration:

You’ll see that he demonstrates some of the latest fold/unfold capabilities that come with BusinessObjects XI 3.1 SP2. Do recognize that is is NOT a replacement for the upcoming Pioneer release. I recently spoke with a customer who didn’t like the fact that the WebIntelligence document had to be in a specific layout/format in order to leverage fold/unfold. REMEMBER! WebIntelligence is an adhoc reporting solution that allows you to easily create formatted reports. It’s not targeted for power analysts. Pioneer is coming… in the meantime you’ll still need to use BEx Web Analyzer for that that power analyst group.

SAP BusinessObjects Roadmap for WebIntelligence

NOTE: for the latest roadmap updates on the SAP BusinessObjects Product Integration go to http://sdn.sap.com

Download the PPT

Here is a download of his powerpoint presentation in PDF format:
http://trustedbi.com/files/sapwebi_webinar.pdf

Note the slides that explain how the items for the BEx Query panel are translated to objects within the Universe.  It’s important to understand what objects will be exposed to the adhoc user as the build the report and which objects, e.g. characteristic restrictions, won’t be.

Make sure as well you get your hands on the SAP BusinessObjects Best Practices Guide as well.

«Good BI»

Sets Integrated into the Semantic Layer

August 18th, 2009 6 comments

On August 5, 2009, the SAP BusinessObjects Innovation Center announced a prototype for moving Sets Technology directly into the Semantic Layer.

Potential Future of Sets

Since the EOL announcement of BusinessObjects Performance Manager and two of the three analytic engines, Process Analysis and Predictive Analysis, there has been an ongoing question on the future of Set Analysis.  I have long been an advocate of the incredible power and importants of sets to help customers get a better understand of how data is changing under the covers.  If you have 100 more customers, that’s great… but how many did you lose and how many did you gain?  You may have lost 50 and actually added 150.  What about my “Gold” Customers?  How many new Gold Customers do I have?  Where did they go?  Did they become Silver members?

We have many customers who have successfully implemented Set Analysis; however the solution had not had significant R&D investment for some time and was tied to the legacy metrics engine of Performance Manager.  How could this technology be integrated into the new XI 3.X platform?

Sets and the Semantic Layer – I’m in Heaven

The Innovation Center has delivered a prototype which show Sets integrated directly into the Semantic Layer.  This prototype is a plug-in to the universe that allows you to create these “sets” , static or dynamic – all in the query panel.  Semantic layer sets lets customers leverage the complexity of  sets natively within that environment.  This is a huge step forward.

Check out the 15 minute video on the SDN website

You can see that this implementation can support all the classic calendar sets which will support of joiners, leavers, stayers, which are at the core of Set Analysis.  In this labs implementation there is support for both Visual Data and Visual Sets; however I hope this is expanded in the future to support Freehand SQL and an imported list.

I think this is a fantastic new innovation and needs to be added to the core product ASAP.  If you think so too, let your voice be heard:  http://sets.uservoice.com

I’ll keep you up-to-date with additional innovations around sets and may provide some additional posts on this topic if there’s interest.  Let me know.

«Good BI»

Universe Measures – Divide and Conquer

October 24th, 2008 No comments

I was recently working with a universe and attempting to calculate a ratio between two numbers and coming up with some strange results.  I wanted to share this with you so you didn’t waste as much time as I did trying to solve the problem.

Always Returning Zero

In my example, I had two measures and i wanted to calculate the ratio between this.  I was working on a call center universe and I needed to calculate First Call Resolution Ratio.  That would be First Calls/Total Calls.  The problem was that my calculation was always returning 0.  Here is what the SQL looked like:

select count(dbo.Current_Facts.first_call) /count(dbo.Current_Facts.call_id)
from dbo.Current_Facts

There is nothing wrong with the SQL.  The problem was with the data type.  In my case, both the numerator and denominator are integers, therefore the resulting value is also an integer.  Since there are always less first calls than total calls, the values would be a fraction and therefore were truncated to 0.

An Easy Fix

Once you realize the problem, the fix is simple.  Simply modify the numerator to be a float value.  This will cause the calculate to result in a float value.  In my case I changed the first_call value as casted it as a float so my SQL came out like this:

select cast(count(dbo.Current_Facts.first_call) as float) /count(dbo.Current_Facts.call_id)
from dbo.Current_Facts

Although this should fix the problem, there are probably databases that may require you to be more specific in which case you might modify the SQL to look like this:

select cast(cast(count(dbo.Current_Facts.first_call) as float)/cast(count(distinct dbo.Current_Facts.call_id) as float) as float)
from dbo.Current_Facts

Hopefully this little tip will safe you tons of time spent scratching your head.

«Good BI»

BusinessObjects XI 3.1 Features

October 22nd, 2008 38 comments

I haven’t seen a lot of information available that talks about what’s new in the release of the latest version, BusinessObjects XI 3.1, so I thought I would point out some of the highlights I’ve come across.  You may also want read the complete What’s New in BusinessObjects XI 3.1 guide from the website.

Release Highlights

BusinessObjects XI 3.1 is a release that is focused on bringing parity to our platform support for both Java and .NET.  In BusinessObjects XI 3.0 we did not provide a .NET version of our standard BI portal, InfoView.  In BusinessObjects XI 3.1 we have released a native .NET portal which has near parity with the Java version.  I say near parity, because there are a few things missing, namely:

  • Encyclopedia
  • Dashboard Builder
  • Voyager
  • BI Mobile
  • Polestar

For companies who find comfort in an all Microsoft World, this release will be welcomed.  BusinessObjects XI 3.1 has added support for Windows Server 2008, SQL Server 2008 and Sharepoint Portal Server 2007.  (There is also Microsoft Active Directory Forest Support as well!)  If you are using the SAP Integration Kit, this is also now available on the .NET platform.

Web Application Container Service

One of the way in which BusinessObjects has been able to balance both rich feature sets and cross platform compatibility is through the introduction of a new server to the BusinessObjects Platform.  This service is called the WACS, Web Application Container Service, and is a java container.  What this allows BusinessObjects to do is to run existing java applications through the BusinessObjects framework.

Let me explain how this will work in practice.  The BusinessObjects Administration Console, the CMC, is written in Java.  Instead of rewritting this application in .NET, BusinessObjects simply added the WACS to the BusinessObjects service bus and will execute application via this service.  The beauty of this solution is that the .NET administrator never has to worry about it.  BusinessObjects manages everything.

What other Applications can use the WACS?

Besides the CMC, there are a number of other applications that could within the WACS.  This includes:

  • Interactive DHTML Viewer for WebIntelligence
  • Query as a Web Service (for supporting Xcelsius)
  • LiveOffice

There is an important document that covers what is supported and what is not supported within the WACS framework.  In theory all native java-based aspects of the BusinessObjects application suite could be run through the WACS but the question is whether or not it is officially supported.  This document is called:  Web Application Container Server (WACS): Supported and Unsupported Features for BusinessObjects Enterprise XI 3.1and it explains the details.  You can download it here.

Additional Platform Enhancements

BusinessObjects XI 3.1 supports IPv6 100% across the product suite (except for Desktop Intelligence).  They have also added their first native 64-bit architecture.  Since BusinessObjects XIr2 SP3, the platform has been able to run on 64-bit operating systems however the platform still runs as a 32-bit application.  The first native 64-bit release is an the HP-UX IA-64 Itanium hardware.

Life Cycle Manager

Life Cycle Manager, LCM for short, s a web-based utility that allows the administrator to:

  • Promote BI content from one system to another (without affecting the dependencies of the content)
  • Manage dependencies of BI content
  • Manage different versions of BI content
  • Roll back (yahoo!) promoted BI content

This tool does not install with the platform, but is a separate install.

“So isn’t that what the Import Wizard is for?”, you may be asking?  Well, certainly the import wizard has been used to provide this type of functionality in the past – especially with the introduction of BIAR files in BusinessObjects XI; however I think you’ll see from the list of features in LCM, it is better to have a specialized tool for the LCM process.

Life Cycle Manager provides a number of features over the Import Wizard (besides rollback) including:

  • Granular control over the objects selected (yes, we trust you)
  • Scheduling Promotions Jobs (a job is a collection of BI content or InfoObjects to be precise)
  • Integrated Version Control (via Subversion)
  • Database connection overrides and mapping (Tired of changing database connection strings?)
  • Auditing
  • The ability to “preview” to changes before committing them
  • Rollback, Did I mention rollback?

There is a new LCM Job server which has been added to the platform to manage the promotion process.

Have you ever created a BIAR file and realized you missed a file?  Now with LCM you can save your Promotion job and use it to generate a BIAR file.  If you find that something is missing, you can simply open up the promotion job , select the missing objects and regenerate the BIAR file.

BIAR ≠ BIAR

When is a BIAR file not a BIAR file?  Well, with the LCM tool, the BIAR files which are generated by the LCM tool are LCMBIAR files.  As the name indicates, the LCMBIAR files are NOT compatible with the BIAR files used with the Import Wizard.  Bummer.

Voyager

Voyager was the other biggie.  A lot of work was put into providing interface enhancements and increased performance.  This is probably the last release before the eagerly anticipated release of “Pioneer” in 2009, which will combine Voyager’s intuitive user interface with the powerful OLAP capabilities of the BEx OLAP tools.

Voyager now has a number of new visualizations including Box-Plot, Scatter, Bubble and Radar charts.    There are also a number of features that were in OLAP Intelligence, which were missing in earlier versions of Voyager, namely, Exception highlighting, URL Linking to other BI Content and Favorite Groups.

Have you ever made a mistake when building a Voyager workspace?  Well, now you have full undo/redo capabilities.  After being so used to the undo/redo capabilities in WebIntelligence, I always found the missing feature extremely annoying and I’m sure other did to.

Fly Over Of Additional Features

Rather than talk about additional features in detail, I thought I would briefly mention some of them here and perhaps in the future I can blog about them in detail if there is interest.

Semantic Layer -Support for BEGIN_SQL, Prompt support for codes AND descriptions.

Crystal Reports – Dual Monitor support, flash printing to PDF.

WebIntelligence -Support for Extension Points, Auto-Save, RelativeValue(), Multi-Pass Bursting

SAP Integration – SNC for BusinessObjects Universes (Prior to XI 3.1, this was only available for Crystal Reports), Improve Prompt Support for Hierarchy and Hierarchy Node dependencies.

Dashboard Builder – Printing, Interportlet Communication

Summary

There are some good things that have come out in this latest release.  This release is also the latest ‘reset point’ for BusinessObjects XI 3.X maintenance, so you can expect fix packs for XI 3.0 to no longer be released.

Hope you found this information useful.  I’ve tried to keep it short and sweet.

«Good BI»

Multipass SQL 2.0 (Updated 2/23/2009)

October 2nd, 2008 7 comments

So what is Multipass SQL?

Multipass SQL. To calculate comparisons or to correctly calculate non-additive measures in report break rows, the query tool must break the report down into a number of simple queries that are processed separately by the DBMS. The query tool then automatically combines the results of the separate queries in an intelligent way. Breaking a single complex request into several small requests is called multipass SQL. Multipass SQL also allows drilling across several conformed data marts in different databases, in which the processing of a single galactic SQL statement would otherwise be impossible. Finally, multipass SQL gives the aggregate navigator a chance to speed up the report, because each atomic SQL request is simple and easily analyzed by the aggregate navigator. (from Ralph Kimball)

Welcome Multipass 2.0 with BusinessObjects!

What You Are About To Read May Blow Your Mind

Okay – it’s not new, but I dubbed it 2.0 because in my opinion BusinessObjects takes a superior approach to the Multipass SQL problem.

BusinessObjects employs a number of techniques to solve traditional multipass problems in a unique way.  Users of BusinessObjects can get the power of Multipass SQL without the traditional contraints and overheads of inserting records into temporary tables and requiring the report creator to engage in a number of complex steps to get the desired results.  (Anyone ever run out of temp space?)

Highlighted here are some of the most common scenarios in which BusinessObjects employs Multipass 2.0 techniques.

Single dimension across multiple fact tables – The IT organization can configure the Universe (BusinessObjects Semantic Layer) to generate multiple SQL statements when measures exist in from multiple fact tables.

Using the grains of measurement in the same query -  Sometimes you want to be able to do create a query that shows Previous YTD, YTD, QTD, MTD for the same measure, e.g. Revenue.

Requiring the end results to be used in a calculation – Displaying values such as % contribution, ratios (revenue per employee), etc.

Semi-additive measures – My personal favorite.  These measures are traditionally measures that aggregate over all dimensions EXCEPT time.  Some examples are stock level, account balance.  The stock level in the database display the number that are on-hand as of the end of the day.  The account balance displays how much money is in my account and the end of the day.  If I look at these figures across geographies, then they need to be summed up; however if I want to look at the values for the current month, I should only use the value as of today.

Analyzing a subset of data – Sometimes I want to be able to analyze a subset of data to another subset of data.  For example, get all the latest customer transactions and compare them to the historical transactions.

In every single one of these cases, BusinessObjects delivers the results that the user needs without creating temporary tables and inserting thousands of records.  Instead BusinessObjects uses a number of techniques including:

  • Derived Tables
  • Multi-SQL Universe Options
  • Universe Contexts
  • Query-Drill
  • Report Variables

How To Whitepaper Available

If I’ve whet your appetite for more information, then you will want to download the whitepaper from the SAP SDN site.  This whitepaper explains in detail exactly how to accomplish each of these scenarios using BusinessObjects.  I’ve had some problems with these documents from time to time, so I’ve also made them available from my blog directly.  You can download the whitepaper here and the powerpoint here.

The bottom line is that modern high performance databases are experts at handling extremely complex SQL.  Their optimization engines mean that it is no longer necessary to break queries down into managable pieces and perform multiple passes in the traditional sense.

What Do You Think?

If  you have a complex query scenario that can’t be solved by one of the techniques used in this whitepaper, I’d love to hear from you.

Enjoy.

«Good BI»