Oracle BI EE 10.1.3.4.1 – Puzzlers – Puzzle 1

February 13th, 2010 by Venkatakrishnan J

If you had noticed the news last week, Oracle’s BI EE has achieved a leader status in the Gartner’s BI Magic Quadrant(i think 3rd year in a row). This can only mean one thing. More and more customers have started to implement BI EE and are happy with it as well. I have been planning to put together a small series of articles that are more like Repository Modeling puzzlers which should hopefully pique the interest of all the folks who are currently using BI EE. Repository Modeling is one of those areas that is least documented but it is the probably the biggest area that Oracle BI EE is extremely good at when compared with other reporting tools. And also it is sort of a subjective area where different people can have different techniques to achieve the same functionality. In the forthcoming articles (including this one), i would basically blog a small series of repository modeling puzzlers which everyone can participate in. All you have got to do is to, go through the blog entry, understand the question and come out with a RPD which can solve that particular use case. If you feel that the puzzle is very easy to achieve/solve, then you can  put your solution as a comment to the blog entry. For every puzzler blog, i will come out with a solution blog where i will give the credit to the folks who have come out with the correct solution for that particular use case. If you have a RPD to send, do send them to venkat@rittmanmead.com.

We are hoping to do a similar sort of Puzzler series (with an interesting twist & completely different set of questions :-)) in our BI Forum later this year. I will start with a very simple one today. But this is something that anyone rarely uses but that is extremely powerful. The puzzle is

“How do we make BI EE to generate different filters for every column(within a dimension) chosen from Answers?”

For example, lets take the SH Schema in the Oracle Database. Listed below are all the attributes of the CHANNEL dimension that have been exposed to Answers.

image

When someone creates a report containing CHANNEL_CLASS attribute and a measure, the SQL fired should automatically apply a filter on the CHANNEL_CLASS column. A sample SQL is shown below

image

select T1776.CHANNEL_CLASS as c1,
     sum(T1929.AMOUNT_SOLD) as c2,
     T1776.CHANNEL_CLASS_ID as c3
from
     CHANNELS T1776,
     SALES T1929
where  ( T1776.CHANNEL_CLASS = 'Puzzle1 Test' and T1776.CHANNEL_ID = T1929.CHANNEL_ID )
group by T1776.CHANNEL_CLASS, T1776.CHANNEL_CLASS_ID

If you notice in the above SQL, there is a filter T1776.CHANNEL_CLASS = ‘Puzzle1 Test’ which gets automatically applied (without any filter in the Answers).

Now, when someone removes CHANNEL_CLASS and replaces it with CHANNEL_DESC column, then the SQL fired should have a CHANNEL_DESC (not the older filter that we applied above) specific filter as shown below

image

select T1776.CHANNEL_DESC as c1,
     sum(T1929.AMOUNT_SOLD) as c2,
     T1776.CHANNEL_ID as c3
from
     CHANNELS T1776,
     SALES T1929
where  ( T1776.CHANNEL_DESC = 'Puzzle Test2' and T1776.CHANNEL_ID = T1929.CHANNEL_ID )
group by T1776.CHANNEL_DESC, T1776.CHANNEL_ID

If you notice, the above SQL has a CHANNEL_DESC specific filter. The question is how do you model your RPD to achieve this. Or if there is any other easy solution without going into modeling, feel free to put them in comments. This is a very simple puzzle(not exactly a puzzle but more of an in-built feature) but something that is extremely powerful as i had mentioned before. The next puzzle will be a little bit more challenging, i promise!!!

Comments

  1. Nicolas GERARD Says:

    Hy Venkat,

    I like this kind of game. It’s always a good way to learn the internal of OBIEE.

    I write the description of a solution here:
    http://gerardnico.com/weblog/2010/02/13/obiee-dimension-fragmentation-design-to-add-an-automatic-filter-with-the-choice-of-a-column/

    Cheers
    Nico

  2. Nicolas GERARD Says:

    Just to ask. What is the SQL that you generate when you choose only channel desc and channel class.

    I just see that in your database query, you have two different ID .. CHANNEL_CLASS_ID and CHANNEL_ID, then you have not the same solution than me because I didn’t see CHANNEL_CLASS_ID in the physical layer.

    Cheers
    Nico

  3. Nicolas GERARD Says:

    I just reread your blog and I see that we can purpose an another solution than with a repository design.

    We can also achieve this one with a simple security filter.
    http://gerardnico.com/wiki/dat/obiee/bi_server/security/security_automatic_filter_on_column

    Cheers
    Nico

  4. Nicolas GERARD Says:

    After a good night of rust, I deleted the alias of the physical table Channels because this solution creates a self join on the table channels.

    http://gerardnico.com/weblog/2010/02/13/obiee-dimension-fragmentation-design-to-add-an-automatic-filter-with-the-choice-of-a-column/

    Cheers
    Nico

  5. Ashok Says:

    Hi,

    Can we do this way.

    In the column mapping at the LTS,
    Case when CHANNEL_DESC = ‘Puzzle Test2′ then CHANNEL_DESC
    End

    For CHANNEL_CLASS,

    Case When
    CHANNEL_CLASS = ‘Puzzle1 Test’
    Then CHANNEL_CLASS
    End

    If this is correct,
    Can anyone point out the difference b/w the ‘Case When’ in the column mapping and the Gerard’s Post.

    Thank you

  6. Fiston Says:

    I would implement it using security filter since this can applied selectively by assigning users to security groups.

  7. Gopal Says:

    Interesting….
    This puzzle says, once the column Channel Class is removed, the filter should no longer be applied.

    Manage security and applying a filter is permanent and is regular way in Old Siebel Analytics to manage organization based visibility for logged in person.

    I have a similar problem to tackle and am interested. I have daily operational analytic answer to solve that will list staff with count of Booked Invoices, Count of Overdue Quote, Callback Quote (No Overdue dt) and Quote Due
    (Note: Each count has different filters and dont want to put a select as physical table and solve)

  8. Venkatakrishnan J Says:

    Thanks to everyone who has replied so far in email as well as in comments. Solution to follow later this week.

  9. Narayana Says:

    when we use a new logical source as suggested by nicolas on choosing multiple columns ( 1 from channels_filter and 1 from channels) would we end up in a cartesian ? how do we resolve that ?

Write a comment





Website Design & Build: tymedia.co.uk