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.
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
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

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!!!


February 13th, 2010 at 10:30 pm
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
February 13th, 2010 at 10:37 pm
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
February 13th, 2010 at 11:23 pm
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
February 14th, 2010 at 7:44 am
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
February 16th, 2010 at 10:42 am
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
February 16th, 2010 at 5:01 pm
I would implement it using security filter since this can applied selectively by assigning users to security groups.
February 17th, 2010 at 3:52 am
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)
February 17th, 2010 at 8:21 am
Thanks to everyone who has replied so far in email as well as in comments. Solution to follow later this week.
February 17th, 2010 at 1:40 pm
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 ?