<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>David Lai&#039;s Business Intelligence Blog &#187; Web Intelligence</title>
	<atom:link href="http://davidlai101.com/blog/category/web-intelligence/feed/" rel="self" type="application/rss+xml" />
	<link>http://davidlai101.com/blog</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Fri, 20 Aug 2010 20:56:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Cascading List of Values</title>
		<link>http://davidlai101.com/blog/2009/01/08/cascading-list-of-values/</link>
		<comments>http://davidlai101.com/blog/2009/01/08/cascading-list-of-values/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 03:09:24 +0000</pubDate>
		<dc:creator>David Lai</dc:creator>
				<category><![CDATA[Universe Design]]></category>
		<category><![CDATA[Web Intelligence]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[Business Objects]]></category>
		<category><![CDATA[cascading list of values]]></category>
		<category><![CDATA[design universe]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[List of Values is a powerful feature that allows users to select from a pick list when setting conditions in a query.  This is especially important if you want to query on codes linked to a set of products.  Using the List of Values feature, you will not need to memorize which codes [...]]]></description>
			<content:encoded><![CDATA[<p>List of Values is a powerful feature that allows users to select from a pick list when setting conditions in a query.  This is especially important if you want to query on codes linked to a set of products.  Using the List of Values feature, you will not need to memorize which codes go to which products.</p>
<p>The part that I would like to focus on is <i>Cascading List of Values</i>.  In a real world Data warehouse for example, we may have thousands of customer codes.  As a business user, in order to get to the customer codes I desire, I would probably want to select my customers from a certain region.  Using Cascading List of Values, I can first select which regions I want to view and then select my customers from there.</p>
<p>Please note that it is important to think of the most efficient path a business user can take to get to their answer.  One blunder that happens with many developers is the lack of planning when creating a Cascading List of Values.  Some may include too many levels which in the long run increases the response time of user selection or too few levels which would cause users to spend too much time looking for certain values.<br />
<span id="more-16"></span><br />
<img src="http://www.davidlai101.com/blog/media/blogs/bobj/cascading_list_of_values/webi_pic.png" alt="" title="" /></p>
<p>Here is an example on creating a cascading list of values.  Let&#8217;s use a universe that contains markets inside regions and create a cascading list on markets.  At the end of the day we will want to select our markets that belong to a set of regions that we drilldown from. <i>Note that I have used markets instead of customers because it&#8217;s easier to display on the webi pic.</i></p>
<p><img src="http://www.davidlai101.com/blog/media/blogs/bobj/cascading_list_of_values/universe.png" alt="" title="" /></p>
<p>First we will need to go into the &#8220;edit properties&#8221; tab of the market object object.  From there click on the <b>edit button</b>. </p>
<p><img src="http://www.davidlai101.com/blog/media/blogs/bobj/cascading_list_of_values/query_panel.png" alt="" title="" /></p>
<p>A query panel will come up with the market object on the <i>Result Objects</i> window.  On the conditions window, drag and drop the &#8220;Region&#8221; object and choose the &#8220;in list&#8221; option so that we can choose from a list of Regions.</p>
<p>After running the query, it is important to have the Hierarchical View checked in the <i>edit properties</i> tab.  The reason is that this view is much more user intuitive than the tabular view when selecting from the prompts.  You can test this out to see for yourself.</p>
<p>Once you have become comfortable with creating cascading list of values, you will be able to present business users with user intuitive selections that will increase productivity and reduce response time.</p>
]]></content:encoded>
			<wfw:commentRss>http://davidlai101.com/blog/2009/01/08/cascading-list-of-values/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Preventing Chasm and Fan Traps!</title>
		<link>http://davidlai101.com/blog/2008/11/18/preventing-chasm-and-fan-traps/</link>
		<comments>http://davidlai101.com/blog/2008/11/18/preventing-chasm-and-fan-traps/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 03:11:42 +0000</pubDate>
		<dc:creator>David Lai</dc:creator>
				<category><![CDATA[Universe Design]]></category>
		<category><![CDATA[Web Intelligence]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[Business Objects]]></category>
		<category><![CDATA[chasm trap]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[fan trap]]></category>
		<category><![CDATA[universe]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[In this article I would like to talk about Chasm traps and Fan traps. These are problems that we often experience while building universes and reports.  When encountering these traps, one may wonder what is going on? How come my sum statements arent adding up correctly? Or why am I missing some rows?  [...]]]></description>
			<content:encoded><![CDATA[<p>In this article I would like to talk about <b>Chasm traps</b> and <b>Fan traps</b>. These are problems that we often experience while building universes and reports.  When encountering these traps, one may wonder what is going on? How come my sum statements arent adding up correctly? Or why am I missing some rows?  A properly designed universe will help avoid these problems. In addition, a good understanding about measures and contexts from report designers will help as well.</p>
<p><font size="large"><b>Chasm Traps</b></font></p>
<p>Let&#8217;s talk about <b>Chasm traps</b> first.  In short, a <i>Chasm trap</i> can be imagined as a bottomless pit where some rows may unknowingly fall in and never come back out.  So when viewing a report caught in a Chasm trap, one may ask &#8220;Hey where did Record X go??&#8221;.<br />
<span id="more-17"></span><br />
<img src="http://www.davidlai101.com/blog/media/blogs/bobj/chasm_and_fan_traps/universe1.jpg" alt="efashion test" title="" /></p>
<p>Looking at the eFashion Universe <i>(note that this is a modified version of the efashion universe)</i>, we see that there are 2 fact tables that join to 2 of the same dimension tables.  If we do not set a context for each of the fact tables in the universe, we will only get 1 query when building a report that involves measures from both fact tables.<br />
<code><font color="green"><br />
SELECT<br />
  Article_lookup.Article_id,<br />
  Shop_facts.Amount_sold<br />
FROM<br />
  Article_lookup,<br />
  Shop_facts,<br />
  product_promotion_facts,<br />
  Calendar_year_lookup<br />
WHERE<br />
  ( product_promotion_facts.Week_id=Calendar_year_lookup.Week_id  )<br />
  AND  ( Article_lookup.Article_id=Shop_facts.Article_id  )<br />
  AND  ( Article_lookup.Article_id=product_promotion_facts.Article_id  )<br />
  AND  ( Shop_facts.Week_id=Calendar_year_lookup.Week_id  )<br />
</font></code><br />
Since the promotion fact table and shop fact table are joined in the same query, we will only get results that are in both the promotion fact and shop fact table.  In reality we want all available products even if they are not on promotion.  The products that are not on promotion will fall down the bottomless pit and report designers will be wondering where they have gone.</p>
<p><img src="http://www.davidlai101.com/blog/media/blogs/bobj/chasm_and_fan_traps/chasm_trap.jpg" alt="chasm trap" title="" /></p>
<p><font size="large"><b>Fan Traps</b></font></p>
<p><b>Fan traps</b> are another common problem and occur when a measure is overstated.  So using the same example above, the <i>promotion cost measure</i> is a &#8220;sum of promotion costs&#8221;.  Let&#8217;s say for one product we might have 5 entries in the shop fact table and 2 entries in the promotion fact table.  Instead of a one-to-many join for the promotion fact table, we now have a many-to-many join which will cause a cartesian product.  The promotion cost for that product will be 5 times higher than what its supposed to be since we have 5 entries in the shop fact table.</p>
<p><img src="http://www.davidlai101.com/blog/media/blogs/bobj/chasm_and_fan_traps/fan_trap.jpg" alt="fan trap" title="" /></p>
<p><font size="large"><b>Prevention</b></font><br />
To prevent falling into these traps, we must properly set our contexts in the universe.  Here we set a context for both the promotion fact and shop fact.  As a <b>rule of thumb</b> we should always set contexts for facts. </p>
<p><img src="http://www.davidlai101.com/blog/media/blogs/bobj/chasm_and_fan_traps/contexts.jpg" alt="setting universe contexts" title="" /></p>
<p>Setting contexts for these 2 facts will now produce 2 queries that will be synchronized thus returning the correct results because now we have 2 seperate joins instead of 2 joins in the same table.</p>
]]></content:encoded>
			<wfw:commentRss>http://davidlai101.com/blog/2008/11/18/preventing-chasm-and-fan-traps/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>All you need to know about opendoc</title>
		<link>http://davidlai101.com/blog/2008/11/04/all-you-need-to-know-about-opendoc/</link>
		<comments>http://davidlai101.com/blog/2008/11/04/all-you-need-to-know-about-opendoc/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 03:28:00 +0000</pubDate>
		<dc:creator>David Lai</dc:creator>
				<category><![CDATA[Web Intelligence]]></category>
		<category><![CDATA[Xcelsius]]></category>
		<category><![CDATA[Business Objects]]></category>
		<category><![CDATA[opendoc]]></category>
		<category><![CDATA[template]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I&#8217;ve seen quite alot of postings in the Business Objects forum on calling the opendoc function from either a web intelligence report or Xcelsius dashboard.
You can download the pdf instructions on all the opendoc parameters here opendoc detailed instructions
I&#8217;ve also provided instructions on drilling down to a Web Intelligence document from Xcelsius here
And an Xcelsius [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve seen quite alot of postings in the Business Objects forum on calling the opendoc function from either a web intelligence report or Xcelsius dashboard.</p>
<p>You can download the pdf instructions on all the opendoc parameters here <a href="http://www.davidlai101.com/blog/media/blogs/bobj/opendoc/be_xi_r2_opendocument.pdf" target="_blank">opendoc detailed instructions</a></p>
<p>I&#8217;ve also provided instructions on drilling down to a Web Intelligence document from Xcelsius <a href="http://www.davidlai101.com/blog/media/blogs/bobj/opendoc/drilldown_to_WebI_from_Xcelsius.doc" target="_blank">here</a></p>
<p>And an Xcelsius open doc worksheet template that you can use <a href="http://www.davidlai101.com/blog/media/blogs/bobj/opendoc/OpenDoc_Template.xls" target="_blank">here</a></p>
<input id="gwProxy" type="hidden" />
<input id="jsProxy" onclick="jsCall();" type="hidden" />
]]></content:encoded>
			<wfw:commentRss>http://davidlai101.com/blog/2008/11/04/all-you-need-to-know-about-opendoc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Importance of Web Intelligence Contexts</title>
		<link>http://davidlai101.com/blog/2008/10/16/importance-of-web-intelligence-contexts/</link>
		<comments>http://davidlai101.com/blog/2008/10/16/importance-of-web-intelligence-contexts/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 03:31:00 +0000</pubDate>
		<dc:creator>David Lai</dc:creator>
				<category><![CDATA[Web Intelligence]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[Business Objects]]></category>
		<category><![CDATA[calculation context]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[With calculation contexts in web intelligence we are able to generate powerful reports quick and easily.
Let&#8217;s take an example where we have the following dimensions (year, quarter, product) and measure (revenue).

We can easily build a table to represent the sales revenue for each product in that quarter and year.
Now what if we wanted to display [...]]]></description>
			<content:encoded><![CDATA[<p>With calculation contexts in web intelligence we are able to generate powerful reports quick and easily.</p>
<p>Let&#8217;s take an example where we have the following dimensions (year, quarter, product) and measure (revenue).</p>
<p><img style="margin-left: 75px; margin-right: 75px;" src="http://davidlai101.com/blog/media/blogs/bobj/webi%20context/pic1.jpg" alt="" width="391" height="260" /></p>
<p>We can easily build a table to represent the sales revenue for each product in that quarter and year.</p>
<p>Now what if we wanted to display the sales revenue in a different context.  For example we might want to display the highest quarter&#8217;s revenue each year.</p>
<p>You can add an aggregate row that happens after each year and retreive the highest quarter&#8217;s revenue from there.</p>
<p><span id="more-14"></span></p>
<p><img style="margin-left: 125px; margin-right: 125px;" src="http://davidlai101.com/blog/media/blogs/bobj/webi%20context/pic2.jpg" alt="" width="295" height="143" /></p>
<p>But what if we want our values combined with the first table?  This is where context calculation is important.</p>
<p>To accomplish this we need to take into account 3 points<br />
<strong>calculation</strong> &#8211; maximum revenue<br />
<strong>input context</strong> &#8211; year, quarter<br />
<strong>output context</strong> &#8211; year</p>
<p>The combination of input and output contexts tells web intelligence to sum the revenue for each year/quarter and then output the maximum value for each year.</p>
<p>The formula to accomplish this is as follows <strong>&#8220;calculation(input context) output context&#8221;</strong> =&gt; <strong>Max([Revenue] In ([Year];[Quarter])) In ([Year])</strong></p>
<p>The result will come out as the following<br />
<img style="margin-left: 125px; margin-right: 125px;" src="http://davidlai101.com/blog/media/blogs/bobj/webi%20context/pic3.jpg" alt="" width="282" height="63" /></p>
<p>Finally we can insert the formula into the last column of the first table and instead of having 2 tables we can have everything on 1 table.<br />
<img src="http://davidlai101.com/blog/media/blogs/bobj/webi%20context/pic4.jpg" alt="" width="552" height="262" /></p>
]]></content:encoded>
			<wfw:commentRss>http://davidlai101.com/blog/2008/10/16/importance-of-web-intelligence-contexts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
