<?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; Maxima Information Group</title>
	<atom:link href="http://www.rossgoodman.com/category/work/maxima-information-group-work/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>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>Protected: Security &#8211; TrueCrypt &#8211; Encrypt Your Files</title>
		<link>http://www.rossgoodman.com/2008/12/11/security-truecrypt-encrypt-your-files/</link>
		<comments>http://www.rossgoodman.com/2008/12/11/security-truecrypt-encrypt-your-files/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 01:19:05 +0000</pubDate>
		<dc:creator>Ross (Admin)</dc:creator>
				<category><![CDATA[MIG]]></category>
		<category><![CDATA[Maxima]]></category>
		<category><![CDATA[Maxima Information Group]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Encryption]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[TrueCrypt]]></category>

		<guid isPermaLink="false">http://www.rossgoodman.com/?p=208</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-208">Password:<br />
<input name="post_password" id="pwbox-208" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="Submit" /></p></form>
]]></content:encoded>
			<wfw:commentRss>http://www.rossgoodman.com/2008/12/11/security-truecrypt-encrypt-your-files/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Protected: Oracle Design Tool &#8211; SQL Developer Data Modelling</title>
		<link>http://www.rossgoodman.com/2008/11/30/oracle-design-tool-sql-developer-data-modelling/</link>
		<comments>http://www.rossgoodman.com/2008/11/30/oracle-design-tool-sql-developer-data-modelling/#comments</comments>
		<pubDate>Sun, 30 Nov 2008 00:29:19 +0000</pubDate>
		<dc:creator>Ross (Admin)</dc:creator>
				<category><![CDATA[Dimensional Modelling]]></category>
		<category><![CDATA[MIG]]></category>
		<category><![CDATA[Maxima]]></category>
		<category><![CDATA[Maxima Information Group]]></category>
		<category><![CDATA[Data Modelling]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQ Developer]]></category>

		<guid isPermaLink="false">http://www.rossgoodman.com/?p=206</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-206">Password:<br />
<input name="post_password" id="pwbox-206" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="Submit" /></p></form>
]]></content:encoded>
			<wfw:commentRss>http://www.rossgoodman.com/2008/11/30/oracle-design-tool-sql-developer-data-modelling/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>MS Excel &#8211; Convert Percentage To Number</title>
		<link>http://www.rossgoodman.com/2008/07/25/ms-excel-convert-percentage-to-number/</link>
		<comments>http://www.rossgoodman.com/2008/07/25/ms-excel-convert-percentage-to-number/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 18:12:56 +0000</pubDate>
		<dc:creator>Ross (Admin)</dc:creator>
				<category><![CDATA[MIG]]></category>
		<category><![CDATA[Maxima]]></category>
		<category><![CDATA[Maxima Information Group]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Percentages]]></category>

		<guid isPermaLink="false">http://www.rossgoodman.com/?p=178</guid>
		<description><![CDATA[I have spent most of today throwing data around in MS Excel. One of the things that I have had to do is to convert percentages into real numbers. In excel percentages are stored as fractions, for example 50% is stored as 0.5, 75% as 0.75 etc. I am trying to chart these figures in <a href='http://www.rossgoodman.com/2008/07/25/ms-excel-convert-percentage-to-number/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I have spent most of today throwing data around in MS Excel.</p>
<p>One of the things that I have had to do is to convert percentages into real numbers.</p>
<p>In excel percentages are stored as fractions, for example 50% is stored as 0.5, 75% as 0.75 etc.</p>
<p>I am trying to chart these figures in Business Objects Xcelsius but the y-axis labels are just showing 0 to 0 hence why i need to convert my numbers.</p>
<p>I have just found a really easy way to do this.</p>
<ul>
<li>In the target cells, enter the value 100 in each cell.</li>
<li>Copy the source cells</li>
<li>Select &#8220;Paste Special&#8221; using the options &#8220;Values&#8221; and &#8220;Multiply&#8221;</li>
</ul>
<p>This takes the source value 0.75 multiplies it by 100 and stores the result 75 !</p>
<p>I have used pase special &#8211; values often but I have never seen the need for the multiply option until now !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rossgoodman.com/2008/07/25/ms-excel-convert-percentage-to-number/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Latest ETL Tool &#8211; MS Excel</title>
		<link>http://www.rossgoodman.com/2008/07/25/latest-etl-tool-ms-excel/</link>
		<comments>http://www.rossgoodman.com/2008/07/25/latest-etl-tool-ms-excel/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 17:01:06 +0000</pubDate>
		<dc:creator>Ross (Admin)</dc:creator>
				<category><![CDATA[MIG]]></category>
		<category><![CDATA[Maxima]]></category>
		<category><![CDATA[Maxima Information Group]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[ETL]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Indirect]]></category>

		<guid isPermaLink="false">http://www.rossgoodman.com/?p=176</guid>
		<description><![CDATA[I have spent all day in MS Excel. I receive excel spreadsheets in a &#8220;fairly&#8221; fixed format. I need to get this data into Business Objects Xcelsius via another spreadsheet that stores historical records and keeps the data in a format optimised for display. &#8220;Normally&#8221; I would be using Data integrator (DI) to move the <a href='http://www.rossgoodman.com/2008/07/25/latest-etl-tool-ms-excel/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I have spent all day in MS Excel.<br />
I receive excel spreadsheets in a &#8220;fairly&#8221; fixed format.<br />
I need to get this data into Business Objects Xcelsius via another spreadsheet that stores historical records and keeps the data in a format optimised for display.<br />
&#8220;Normally&#8221; I would be using Data integrator (DI) to move the data from the source, store the data in a database table or two, use query as a web service (QAAWS) or Live Office to pull the data from the database directly into Xcelsius.<br />
Here we do not have access to any of these luxuries.<br />
I have written a translation spreadsheet that I can point to a specific source and it will re-shape the data so that it can fit my target spreadsheet. Then it&#8217;s just a case of copy and then paste values&#8230;.<br />
To make this process easier I am using the &#8220;INDIRECT&#8221; function in excel.<br />
<code>=INDIRECT("[" &#038; $H$1 &#038; "]Data!" &#038; AU$1 &#038; $C17) * 100</code><br />
Here the current cell will grab the vaue from the workbook named in H1, go to the &#8220;Data&#8221; spreadsheet then grab the row and column attributes from AU1 and C17 then multiply the number by 100.<br />
This means that next month I just need to change the name of my source spreadsheet and it will all just work. If a row or column &#8220;moves&#8221; in the source, I just update the metadata (AU1 or C17) in this case.<br />
It takes a long time to set up and to check but next month it should be a breeze.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rossgoodman.com/2008/07/25/latest-etl-tool-ms-excel/feed/</wfw:commentRss>
		<slash:comments>2</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>Protected: Concatenate Two Fields And Get A Smaller Answer !?!?</title>
		<link>http://www.rossgoodman.com/2008/06/04/concatenate-two-fields-and-get-a-smaller-answer/</link>
		<comments>http://www.rossgoodman.com/2008/06/04/concatenate-two-fields-and-get-a-smaller-answer/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 23:41:36 +0000</pubDate>
		<dc:creator>Ross (Admin)</dc:creator>
				<category><![CDATA[MIG]]></category>
		<category><![CDATA[Maxima]]></category>
		<category><![CDATA[Maxima Information Group]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[SQLServer]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Conversion]]></category>
		<category><![CDATA[DataType]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.rossgoodman.com/?p=120</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-120">Password:<br />
<input name="post_password" id="pwbox-120" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="Submit" /></p></form>
]]></content:encoded>
			<wfw:commentRss>http://www.rossgoodman.com/2008/06/04/concatenate-two-fields-and-get-a-smaller-answer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

