<?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>Ross Goodman &#187; Business Objects</title>
	<atom:link href="http://www.rossgoodman.com/category/work/business-objects/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rossgoodman.com</link>
	<description>Me; What I Do; What I Like !</description>
	<lastBuildDate>Fri, 16 Dec 2011 01:19:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Running &#8211; Dashboard &#8211; Marcothon</title>
		<link>http://www.rossgoodman.com/2010/12/03/running-dashboard-marcothon/</link>
		<comments>http://www.rossgoodman.com/2010/12/03/running-dashboard-marcothon/#comments</comments>
		<pubDate>Fri, 03 Dec 2010 00:37:47 +0000</pubDate>
		<dc:creator>Ross (Admin)</dc:creator>
				<category><![CDATA[Fitness]]></category>
		<category><![CDATA[Running]]></category>
		<category><![CDATA[Xcelsius 2008]]></category>
		<category><![CDATA[Dashboard]]></category>
		<category><![CDATA[running]]></category>
		<category><![CDATA[training]]></category>
		<category><![CDATA[Xcelsius]]></category>

		<guid isPermaLink="false">http://www.rossgoodman.com/?p=485</guid>
		<description><![CDATA[I&#8217;m building up for my running challenges of 2011 and breaking in my new treadmill so I am slowly building up my miles. On incentive is the Marcothon group on FaceBook, the basic premis is to run for either 3 miles or 25 minutes in every day in December. I have also been mucking around <a href='http://www.rossgoodman.com/2010/12/03/running-dashboard-marcothon/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m building up for my running challenges of 2011 and breaking in my new treadmill so I am slowly building up my miles.<br />
On incentive is the <a href="http://www.facebook.com/home.php?#!/event.php?eid=155696737804701">Marcothon</a> group on FaceBook, the basic premis is to run for either 3 miles or 25 minutes in every day in December.</p>
<p>I have also been mucking around with Xcelsius for a <a href="http://www.parkrun.com">parkrun</a> project, more on that later.<br />
To keep an eye on my progress I have built a <a href='http://dl.dropbox.com/u/259729/RunningLog.swf' >dashboard</a> to track my running over the current year and so I can visually compare my training year on year.<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" width="570" height="250" id="test1"><param name="movie" value="http://dl.dropbox.com/u/259729/RunningLog.swf" /><embed src="http://dl.dropbox.com/u/259729/RunningLog.swf" width="570" height="250" name="test1" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rossgoodman.com/2010/12/03/running-dashboard-marcothon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blogging Whilst Employed &#8211; Beware!</title>
		<link>http://www.rossgoodman.com/2009/03/23/blogging-whilst-employed-beware/</link>
		<comments>http://www.rossgoodman.com/2009/03/23/blogging-whilst-employed-beware/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 20:58:11 +0000</pubDate>
		<dc:creator>Ross (Admin)</dc:creator>
				<category><![CDATA[Business Objects]]></category>
		<category><![CDATA[Dimensional Modelling]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[XI 3.0]]></category>
		<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Contract]]></category>
		<category><![CDATA[Employment]]></category>
		<category><![CDATA[Group]]></category>
		<category><![CDATA[Information]]></category>
		<category><![CDATA[Maxima]]></category>
		<category><![CDATA[Maxima Information Group]]></category>
		<category><![CDATA[MIG]]></category>
		<category><![CDATA[XI]]></category>
		<category><![CDATA[XI30]]></category>

		<guid isPermaLink="false">http://www.rossgoodman.com/?p=303</guid>
		<description><![CDATA[photo credit: eshm I was having a flick through my employment contract and I found the following clause: 13.2 You agree that during the course of this contract and after the termination of the contract for whatever reason without limit in point in time you will keep in confidence and shall not disclose to any <a href='http://www.rossgoodman.com/2009/03/23/blogging-whilst-employed-beware/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/53991500@N00/58242933/" title="october05.0103" target="_blank"><img src="http://farm1.static.flickr.com/32/58242933_e95deec086_m.jpg" alt="october05.0103" border="0" /></a><br /><small><a href="http://creativecommons.org/licenses/by-nc-sa/2.0/" title="Attribution-NonCommercial-ShareAlike License" target="_blank"><img src="http://www.rossgoodman.com/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a href="http://www.flickr.com/photos/53991500@N00/58242933/" title="eshm" target="_blank">eshm</a></small><br />
I was having a flick through my employment contract and I found the following clause:</p>
<blockquote><p>13.2<br />
You agree that during the course of this contract and after the termination of the contract for whatever reason without limit in point in time you will keep in confidence and shall not disclose to any person unless authorised to do so with the prior written consent of the Company the following:-<br />
13.2.1 Any consultancy know-how, methods, tools, techniques or intellectual capital.
</p></blockquote>
<p>I realised that some of my blog entries or tweets could fall foul of this clause so I asked for written permission to continue blogging generic &#8220;work related&#8221; content such as Business Intelligence, Data Warehousing, Data Modelling and Business Objects.<br />
Rather than granting this and leveraging the fairly good google rankings that my posts seem to get I was asked to remove all work related posts.<br />
<a href="http://www.google.co.uk/search?source=ig&#038;hl=en&#038;q=business+objects+best+practice&#038;btnG=Google+Search&#038;meta=lr%3D">Business Objects Best Practice</a> (higher ranking than BusinessObjects.com)<br />
<a href="http://www.google.co.uk/search?hl=en&#038;safe=off&#038;q=business+objects+new+features&#038;btnG=Search">Business Objects New Features</a> (Page One)<br />
<a href="http://www.google.co.uk/search?hl=en&#038;safe=off&#038;q=dimensional+modelling&#038;btnG=Search&#038;meta=cr%3DcountryUK|countryGB">Dimensional Modelling</a> (Ralph Kimball ?)<br />
As such I have password protected all of my work related posts.<br />
If you are struggling to find content there are a variety of <a href="http://web.archive.org/web/*/http://www.rossgoodman.com">searches</a> that could turn up interesting content.<br />
Alternatively you can go to my <a href="http://www.maxima.co.uk/businessintelligence">company site</a>, contact details can be found <a href="http://www.maxima.co.uk/enquiries">here</a> or <a href="mailto:enquiries@eclectic.co.uk">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rossgoodman.com/2009/03/23/blogging-whilst-employed-beware/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Protected: Business Objects &#8211; Best Practice &#8211; Report Design</title>
		<link>http://www.rossgoodman.com/2009/03/04/business-objects-best-practice-report-design/</link>
		<comments>http://www.rossgoodman.com/2009/03/04/business-objects-best-practice-report-design/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 10:15:49 +0000</pubDate>
		<dc:creator>Ross (Admin)</dc:creator>
				<category><![CDATA[Business Objects]]></category>
		<category><![CDATA[MIG]]></category>
		<category><![CDATA[Maxima]]></category>
		<category><![CDATA[Maxima Information Group]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Best]]></category>
		<category><![CDATA[Best Practice]]></category>
		<category><![CDATA[BI]]></category>
		<category><![CDATA[BO]]></category>
		<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[BusinessObjects]]></category>
		<category><![CDATA[BusObj]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Practice]]></category>
		<category><![CDATA[Report]]></category>
		<category><![CDATA[Report Design]]></category>

		<guid isPermaLink="false">http://www.rossgoodman.com/?p=284</guid>
		<description><![CDATA[There is no excerpt because this is a protected post.]]></description>
			<content:encoded><![CDATA[<form action="http://www.rossgoodman.com/wp-pass.php" method="post">
<p>This post is password protected. To view it please enter your password below:</p>
<p><label for="pwbox-284">Password:<br />
<input name="post_password" id="pwbox-284" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="Submit" /></p></form>
]]></content:encoded>
			<wfw:commentRss>http://www.rossgoodman.com/2009/03/04/business-objects-best-practice-report-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Business Objects &#8211; Best Practice &#8211; Universe Design</title>
		<link>http://www.rossgoodman.com/2009/03/01/business-objects-best-practice-universe-design/</link>
		<comments>http://www.rossgoodman.com/2009/03/01/business-objects-best-practice-universe-design/#comments</comments>
		<pubDate>Sun, 01 Mar 2009 20:20:13 +0000</pubDate>
		<dc:creator>Ross (Admin)</dc:creator>
				<category><![CDATA[Business Objects]]></category>
		<category><![CDATA[MIG]]></category>
		<category><![CDATA[Maxima]]></category>
		<category><![CDATA[Maxima Information Group]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Best]]></category>
		<category><![CDATA[Best Practice]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[BusinessObjects]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Objects]]></category>
		<category><![CDATA[Practice]]></category>
		<category><![CDATA[Universe]]></category>
		<category><![CDATA[Universe Design]]></category>

		<guid isPermaLink="false">http://www.rossgoodman.com/?p=268</guid>
		<description><![CDATA[Business Objects &#8211; Best Practice &#8211; Universe Design The purpose of this document is to provide a description of what I consider to be best practice when designing a Business Objects Universe. We will also describe the reasoning behind the suggestion. 1 Connectivity This section will describe any items around the connection between Business Objects <a href='http://www.rossgoodman.com/2009/03/01/business-objects-best-practice-universe-design/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<h2>Business Objects &#8211; Best Practice &#8211; Universe Design</h2>
<p>The purpose of this document is to provide a description of what I consider to be best practice when designing a Business Objects Universe. We will also describe the reasoning behind the suggestion.<br />
<a href="http://www.flickr.com/photos/ross_goodman/2996343149/" class="tt-flickr tt-flickr-Medium" title="Startrails"><img class="alignnone" src="http://farm4.static.flickr.com/3053/2996343149_ced5962e82.jpg" alt="Startrails" width="500" height="375" /></a><br />
<span id="more-268"></span></p>
<h3>1	Connectivity</h3>
<p>This section will describe any items around the connection between Business Objects and the underlying database that holds the data.</p>
<h4>Native Connectivity</h4>
<p>Always use the vendor’s native connectivity where possible. Avoid using generic drivers, e.g. ODBC for Oracle. You always get better performance and more parameters when using the vendors own drivers.</p>
<h4>Avoid ODBC</h4>
<p>When accessing Microsoft SQL Server databases use an OLDDB connection rather than an ODBC connection. The connection is faster. OLEDB connections store their parameters in the connection definition it’s self whereas an ODBC connection refers to a predefined ODBC connection name which must be defined on every PC and server.</p>
<h4>Keep Connections Open</h4>
<p>It is possible to define if the database connection is kept open permanently, closed after a specified period of inactivity or closed after each query. The process of creating a database connection is quite “expensive” time wise so it is better to keep connections open for longer. Open connections consume resources on the database server so it is better to keep the number of connections to a minimum.<br />
Generally, connections to the Business Objects repository database should be kept open permanently. Connections to data source databases should generally time out but this is dependant on the typical users usage profile.</p>
<h4>Tuning Network Connections</h4>
<p>It is possible to fine tune the way that Business Objects uses the network by changing network packet sizes etc. This can make a large difference to problem reports that return a large volume of data.</p>
<h3>2	Physical Structure</h3>
<p>This section will describe any practices that should be adhered to when implementing the physical data structures into the Business Objects universe.</p>
<h4>Alias All Tables</h4>
<p>When importing the database tables, immediately create an aliased version. The aliased versions should be the ones that are joined and are used to build objects from. This is done purely to make the generated SQL and the universe it’s self easier to read.</p>
<h4>Join All Tables</h4>
<p>Every table that will be being used to supply information should be joined to at least one other table. It should not be possible to create a Cartesian product</p>
<h4>Index Joins</h4>
<p>Ensure that all joins that are implemented in the universe have a corresponding index on the physical table. Queries that join tables together will almost always run faster when the joining fields are indexed.</p>
<h4>Count Rows</h4>
<p>There is the facility to get designer to count the number of rows in each table. This should always be done and the results displayed in the universe. There are two reasons for this: if data is missing from a particular table it is easier to spot, if you are using Designers built in validation tools it needs the row counts to check the cardinality of the joins.</p>
<h3>3	Business Structure</h3>
<p>This section will describe any practices that should be adhered to when implementing the logical classes and objectsinto the Business Objects universe.</p>
<h4>Classes</h4>
<p>Each class should be uniquely named and have an appropriate business description.</p>
<h4>Objects</h4>
<p>Every object should be uniquely named and have an appropriate business description. If you find you have two versions of the “same” object, for example “Year” you should find out when you would use each and then name them appropriately.</p>
<h4>Conditions</h4>
<p>You should implement as many condition objects as you can. It should be the exception that users have to manually build a condition. Conditions should come in two flavours. Interactive filters will use the prompt feature to as the user to enter information, for example “Which years?”. Static filters will apply a restriction without any visible interaction, for example “This Year Only”.</p>
<h4>Automation</h4>
<p>If you intend to schedule reports then you should ensure that any conditions you do use are not interactive. For example; if you were to add the condition “Year=2007” or “Which Years?”, the value that is hard coded or the value that is supplied at schedule time would be used for every subsequent run, even when the calendar year does change.</p>
<h4>Core Definitions</h4>
<p>If you find you need to define the same object in multiple places or you have an object that extends the definition of an existing object, you should not redefine the logic of the core object every time it is used. For example MyCustomers = case ownerID when 1234 then customerID end. If I then wanted a MyGoodCustomers object I should not redefine “My Customers” but reuse the definition already in place. This is done via the @Select syntax. MyGoodCustomers=@Select(MyClass,MyCustomers) and <sales> > 1000000. This means that if the definition of MyCustomers ever changes it only needs to be changed in a single place.<br />
In reality, I would store the value of 1000000 used above in an object again so that there is a single place where this is defined.</p>
<h4>Hidden Objects</h4>
<p>If you are using core definition objects, you may end up with objects that simply hold definitions but should not be used in their own right. These objects can be hidden. Hidden objects are still accessible to @Select calls but do not appear in the object list for users to select them.</p>
<h4>Where Clauses</h4>
<p>Every object has the ability to have a where clause added to it. This should never be used. If you add where clauses to objects then when you select multiple measures, these where clauses are combined. For example Sales2006 = select sum(sales) from sales where year=2006. Sales2007 = select sum(sales) from sales where year=2007. If I were to use both measures in the same query then the result would be: select sum(sales), sum(sales) from sales where year=2006 and year=2007. It is not possible for a single row to belong to both years so no data would be returned.<br />
The “correct” way to implement this object would be Sales2007=select sum(case year when 2007 then sales else null) from sales.</p>
<h3>4	Linked Universes</h3>
<p>Linked universes are a great way to maintain different “versions” of the “same” universe. For example you may wish to have an exact copy of your live universe but point it at your training database. You will not want to maintain your training universe every time your production universe changes. Using the live universe as a kernel of the training universe and only changing the universe connection will allow this to happen automatically.</p>
<h4>Parameters</h4>
<p>Universe parameters are not automatically replicated between linked universes.</p>
<h4>Contexts</h4>
<p>When you create a linked universe the contexts contained in the core universe are not propagated into the linked universe. If you wish to have an “exact” copy then you must re-implement the contexts and also maintain them on an ongoing basis.</p>
<h3>5	Parameters</h3>
<p>This section will describe any parameters that can be applied to the universe that will have an affect.<br />
This is an example where you may wish to have multiple versions of a universe, one for scheduling with no limits in place and one for novice users with very tight limits.</p>
<h4>Limit Size Of Result Set</h4>
<p>This option allows you to restrict the number of rows that a single query that a user runs will return. This is one of the features that will prevent ill thought out queries from saturating the network. The value used will be dependant on the number of rows that a “typical” report returns.</p>
<h4>Limit Execution Time</h4>
<p>This option allows you to set the maximum time in seconds that a users query will run for. This is one of the options that will prevent long running queries from consuming resources on both your database server and your Business intelligence server. The value of this will be dependant on the “typical” report execution time.</p>
<h4>Warn If Cost Estimate Exceeds</h4>
<p>When a user submits a query and this option is enabled and the underlying database supports the feature then you can warn users if the expected duration of their query exceeds a particular value. The value of this will be dependant on the “typical” report execution time.</p>
<h4>Limit Size Of Long Objects</h4>
<p>Databases have the option of holding large volumes of data in a single field. Each “long” field in each row can contain a maximum of 4GB of data. If all of this data was returned then this could easily saturate the network and the memory of the local PC. We would recommend that this value is kept quite low to limit the volume of data returned by this field. We would also question as to why long fields are included in the universe in the first place.</p>
<h4>Allow Use Of Sub Queries</h4>
<p>Sub queries are a way of restricting queries based on the results of others. This is not something that novice users would be using but it is an easy way to implement complex selection criteria.</p>
<h4>Allow Use Of Union, Intersect and Minus Queries</h4>
<p>These set based operators are easy ways to compare different result sets. We would recommend that this is enabled as other ways to answer the same questions are very complex.</p>
<h4>Allow Complex Operands in Query Panel</h4>
<p>Selecting this option gives you access to the full range of operands in the query panel. This should normally always be selected unless the universe is targeted at novice users.</p>
<h4>Multiple SQL Statements for each Context</h4>
<p>If you write a query that requires to access multiple contexts, this parameter specifies that a separate SQL statement should be used for each context. This should normally be enabled if your universe contains contexts.</p>
<h4>Multiple SQL Statements for each Measure</h4>
<p>When using a relational data source certain structural conditions can exist; chasm and fan traps. One way to resolve these is to tell Business Objects to write a separate SQL statement for each table that is providing a measure. This should normally be selected when using relational data sources.</p>
<h4>Allow Selection of Multiple Contexts</h4>
<p>Contexts are one way to prevent loops, chasm traps and fan traps. If this is the reason that you have created a context then this option should not be selected. </p>
<h4>Cartesian Products (Warn / Prevent)</h4>
<p>A Cartesian Product is when no join has been defined between two tables. In this circumstance every row of the first table will be joined to every row of the second table. The setting of this parameter is not relevant. Every table that is defined in the universe should be joined to at least one other.</p>
<h4>Core Order Priority</h4>
<p>If you are using linked universes then this should be set to YES in the derived universes. This forces the order of the classes and objects to match the order as they are defined in the kernel universe.</p>
<h3>6	Security</h3>
<p>Depending on the nature of the data you may require to restrict access to the information held in the universe. There are two main methods of implementing this.</p>
<h4>Database Security</h4>
<p>This is the most secure method to implement security. Each Business Objects user requires a corresponding database login with matching usernames and passwords. The universe connection is then defined so that it uses the users credentials. The definition of the scope of the data that the user has access to is defined in the source database.<br />
This is the preferred solution as it is a more generic solution. This means that even if the user chooses to use a differing query tool, the security cannot be bypassed.</p>
<h4>Universe Security</h4>
<p>This method involves using a generic logon to the database. The definition of the security roles are stored wither in the universe it’s self via object definitions or in database tables, which are included in the universe. This solution is good as it means that control of the security definition is either data driven or in the control of the Business objects universe designer. Using the previous method, the control of the security is the remit of the DBA. The disadvantage of this method is that if any other query tool is used then the data becomes unsecured. There si also the risk that the user will have the ability to rewrite the SQL that Business Objects produces prior to running the query, allowing them to remove or change the security implementation.</p>
<h3>7	Summary</h3>
<p>These are what I would consider to be the current best practices when designing business intelligence universes. As is always the case there are times when many of these can and should be ignored. This list should not be used dogmatically but pragmatically. If you are having any particular problems then a member of our Service Delivery team would be happy to work with you to resolve them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rossgoodman.com/2009/03/01/business-objects-best-practice-universe-design/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>A Year In Retrospect</title>
		<link>http://www.rossgoodman.com/2008/12/31/a-year-in-retrospect/</link>
		<comments>http://www.rossgoodman.com/2008/12/31/a-year-in-retrospect/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 20:33:08 +0000</pubDate>
		<dc:creator>Ross (Admin)</dc:creator>
				<category><![CDATA[Business Objects]]></category>
		<category><![CDATA[Dimensional Modelling]]></category>
		<category><![CDATA[Emma]]></category>
		<category><![CDATA[Family]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[This Site]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[XI 3.0]]></category>
		<category><![CDATA[Xcelsius 2008]]></category>
		<category><![CDATA[2008]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[pages]]></category>
		<category><![CDATA[Photos]]></category>
		<category><![CDATA[retrospect]]></category>
		<category><![CDATA[year]]></category>

		<guid isPermaLink="false">http://www.rossgoodman.com/?p=233</guid>
		<description><![CDATA[Just a quick summary of my on-line presence this year. Twitter I have invested a lot of content to Twitter this year. This is primarily due to the convenience of the platform racking up almost 1200 updates in the year here. Flickr / Photography I can&#8217;t find a way to get stats for the year <a href='http://www.rossgoodman.com/2008/12/31/a-year-in-retrospect/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Just a quick summary of my on-line presence this year.</p>
<h2>Twitter</h2>
<p>I have invested a lot of content to Twitter this year.<br />
This is primarily due to the convenience of the platform racking up almost 1200 updates in the year <a href="http://twitter.com/RossGoodman">here</a>.</p>
<h2>Flickr / Photography</h2>
<p>I can&#8217;t find a way to get stats for the year so here are my top five photos:<br />
<a href="http://www.flickr.com/photos/ross_goodman/205022640/" class="tt-flickr tt-flickr-Medium" title="tennis"><img class="alignnone" src="http://farm1.static.flickr.com/80/205022640_0257409f72.jpg" alt="tennis" width="500" height="396" /></a><br />
<a href="http://www.flickr.com/photos/ross_goodman/1435268948/" class="tt-flickr tt-flickr-Medium" title="Car Crash Rescue 1"><img class="alignnone" src="http://farm2.static.flickr.com/1322/1435268948_890356757a.jpg" alt="Car Crash Rescue 1" width="500" height="332" /></a><br />
<a href="http://www.flickr.com/photos/ross_goodman/140487234/" class="tt-flickr tt-flickr-Medium" title="Lightning 5"><img class="alignnone" src="http://farm1.static.flickr.com/50/140487234_1e964fc73b.jpg" alt="Lightning 5" width="500" height="333" /></a><br />
<a href="http://www.flickr.com/photos/ross_goodman/204793554/" class="tt-flickr tt-flickr-Medium" title="Kelvingrove Heads 1"><img class="alignnone" src="http://farm1.static.flickr.com/59/204793554_94d9e42541.jpg" alt="Kelvingrove Heads 1" width="333" height="500" /></a><br />
<a href="http://www.flickr.com/photos/ross_goodman/1434398335/" class="tt-flickr tt-flickr-Medium" title="Car Crash Rescue 2"><img class="alignnone" src="http://farm2.static.flickr.com/1431/1434398335_fefa294ed0.jpg" alt="Car Crash Rescue 2" width="500" height="332" /></a> </p>
<h2>Web Site / Blog</h2>
<p>By far the most popular post on the site was the photos page <a href="http://www.rossgoodman.com/photos/">here</a>.<br />
Second most popular page is the &#8220;About Me&#8221; page <a href="http://www.rossgoodman.com/about/">here</a>.<br />
As for the blog entries themselves they rank at:<br />
1 &#8211; <a href="http://www.rossgoodman.com/2008/05/20/business-objects-xi-30-new-features-conditional-prompts/">Business Objects XI 3.0 New Features &#8211; Conditional Prompts</a><br />
2 &#8211; <a href="http://www.rossgoodman.com/2008/08/27/crystal-xcelsius-filtered-rows-from-a-filter-component/">Crystal Xcelsius &#8211; Filtered Rows From A Filter Component</a><br />
3 &#8211; <a href="http://www.rossgoodman.com/2008/02/28/modelling-change-in-your-dimensions/">Modelling Change In Your Dimensions</a><br />
4 &#8211; <a href="http://www.rossgoodman.com/2008/05/20/business-objects-xi-30-new-features-change-data-tracking/">Business Objects XI 3.0 New Features &#8211; Change Data Tracking</a><br />
5 &#8211; <a href="http://www.rossgoodman.com/2008/02/27/dimensional-modelling-facts/">Dimensional Modelling &#8211; Facts</a><br />
As you can see here the site only really started getting traffic last January so that gives me 17300 page views.<br />
<img src="http://www.rossgoodman.com/wp-content/uploads/2008/12/sitestats-300x140.jpg" alt="sitestats" title="sitestats" width="300" height="140" class="alignnone size-medium wp-image-234" /></p>
<h2>Personal Stuff</h2>
<p>Obviously the biggest news of the year was the passing of my daughter Emma.<br />
<a href="http://www.rossgoodman.com/2008/09/12/celebrating-the-life-of-emma-berry-goodman/">Celebrating the Life of Emma Berry Goodman</a><br />
And the year ends on another low point with the passing of another member of my extended family.<br />
<a href="http://www.lastingtribute.co.uk/tribute/miller/2981407">George Miller &#8211; Footballer | 1939 &#8211; 2008</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rossgoodman.com/2008/12/31/a-year-in-retrospect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crystal Xcelsius &#8211; Filtered Rows From A Filter Component</title>
		<link>http://www.rossgoodman.com/2008/08/27/crystal-xcelsius-filtered-rows-from-a-filter-component/</link>
		<comments>http://www.rossgoodman.com/2008/08/27/crystal-xcelsius-filtered-rows-from-a-filter-component/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 18:11:27 +0000</pubDate>
		<dc:creator>Ross (Admin)</dc:creator>
				<category><![CDATA[Business Objects]]></category>
		<category><![CDATA[MIG]]></category>
		<category><![CDATA[Maxima]]></category>
		<category><![CDATA[Maxima Information Group]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Xcelsius 2008]]></category>
		<category><![CDATA[BusinessObjects]]></category>
		<category><![CDATA[Crystal]]></category>
		<category><![CDATA[Filter]]></category>
		<category><![CDATA[Rows]]></category>
		<category><![CDATA[Xcelsius]]></category>

		<guid isPermaLink="false">http://www.rossgoodman.com/?p=184</guid>
		<description><![CDATA[This is really obvious with hindsight but it took me ages before &#8220;the penny dropped&#8221;. Most of the time I find myself using the &#8220;Filtered Rows&#8221; option on my selectors. The main selector that I want to use is the &#8220;Filter&#8221;, but strangely this does not have the option of filtered rows. What I have <a href='http://www.rossgoodman.com/2008/08/27/crystal-xcelsius-filtered-rows-from-a-filter-component/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>This is really obvious with hindsight but it took me ages before &#8220;the penny dropped&#8221;.<br />
Most of the time I find myself using the &#8220;Filtered Rows&#8221; option on my selectors.<br />
The main selector that I <em>want</em> to use is the &#8220;Filter&#8221;, but strangely this does not have the option of filtered rows.<br />
What I have resorted to doing in the past is to use multiple selectors:<br />
A date drop down list box filters the rows from &#8220;Raw Data&#8221; sheet to the &#8220;Monthly&#8221; sheet.<br />
A product drop down list box filters the rows from the &#8220;Monthly&#8221; sheet to the &#8220;MonthlyProducts&#8221; sheet.<br />
A customer drop down list box filters the rows from the &#8220;MonthlyProducts&#8221; sheet to the &#8220;MonthlyProductsCustomers&#8221; sheet which now lists all of the sales made for that combination.<br />
The filter component <em>could</em> do that, but this component assumes that there will only be a single row in the output. As soon as you have multiple rows in your result set then you can&#8217;t use the filter component.<br />
<strong>Ahhh, but you can with a little lateral thinking; that&#8217;s what Xcelsius is all about.</strong><br />
<span id="more-184"></span><br />
In my &#8220;RawData&#8221; sheet I have the columns Date, Product, Customer and then some other raw data columns. To the right of the Customer column I insert a new column and call it &#8220;Key&#8221;, this contains a formula to concatenante the three previous columns together </p>
<blockquote><p>=a2 &#038; &#8220;-&#8221; &#038; b2 &#038; &#8220;-&#8221; &#038; c2</p></blockquote>
<p>I then build a filter component that looks at A2:D500 and tell it that I want three filters.<br />
I tell it that the destination cell is on a separate sheet &#8220;Controls!A1&#8243;, I call this cell the &#8220;SelectedKey&#8221;<br />
This gives me a component that allows me to select the unique combination of the three keys, Date, Product and Customer and record the selected value, but how do I then show the multiple rows that are associated with this SelectedKey?<br />
Use a ComboBox component:<br />
The labels come from the key column RawData!D2:D500<br />
The Insertion Type is Filtered Rows.<br />
The Source Data is RawData!D2:Z500<br />
The Destination is a new sheet FilteredRows!D2:Z500<br />
On the Behaviour tab set the selected item to reference Controls!A1 which stores the selected key.<br />
When the filter component selection changes, the SelectedKey is updated, this changes the selected value in the Combo Box which filters the rows.<br />
We don&#8217;t want the users to see the Combo Box so my preference is to create a panel container and put all of my &#8220;hidden&#8221; or &#8220;debugging&#8221; components in it. The panel container can then be hidden using the Dynamic Visibility setting.</p>
<p>In my example I wanted to filter multiple datasets using the same criteria so I simply added multiple Combo Box components, each with their own source and destination ranges but each referring to the same selected key field.<br />
This was by far the easiest way to implement this.</p>
<blockquote><p>I know that I should be using QAAWS or Live office and doing this all interactively, but for this customer they wanted to manipulate a static dataset.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.rossgoodman.com/2008/08/27/crystal-xcelsius-filtered-rows-from-a-filter-component/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Protected: XI 3.0 &#8211; New Features &#8211; Publisher</title>
		<link>http://www.rossgoodman.com/2008/07/08/xi-30-new-features-publisher/</link>
		<comments>http://www.rossgoodman.com/2008/07/08/xi-30-new-features-publisher/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 14:24:15 +0000</pubDate>
		<dc:creator>Ross (Admin)</dc:creator>
				<category><![CDATA[Business Objects]]></category>
		<category><![CDATA[Maxima]]></category>
		<category><![CDATA[Maxima Information Group]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[XI 3.0]]></category>
		<category><![CDATA[3.0]]></category>
		<category><![CDATA[MIG]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[Publisher]]></category>
		<category><![CDATA[XI]]></category>

		<guid isPermaLink="false">http://www.rossgoodman.com/?p=133</guid>
		<description><![CDATA[There is no excerpt because this is a protected post.]]></description>
			<content:encoded><![CDATA[<form action="http://www.rossgoodman.com/wp-pass.php" method="post">
<p>This post is password protected. To view it please enter your password below:</p>
<p><label for="pwbox-133">Password:<br />
<input name="post_password" id="pwbox-133" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="Submit" /></p></form>
]]></content:encoded>
			<wfw:commentRss>http://www.rossgoodman.com/2008/07/08/xi-30-new-features-publisher/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Protected: Lessons Learned</title>
		<link>http://www.rossgoodman.com/2008/07/08/lessons-learned/</link>
		<comments>http://www.rossgoodman.com/2008/07/08/lessons-learned/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 02:00:25 +0000</pubDate>
		<dc:creator>Ross (Admin)</dc:creator>
				<category><![CDATA[Business Objects]]></category>
		<category><![CDATA[MIG]]></category>
		<category><![CDATA[Maxima]]></category>
		<category><![CDATA[Maxima Information Group]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[XI 3.0]]></category>
		<category><![CDATA[3.0]]></category>
		<category><![CDATA[XI]]></category>

		<guid isPermaLink="false">http://www.rossgoodman.com/?p=137</guid>
		<description><![CDATA[There is no excerpt because this is a protected post.]]></description>
			<content:encoded><![CDATA[<form action="http://www.rossgoodman.com/wp-pass.php" method="post">
<p>This post is password protected. To view it please enter your password below:</p>
<p><label for="pwbox-137">Password:<br />
<input name="post_password" id="pwbox-137" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="Submit" /></p></form>
]]></content:encoded>
			<wfw:commentRss>http://www.rossgoodman.com/2008/07/08/lessons-learned/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Business Objects XI 3.0 New Features &#8211; Change Data Tracking</title>
		<link>http://www.rossgoodman.com/2008/05/20/business-objects-xi-30-new-features-change-data-tracking/</link>
		<comments>http://www.rossgoodman.com/2008/05/20/business-objects-xi-30-new-features-change-data-tracking/#comments</comments>
		<pubDate>Tue, 20 May 2008 22:08:21 +0000</pubDate>
		<dc:creator>Ross (Admin)</dc:creator>
				<category><![CDATA[Business Objects]]></category>
		<category><![CDATA[MIG]]></category>
		<category><![CDATA[Maxima]]></category>
		<category><![CDATA[Maxima Information Group]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[XI 3.0]]></category>
		<category><![CDATA[3.0]]></category>
		<category><![CDATA[BI]]></category>
		<category><![CDATA[BO]]></category>
		<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[BusObj]]></category>
		<category><![CDATA[Maxi]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[Web Intelligence]]></category>
		<category><![CDATA[WebI]]></category>
		<category><![CDATA[XI]]></category>

		<guid isPermaLink="false">http://www.rossgoodman.com/?p=109</guid>
		<description><![CDATA[I know that I covered this in my video post, but I hated the quality of the video, so here is a similar post with pictures (click on hem to see larger versions). You no longer need to splash out on fancy dashboarding software (although Xcelsius is good !) to quickly highlight when your data <a href='http://www.rossgoodman.com/2008/05/20/business-objects-xi-30-new-features-change-data-tracking/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p><img style="border: 0pt none;" src="http://www.businessobjects.com/global/images/logos/internal/corporate_logo_nav.jpg" alt="Business Objects" width="195" height="91" /></p>
<p>I know that I covered this in my video post, but I hated the quality of the video, so here is a similar post with pictures (click on hem to see larger versions).</p>
<p>You no longer need to splash out on fancy dashboarding software (although Xcelsius <strong>is</strong> good !) to quickly highlight when your data is changing. A new feature in Business Objects Web Intelligence (WebI) 3.0 allows you to add this feature to any document.</p>
<p><span id="more-109"></span></p>
<h2>Query</h2>
<p>How do you set up your query to be able to track the changes in your data?</p>
<p>You don&#8217;t have to do anything, just create your query as you normally would.</p>
<p><a href="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges001.jpg"><img class="alignnone size-medium wp-image-110" title="trackdatachanges001" src="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges001-300x255.jpg" alt="" width="300" height="255" /></a></p>
<h2>Edit Report</h2>
<p>This is where the magic happens! First of all you have to enable the track changes feature which is in the top right hand corner of the Edit Report window.</p>
<p><a href="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges002.jpg"><img class="alignnone size-medium wp-image-111" title="trackdatachanges002" src="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges002-300x99.jpg" alt="" width="300" height="99" /></a></p>
<p>This gives you your first choice: Do you want to track changes between each refresh of your document or do you want to track changes from a fixed set of data?</p>
<p><a href="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges003.jpg"><img class="alignnone size-medium wp-image-112" title="trackdatachanges003" src="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges003-300x130.jpg" alt="" width="300" height="130" /></a></p>
<p>For this demo I&#8217;m going to select Auto Update so that I can see the changes between each refresh. In order for track changes to work you need to have two datasets, so I&#8217;m going to select the &#8220;Refresh Now&#8221; option and select the year 2005.</p>
<p><a href="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges004.jpg"><img class="alignnone size-medium wp-image-113" title="trackdatachanges004" src="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges004-143x300.jpg" alt="" width="143" height="300" /></a></p>
<p>As you can see my 2004 section has been struck through and the 2005 section has been shown in blue. This is because I completely changed my dataset. If I remove the year section and redo the change tracking you will see how track changes works better when you give some thought to your document design.</p>
<p><a href="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges005.jpg"><img class="alignnone size-medium wp-image-114" title="trackdatachanges005" src="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges005-248x300.jpg" alt="" width="248" height="300" /></a></p>
<p>Now we can see, highlighted in green, all the values that have increased, highlighted in red the values that have decreased, and struck through and values that no longer exist. At a glance I am not worrying as on the whole I am selling more product that last year.</p>
<p>If you lose track of what you are comparing, it is listed at the bottom of the screen:</p>
<p><a href="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges006.jpg"><img class="alignnone size-medium wp-image-115" title="trackdatachanges006" src="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges006-300x16.jpg" alt="" width="300" height="16" /></a></p>
<p>As you can see, this confirms the type of change tracking and the two refresh dates that are being compared. What I am <strong>not</strong> sure of is how to confirm the parameters that were used in each case.</p>
<p>If I then refresh the report again, this time for 2006:</p>
<p><a href="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges007.jpg"><img class="alignnone size-medium wp-image-116" title="trackdatachanges007" src="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges007-233x300.jpg" alt="" width="233" height="300" /></a></p>
<p>Here we can see that we have (re)introduced some product lines and these are highlighted in blue.</p>
<p>I need to print this report out and the red and green are unreadable on my cheap black and white printer, what can I do? There is a &#8220;Hide Changes&#8221; button, the middle of these three:</p>
<p><a href="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges008.jpg"><img class="alignnone size-medium wp-image-117" title="trackdatachanges008" src="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges008.jpg" alt="" width="114" height="34" /></a></p>
<p>Clicking this hides the highlighting of the changed data. The data it&#8217;s self is still kept.</p>
<p><a href="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges009.jpg"><img class="alignnone size-medium wp-image-118" title="trackdatachanges009" src="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges009-300x180.jpg" alt="" width="300" height="180" /></a></p>
<p>Clicking the button again will re-display the colour highlights. Compare this with clicking the leftmost button &#8220;Deactivate Data Tracking&#8221;, this discards the &#8220;previous&#8221; version of the data and disables the highlighting facility.</p>
<p>The rightmost button; &#8220;Data Tracking Options&#8221; gives you access to change the formatting of the data changes. You may need to do this as increased values may not always be good (Green).</p>
<p><a href="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges010.jpg"><img class="alignnone size-medium wp-image-119" title="trackdatachanges010" src="http://www.rossgoodman.com/wp-content/uploads/2008/05/trackdatachanges010-294x300.jpg" alt="" width="294" height="300" /></a></p>
<p>From this same window you can use the &#8220;Reference Data&#8221; tab to change back to a fixed data set for your baseline comparison if you wish.</p>
<p>This is obviously no replacement for a fully featured dashboarding product such as Xcelsius but it is &#8220;easier&#8221; to use than the Alerting feature that we are used to use within reports.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rossgoodman.com/2008/05/20/business-objects-xi-30-new-features-change-data-tracking/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Business Objects XI 3.0 New Features &#8211; Conditional Prompts</title>
		<link>http://www.rossgoodman.com/2008/05/20/business-objects-xi-30-new-features-conditional-prompts/</link>
		<comments>http://www.rossgoodman.com/2008/05/20/business-objects-xi-30-new-features-conditional-prompts/#comments</comments>
		<pubDate>Tue, 20 May 2008 07:54:48 +0000</pubDate>
		<dc:creator>Ross (Admin)</dc:creator>
				<category><![CDATA[Business Objects]]></category>
		<category><![CDATA[MIG]]></category>
		<category><![CDATA[Maxima]]></category>
		<category><![CDATA[Maxima Information Group]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[XI 3.0]]></category>
		<category><![CDATA[BI]]></category>
		<category><![CDATA[BO]]></category>
		<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[BusObj]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[XI]]></category>
		<category><![CDATA[XI30]]></category>

		<guid isPermaLink="false">http://www.rossgoodman.com/?p=98</guid>
		<description><![CDATA[I&#8217;m going to start a small series of posts showing you what&#8217;s new in Business Objects XI 3.0 I&#8217;m starting off small; with Conditional Prompts. The Problem Just to clarify. A conditional prompt is a question that is placed in the query that allows you to fine tune the results that you return from your <a href='http://www.rossgoodman.com/2008/05/20/business-objects-xi-30-new-features-conditional-prompts/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p><img style="border: 0pt none;" src="http://www.businessobjects.com/global/images/logos/internal/corporate_logo_nav.jpg" alt="Business Objects Logo" width="195" height="91" /></p>
<p>I&#8217;m going to start a small series of posts showing you what&#8217;s new in Business Objects XI 3.0</p>
<p>I&#8217;m starting off small; with Conditional Prompts.<span id="more-98"></span></p>
<h2>The Problem</h2>
<p>Just to clarify. A conditional prompt is a question that is placed in the query that allows you to fine tune the results that you return from your database. The problem is; sometimes you want to see &#8220;some&#8221; of the data, other times you want to see it all. This is fine if you are a report developer as you can edit the query to add or remove the prompt. If you are a report consumer then you are stuck with the query as it has been developed.</p>
<p>When you use a prompt object it will ask you &#8220;Enter value(s) for Year:&#8221; for example and then allow you to select one or more years. If you want to see all years, then you have to select every value from the list. This is fine for years as there are not so many of them. When you have &#8220;lots&#8221; of values this becomes a pain to select, you might miss one, your query becomes &#8220;ugly&#8221; as it has all of the selected values embedded within the SQL and some databases actually put a limit on the number of values that you can pass in this manner.</p>
<h2>The &#8220;Old&#8221; Solution</h2>
<p>Using versions prior to XI 3.0 the way that you got around this problem was to manually edit your condition objects. Rather than having a &#8220;simple&#8221; condition:</p>
<pre>Dates.Year in @Prompt('Enter value(s) for Year:')</pre>
<p>You would manually edit this to become:</p>
<pre>(Dates.Year in @Prompt('Enter value(s) for Year:')
or
'All' = @Prompt('Enter value(s) for Year:'))
</pre>
<p>This works because if the user types in &#8216;All&#8217; then &#8216;All&#8217; = &#8216;All&#8217; would be true for every row, so you get all of your data.</p>
<p>The problem with this method is that the user has to type in &#8216;All&#8217;, most users prefer to use a list of values (LoV) to select the values you want. You then have to manually edit the SQL that populates the LoV values to be something along the lines of:</p>
<pre>select distinct year from dates union select 'All' from dual;</pre>
<p>Again, this works but is more manual editing. This then has to be done on every object that you think that you will need this feature on.</p>
<h2>The XI 3.0 Way</h2>
<p>As of XI 3.0 there is a much more elegant (less labour intensive) way to do the same thing.</p>
<p>When you are building your query and you create a query filter you will see a new option denoted by the question mark icon to the right of the prompt text.</p>
<p>(by clicking on any of these images you will see a larger version)</p>
<p><a href="http://www.rossgoodman.com/wp-content/uploads/2008/05/optionalprompt001.jpg"><img class="alignnone size-medium wp-image-99" title="optionalprompt001" src="http://www.rossgoodman.com/wp-content/uploads/2008/05/optionalprompt001-300x137.jpg" alt="" width="300" height="137" /></a></p>
<p>Clicking this icon opens the prompt properties dialog box.</p>
<p><a href="http://www.rossgoodman.com/wp-content/uploads/2008/05/optionalprompt002.jpg"><img class="alignnone size-medium wp-image-100" title="optionalprompt002" src="http://www.rossgoodman.com/wp-content/uploads/2008/05/optionalprompt002-300x237.jpg" alt="" width="300" height="237" /></a></p>
<p>Here I have ticked the &#8220;Optional prompt&#8221; box to tell XI that I may not always want to supply values.</p>
<p>When I now refresh my query it asks me for the values I wish to associate with the prompt. Note the new text &#8220;(optional) If no value is selected, this filter will be removed.&#8221;</p>
<p><a href="http://www.rossgoodman.com/wp-content/uploads/2008/05/optionalprompt003.jpg"><img class="alignnone size-medium wp-image-101" title="optionalprompt003" src="http://www.rossgoodman.com/wp-content/uploads/2008/05/optionalprompt003-300x241.jpg" alt="" width="300" height="241" /></a></p>
<p>For the moment I&#8217;m going to select a single year, 2004.</p>
<p><a href="http://www.rossgoodman.com/wp-content/uploads/2008/05/optionalprompt004.jpg"><img class="alignnone size-medium wp-image-102" title="optionalprompt004" src="http://www.rossgoodman.com/wp-content/uploads/2008/05/optionalprompt004-300x241.jpg" alt="" width="300" height="241" /></a></p>
<p>When I run my report, you can see that only a single years data has been returned as requested. I have altered my report to also display the SQL used and notice how there is a &#8220;where&#8221; clause to restrict the year to a single value.</p>
<p><a href="http://www.rossgoodman.com/wp-content/uploads/2008/05/optionalprompt007.jpg"><img class="alignnone size-medium wp-image-103" title="optionalprompt007" src="http://www.rossgoodman.com/wp-content/uploads/2008/05/optionalprompt007-300x157.jpg" alt="" width="300" height="157" /></a></p>
<p>If I now re run the report but do NOT supply a year:</p>
<p><a href="http://www.rossgoodman.com/wp-content/uploads/2008/05/optionalprompt0031.jpg"><img class="alignnone size-medium wp-image-104" title="optionalprompt0031" src="http://www.rossgoodman.com/wp-content/uploads/2008/05/optionalprompt0031-300x241.jpg" alt="" width="300" height="241" /></a></p>
<p>The report runs and shows me all years:</p>
<p><a href="http://www.rossgoodman.com/wp-content/uploads/2008/05/optionalprompt006.jpg"><img class="alignnone size-medium wp-image-105" title="optionalprompt006" src="http://www.rossgoodman.com/wp-content/uploads/2008/05/optionalprompt006-300x148.jpg" alt="" width="300" height="148" /></a></p>
<p>However, notice that this time there is no where clause to restrict the data.</p>
<h2>Summary</h2>
<p>Whilst this may not be the most earth shattering piece of new functionality, it is on that I think will speed up the report development process as it removes a lot of the simple but mundane tasks that a Designer had to do. It also results in much more efficient queries being sent to the database so the users should get their results just a little bit faster.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rossgoodman.com/2008/05/20/business-objects-xi-30-new-features-conditional-prompts/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

