<?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, 27 Jan 2012 03:02:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Bursting Reports in Business Objects to Dynamic Recipients</title>
		<link>http://davidlai101.com/blog/2011/11/05/bursting-reports-in-business-objects-to-dynamic-recipients/</link>
		<comments>http://davidlai101.com/blog/2011/11/05/bursting-reports-in-business-objects-to-dynamic-recipients/#comments</comments>
		<pubDate>Sat, 05 Nov 2011 21:30:12 +0000</pubDate>
		<dc:creator>David Lai</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Business Objects]]></category>
		<category><![CDATA[Web Intelligence]]></category>
		<category><![CDATA[Crystal Reports]]></category>
		<category><![CDATA[Dynamic Recipients]]></category>
		<category><![CDATA[Publication]]></category>
		<category><![CDATA[Report Bursting]]></category>

		<guid isPermaLink="false">http://davidlai101.com/blog/?p=537</guid>
		<description><![CDATA[This post is a continuation of my previous post on Bursting Reports in Business Objects The difference here is that instead of distributing the reports to Business Objects users, we&#8217;ll be able to dynamically control our user list that we will distribute our reports to externally. Dynamic Recipients are often used with Crystal Reports that [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/burst.png"><img class="aligncenter size-full wp-image-498" title="burst" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/burst.png" alt="" width="519" height="236" /></a><br />
This post is a continuation of my previous post on <a href="http://davidlai101.com/blog/2011/10/27/step-by-step-guide-on-bursting-reports-in-business-objects/">Bursting Reports in Business Objects</a><br />
The difference here is that instead of distributing the reports to Business Objects users, we&#8217;ll be able to dynamically control our user list that we will distribute our reports to externally.</p>
<p>Dynamic Recipients are often used with Crystal Reports that are not connected to a Universe and do not have BOBJ users associated with the reports.</p>
<p>In our example we will create a publication using the webi report from the <a href="http://davidlai101.com/blog/2011/10/27/step-by-step-guide-on-bursting-reports-in-business-objects/">previous post</a> and distribute it to a dynamic recipient list.  Our list will contain a list of <strong>stores</strong> and their associated <strong>state</strong> and <strong>email</strong>.  They will receive an email containing the pdf report filtered according to their state.</p>
<p><span id="more-537"></span></p>
<h2>Step 1:</h2>
<p>Let&#8217;s re-use the report that we created in the <a href="http://davidlai101.com/blog/2011/10/27/step-by-step-guide-on-bursting-reports-in-business-objects/">previous post</a><br />
<a href="http://davidlai101.com/blog/wp-content/uploads/2011/11/report.png"><img class="aligncenter size-full wp-image-545" title="report" src="http://davidlai101.com/blog/wp-content/uploads/2011/11/report.png" alt="" width="791" height="401" /></a></p>
<h2>Step 2:</h2>
<p>Now let&#8217;s create our <em>dynamic recipient list</em> as a new Web Intelligence document.</p>
<p><strong>Note: I&#8217;ve created a dummy email address object in the Universe, but in your case you would use a real email address according to whomever the report will be distributed to.</strong></p>
<p>In our report we will select <em>Store Name, State</em> and <em>Email Address</em>.</p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/11/storenamelist.png"><img class="aligncenter size-full wp-image-546" title="storenamelist" src="http://davidlai101.com/blog/wp-content/uploads/2011/11/storenamelist.png" alt="" width="627" height="425" /></a></p>
<p>Great! Now you&#8217;ve created your <em>dynamic recipient list</em> whom you&#8217;ll be distributing reports based on their state to.</p>
<h2>Step 3:</h2>
<p>Let&#8217;s proceed to create our publication.<br />
In this post we will only go through what is needed for Dynamic Recipients so if you want detailed instructions on how to create a publication, please visit my <a href="http://davidlai101.com/blog/2011/10/27/step-by-step-guide-on-bursting-reports-in-business-objects/">previous post on bursting reports in Business Objects</a>.</p>
<p>Instead of setting up the <em>Enterprise Recipients list</em>, we will setup the <em>Dynamic Recipients list</em> instead.<br />
The<em> Store Name</em> object will be mapped to the <em>Recipient Identifier</em> and <em>Full Name</em> fields.  The <em>Email</em> object will be mapped to the <em>Email</em> field.</p>
<p>Make sure <em>Use entire list</em> is checked.  We can uncheck it, if you want to manually select which stores in the <em>dynamic recipient list</em> to include<br />
and exclude, but in this example we want to keep it totally dynamic.</p>
<p><strong>Note: If we wanted, we can also send to Enterprise Recipients but in this example we only want to distribute to the dynamic recipients.</strong></p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/11/dpublication-dynamic-recipients.png"><img class="aligncenter size-full wp-image-543" title="dpublication - dynamic recipients" src="http://davidlai101.com/blog/wp-content/uploads/2011/11/dpublication-dynamic-recipients.png" alt="" width="959" height="302" /></a></p>
<p>In the <em>Personalization category</em>, go to <em>Local Profiles</em> and select <em>State</em> from the <em>Report Field</em>.  On the <em>Dynamic Recipient dropdown</em>, select <em>State</em>.</p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/11/dpublication-personalization.png"><img class="aligncenter size-full wp-image-544" title="dpublication - personalization" src="http://davidlai101.com/blog/wp-content/uploads/2011/11/dpublication-personalization.png" alt="" width="1021" height="467" /></a></p>
<p>In the <em>Format category</em>, select <em>Adobe Acrobat</em> as the <em>Output Format</em></p>
<p>In the <em>Destinations category</em>, select <em>Email</em>.</p>
<p>The To: field will need to be the email address variable that we set in the<em> Dynamic Recipients section</em>.  To select the Email address variable, just click on the <em>Add placeholder dropdown</em> and select Email Address.  Fill out the From:, Subject:, and Message: sections appropriately.</p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/11/dpublication-destination.png"><img class="aligncenter size-full wp-image-542" title="dpublication - destination" src="http://davidlai101.com/blog/wp-content/uploads/2011/11/dpublication-destination.png" alt="" width="1060" height="528" /></a></p>
<p>Save and Close your publication.</p>
<h2>Step 4:</h2>
<p>Schedule your publication to run now and verify that the reports have been distributed to each user correctly.</p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/11/verify1.png"><img class="aligncenter size-full wp-image-547" title="verify1" src="http://davidlai101.com/blog/wp-content/uploads/2011/11/verify1.png" alt="" width="1148" height="405" /></a><a href="http://davidlai101.com/blog/wp-content/uploads/2011/11/verify2.png"><img class="aligncenter size-full wp-image-548" title="verify2" src="http://davidlai101.com/blog/wp-content/uploads/2011/11/verify2.png" alt="" width="1129" height="329" /></a></p>
<p>In our example we can see that we generated a report for each state that will be distributed to each store on the dynamic recipient list.</p>
]]></content:encoded>
			<wfw:commentRss>http://davidlai101.com/blog/2011/11/05/bursting-reports-in-business-objects-to-dynamic-recipients/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Step by Step guide on bursting reports in Business Objects</title>
		<link>http://davidlai101.com/blog/2011/10/27/step-by-step-guide-on-bursting-reports-in-business-objects/</link>
		<comments>http://davidlai101.com/blog/2011/10/27/step-by-step-guide-on-bursting-reports-in-business-objects/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 19:03:31 +0000</pubDate>
		<dc:creator>David Lai</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Business Objects]]></category>
		<category><![CDATA[Web Intelligence]]></category>
		<category><![CDATA[Burst Reports]]></category>
		<category><![CDATA[Profiles]]></category>
		<category><![CDATA[Publication]]></category>

		<guid isPermaLink="false">http://davidlai101.com/blog/?p=497</guid>
		<description><![CDATA[The ability to publish and schedule reports according to one&#8217;s profile is an important feature that we have in Business Objects.  For example, if I am a plant manager for a the West Region and want to receive a daily report on work quality, it would be very beneficial if I can receive a report [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/burst.png"><img class="aligncenter size-full wp-image-498" title="burst" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/burst.png" alt="" width="519" height="236" /></a></p>
<p>The ability to publish and schedule reports according to one&#8217;s profile is an important feature that we have in Business Objects.  For example, if I am a plant manager for a the West Region and want to receive a daily report on work quality, it would be very beneficial if I can receive a report in my inbox daily that only contains results for the West Region.  This would save me the hassle of manually running a report each day and manually entering in my parameters, which is cumbersome.</p>
<p>In this tutorial, we will walk through step by step on how to schedule and burst a Web Intelligence report as well as creating user/group profiles.</p>
<h2><span id="more-497"></span><br />
Part 1</h2>
<p>Let&#8217;s create a simple cross-tabbed report using the eFashion Universe</p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/query.png"><img class="aligncenter size-full wp-image-524" title="query" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/query.png" alt="" width="617" height="352" /></a><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/report.png"><img class="aligncenter size-full wp-image-525" title="report" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/report.png" alt="" width="791" height="401" /></a><br />
As you can see we use the months as columns, the states as rows and Sales Revenue as the measure.<br />
In addition we will insert a Year Query prompt.  I wanted to pop in the Year prompt to highlight 2 very important points that you must be aware of.</p>
<ol>
<li><strong>On our profiles, we can only filter based on selected dimensions.  Remember that you cannot create a profile parameter based on a query prompt. Many people forget this and wonder why their profile parameter isn&#8217;t working.  When we reach the profile creation step I&#8217;ll remind you again.</strong></li>
<li><strong>Unfortunately, scheduled reports cannot insert dynamic values into the query prompt.  Hopefully SAP reads this so they can fulfill this long awaited enhancement, since many people I know complain about this limitation.  There are ways to work around this issue but is out of our current scope.</strong></li>
</ol>
<h2>Part 2</h2>
<p>This stage involves setting up the profiles that we will use in our publication.<br />
Basically what we want to accomplish here is the following:</p>
<p style="padding-left: 30px;"><strong>2 groups:</strong><br />
US West Sales Team -&gt; filters report on Western States<br />
US East Sales Team -&gt; filters report on Eastern States</p>
<p style="padding-left: 30px;"><strong>3 Users:</strong><br />
Users will be inside either US West or US East and will filter again depending on what months they should be able to see.<br />
Month1-6East<br />
Month7-12East<br />
Month1-12West</p>
<p>I&#8217;ve already setup the users and groups in this example so if you want more information on setting up user/group rights and content management please read the following posts:<br />
<a href="http://davidlai101.com/blog/2010/02/19/understanding-business-objects-access-levels/">Understanding Business Objects Access Levels</a><br />
<a href="http://davidlai101.com/blog/2008/11/06/content-management-planning-in-business/">Content Management planning in Business Objects Enterprise</a></p>
<p>First let&#8217;s create a State profile that filters on your state object.</p>
<p>In the CMS, go to the <em>profiles section</em> and click on the <em>Create new profile</em> button.  Name the profile &#8220;State Profile&#8221;</p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/create-profile.png"><img class="aligncenter size-full wp-image-500" title="create profile" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/create-profile.png" alt="" width="788" height="504" /></a>Right click on your newly created profile,<br />
Select <em>Profile Targets</em><br />
Click the <em>Add&#8230;</em> button<br />
Select the appropriate <em>Efashion Universe</em> and the <em>State</em> object</p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/profile-target.png"><img class="aligncenter size-full wp-image-505" title="profile target" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/profile-target.png" alt="" width="767" height="490" /></a>Now we will create the 2 region groups.<br />
First click on <em>Profile Values</em> and then click on the <em>Add&#8230;</em> button</p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/create-profile-value.png"><img class="aligncenter size-full wp-image-499" title="create profile value" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/create-profile-value.png" alt="" width="744" height="467" /></a>Next click on the <em>Choose</em> button beside the <em>User/Group</em> to select the appropriate user group</p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/profile-value-select-group.png"><img class="aligncenter size-full wp-image-508" title="profile value select group" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/profile-value-select-group.png" alt="" width="699" height="435" /></a>On the Group selection screen, select &#8220;US East Sales Team&#8221;, press the &#8220;&gt;&#8221; button.  Then press the &#8220;OK&#8221; button.</p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/profile-value-select-group1.png"><img class="aligncenter size-full wp-image-509" title="profile value select group1" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/profile-value-select-group1.png" alt="" width="699" height="440" /></a>We can now add all the Eastern States.  To do this, type the State name and press the <em>Add</em> button, one at a time until you have the list of all Eastern States built. When you are finished, press the <em>OK</em> button.</p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/profile-value-add-value.png"><img class="aligncenter size-full wp-image-507" title="profile value add value" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/profile-value-add-value.png" alt="" width="704" height="444" /></a><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/profile-value-add-value-list-complete.png"><img class="aligncenter size-full wp-image-506" title="profile value add value list complete" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/profile-value-add-value-list-complete.png" alt="" width="693" height="437" /></a>Then we need to build the US West Sales Team.  Click on the <em>Add</em> button and follow the same steps as what we did for the US East Sales Team group.  When we are finished adding the US West Sales Team Profile values, it should look like the image below.</p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/profile-add-new-menu.png"><img class="aligncenter size-full wp-image-504" title="profile add new menu" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/profile-add-new-menu.png" alt="" width="784" height="417" /></a><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/profile-values-done.png"><img class="aligncenter size-full wp-image-510" title="profile values done" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/profile-values-done.png" alt="" width="787" height="436" /></a></p>
<p>Next create a <strong>Month profile</strong> and set it up the same way as the <strong>State profile</strong>.</p>
<p>Create your <em>Profile Target</em> and add the 3 users and setup the <em>Profile values</em> appropriately</p>
<p>At the end, the <em>Profile Targets</em> and <em>Profile Values</em> for the <strong>Month Profile</strong> should look like the following screenshots.</p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/month-profile-target.png"><img class="aligncenter size-full wp-image-501" title="month profile target" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/month-profile-target.png" alt="" width="802" height="409" /></a><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/month-profile-value.png"><img class="aligncenter size-full wp-image-502" title="month profile value" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/month-profile-value.png" alt="" width="801" height="407" /></a></p>
<h2> Part 3</h2>
<p>The following section involves setting up the publication.<br />
You can either create a publication in CMS or Infoview.  In this example we&#8217;ll create it in the CMS.</p>
<p>First we&#8217;ll navigate to the folder where I&#8217;m going to create the publication. It&#8217;s best practice to come up with a organized publication structure if you have many different types of publications.</p>
<p>Right click on the folder where you want to create the publication. Select <em>New -&gt; Publication</em></p>
<p><em><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/new-publication.png"><img class="aligncenter size-full wp-image-503" title="new publication" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/new-publication.png" alt="" width="1072" height="640" /></a></em>Name your publication</p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/publication-name.png"><img class="aligncenter size-full wp-image-518" title="publication name" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/publication-name.png" alt="" width="770" height="389" /></a>Select the WEBI that we created in <strong>Step 1</strong> as the <em>Source Document</em></p>
<p><em><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/publication-source.png"><img class="aligncenter size-full wp-image-523" title="publication source" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/publication-source.png" alt="" width="812" height="461" /></a></em></p>
<p>For the <em>Enterprise Recipients</em> we want to add the US West and US East groups<br />
Select the 2 groups and then press the <em>&gt;</em> button</p>
<p>We can skip the <strong>Dynamic Recipients</strong> section as this is used mainly for Crystal Reports, which will be covered in a future post.</p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/publication-recipients.png"><img class="aligncenter size-full wp-image-521" title="publication recipients" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/publication-recipients.png" alt="" width="1036" height="502" /></a></p>
<p>On the <em>Personalization</em> section we want to add the profiles that we created in <em>Step 2</em> as part of the <em>Global Profiles</em>.</p>
<p><strong>Note: We don&#8217;t use Local Profiles here, however if we do want to use Local Profiles, you can setup a profile that only has Profile Values and no Profile Target, and use</strong><br />
<strong>those values here instead.</strong></p>
<p><strong>Also Note: Important reminder that profiles can only filter on dimensions existing in the report and not the Year query filter prompt that we created!</strong></p>
<p><strong><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/publication-personalization.png"><img class="aligncenter size-full wp-image-519" title="publication personalization" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/publication-personalization.png" alt="" width="1058" height="514" /></a></strong>In the <em>Format</em> section we can select the type of format we want to distribute the report in.  In our example we will distribute the report to our users in <em>PDF</em> format.</p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/publication-format.png"><img class="aligncenter size-full wp-image-512" title="publication format" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/publication-format.png" alt="" width="1059" height="510" /></a>There are a variety of destinations that we can burst the report to.  The most popular options are <strong>Business Objects Inbox</strong> and<strong> Email</strong>.  In our example we will burst to the <em>Business Objects Inbox</em>.</p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/publication-destination.png"><img class="aligncenter size-full wp-image-511" title="publication destination" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/publication-destination.png" alt="" width="1060" height="514" /></a>Now we can setup the scheduling portion by going to the<em> Additional Options</em> section.</p>
<p>On the <em>Prompts</em> section we will select 2004 for the <em>Year</em>.  <strong>Remember that this can only be a static value unfortunately.</strong></p>
<p><strong></strong><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/publication-prompt.png"><img class="aligncenter size-full wp-image-520" title="publication prompt" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/publication-prompt.png" alt="" width="1065" height="516" /></a>Next we will set our report to burst daily at 6am.</p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/publication-recurrence.png"><img class="aligncenter size-full wp-image-522" title="publication recurrence" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/publication-recurrence.png" alt="" width="1066" height="512" /></a></p>
<p>The last 3 items we will skip, so just click <em>Save &amp; Close</em>.<br />
<strong>Note: From the advanced section I will be writing a post on Profile Resolution in a later post.</strong></p>
<p>Now instead of waiting until 6am next morning, right click on the publication and select <em>Run Now</em>.</p>
<p><strong>Note: You&#8217;ll notice there&#8217;s an option to Subscribe and Unsubscribe from publications.  I&#8217;ll be covering the subscribe and unsubscribe conceps in a later post.</strong></p>
<p><strong><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/run-publication.png"><img class="aligncenter size-full wp-image-528" title="run publication" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/run-publication.png" alt="" width="652" height="543" /></a></strong>Verify that each user has the correct bursted report by going to each users&#8217; inbox through the CMC as the Administrator.</p>
<p><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/results1.png"><img class="aligncenter size-full wp-image-526" title="results1" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/results1.png" alt="" width="1447" height="589" /></a><a href="http://davidlai101.com/blog/wp-content/uploads/2011/10/results2.png"><img class="aligncenter size-full wp-image-527" title="results2" src="http://davidlai101.com/blog/wp-content/uploads/2011/10/results2.png" alt="" width="1398" height="557" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://davidlai101.com/blog/2011/10/27/step-by-step-guide-on-bursting-reports-in-business-objects/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<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 go to [...]]]></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>2</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? A properly [...]]]></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>7</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 [...]]]></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>
<p><strong>Note: This version only works with Business Objects XIR2. If you are looking for updated instructions, please visit my new post at </strong><a href="http://davidlai101.com/blog/2011/09/29/all-you-need-to-know-about-open-document-opendoc-part-2/" title="Updated post on Opendoc">http://davidlai101.com/blog/2011/09/29/all-you-need-to-know-about-open-document-opendoc-part-2/</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>2</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 [...]]]></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>

