<?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/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Dave's Adventures in Business Intelligence &#187; Multiple Data Providers</title>
	<atom:link href="http://www.dagira.com/category/report-techniques/multiple-data-providers/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dagira.com</link>
	<description>...you are in a twisty maze of passageways, all different...</description>
	<lastBuildDate>Wed, 01 Feb 2012 17:26:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<!-- podcast_generator="podPress/8.8" -->
		<copyright>&#xA9; </copyright>
		<managingEditor>blogmaster@dagira.com ()</managingEditor>
		<webMaster>blogmaster@dagira.com()</webMaster>
		<category></category>
		<ttl>1440</ttl>
		<itunes:keywords></itunes:keywords>
		<itunes:subtitle></itunes:subtitle>
		<itunes:summary>...you are in a twisty maze of passageways, all different...</itunes:summary>
		<itunes:author></itunes:author>
		<itunes:category text="Society &amp; Culture"/>
		<itunes:owner>
			<itunes:name></itunes:name>
			<itunes:email>blogmaster@dagira.com</itunes:email>
		</itunes:owner>
		<itunes:block>No</itunes:block>
		<itunes:explicit>no</itunes:explicit>
		<itunes:image href="http://www.dagira.com/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<image>
			<url>http://www.dagira.com/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
			<title>Dave's Adventures in Business Intelligence</title>
			<link>http://www.dagira.com</link>
			<width>144</width>
			<height>144</height>
		</image>
		<item>
		<title>What Does Extend Merged Dimensions Really Do?</title>
		<link>http://www.dagira.com/2010/06/19/what-does-extend-merged-dimensions-really-do/</link>
		<comments>http://www.dagira.com/2010/06/19/what-does-extend-merged-dimensions-really-do/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 18:19:31 +0000</pubDate>
		<dc:creator>Dave Rathbun</dc:creator>
				<category><![CDATA[Multiple Data Providers]]></category>
		<category><![CDATA[Report Techniques]]></category>

		<guid isPermaLink="false">http://www.dagira.com/?p=292</guid>
		<description><![CDATA[The &#8220;Extend merged dimension values&#8221; is designed to provide more flexibility in how Web Intelligence handles merged data. In Desktop Intelligence we have for years complained that there is no way to control the merge (join) process. No matter what I did I got a full outer join. In the XI versions of Web Intelligence, [...]]]></description>
			<content:encoded><![CDATA[<p>The &#8220;Extend merged dimension values&#8221; is designed to provide more flexibility in how Web Intelligence handles merged data. In Desktop Intelligence we have for years complained that there is no way to control the merge (join) process. No matter what I did I got a full outer join. In the XI versions of Web Intelligence, I now have three different ways to reference my merged values. In this post I will show those three options and then show the impact of the extend merged dimension setting. <span id="more-292"></span></p>
<h3>Defining the Problem</h3>
<p>I am going to create a couple of very simple queries from the Island Resorts universe to demonstrate this feature. Each query is specifically structured so that it is missing some data found in the other query. For example, here is my first query.</p>
<p><img src="/tips/extend_merge/query_left.png" width="247" height="194" border="0" alt="Screen shot of Web Intelligence query panel" title="Web Intelligence query panel returning data for 2007-2008" /></p>
<p>And the data returned by this query.</p>
<p><img src="/tips/extend_merge/data_left.png" width="325" height="169" border="0" alt="Screen shot of Web Intelligence data" title="Web Intelligence data for 2007-2008" /></p>
<p>And here is my second query.</p>
<p><img src="/tips/extend_merge/query_right.png" width="275" height="201" border="0" alt="Screen shot of Web Intelligence query panel" title="Web Intelligence query panel returning data for 2006-2007" /></p>
<p>And the data returned by this query.</p>
<p><img src="/tips/extend_merge/data_right.png" width="325" height="169" border="0" alt="Screen shot of Web Intelligence data" title="Web Intelligence data for 2006-2007" /></p>
<p>I am going to call the first query my &#8220;left&#8221; query and the second query is my &#8220;right&#8221; query for the rest of this post. I have specifically restricted my left query to 2007-2008 years of data, and my right query to 2006-2007. That means the two queries have one year (2007) in common and each query also has unique data (left has 2008 and right has 2006).</p>
<p>Since both queries are from the same source I do not have to do anything to merge the shared dimensions. Both the Resort and Year are automatically merged as shown here.</p>
<p><img src="/tips/extend_merge/merged_dimensions.png" width="219" height="199" border="0" alt="Merged dimensions from a Web Intelligence document" title="Shared dimensions in a Web Intelligence document are automatically merged" /></p>
<p>And finally here is the resulting block of data shown in my Web Intelligence report. This is the most common presentation for the data. Note that it shows data from all three years of sales results that I selected.</p>
<p><img src="/tips/extend_merge/merged_block.png" width="433" height="241" border="0" alt="Merged dimensions shown in a Web Intelligence document" title="Shared dimensions mean that all data is shown from all data providers on a merged block in Web Intelligence" /></p>
<h3>Using the Left Query to Drive The Results</h3>
<p>In Desktop Intelligence (more details below) this is as far as I can go. I don&#8217;t have any options that let me control the merge process. In Web Intelligence I do. What if  I want my first query (left) to drive the results? All I have to do is open up each merged dimension object and use the dimensions that come from the left query. If I do, here&#8217;s what the block looks like.</p>
<p><img src="/tips/extend_merge/left_block.png" width="433" height="169" border="0" alt="Screen shot of a Web Intelligence block showing priority given to the left side of the merged queries" title="Web Intelligence block driven by the left query" /></p>
<p>What is going on here? The left query had 2007-2008 data only. I see annual data for both of those years for all three resorts. However, the 2008 rows are missing the Number of guests values. They don&#8217;t exist, because the right query only goes up to 2007. In this case I have told Web Intelligence that my &#8220;left&#8221; data is more important, and to show right data only where it exists.</p>
<h3>Using the Right Query to Drive The Results</h3>
<p>Next I will turn things around and use the &#8220;right&#8221; dimensions instead. Here is the block that results from that operation.</p>
<p><img src="/tips/extend_merge/right_block.png" width="433" height="169" border="0" alt="Screen shot of a Web Intelligence block showing priority given to the right side of the merged queries" title="Web Intelligence block driven by the right query" /></p>
<p>Now my revenue column is sparse (has missing values) while the Number of guests column is completely populated. That is what I expect given that I am using the right dimension objects this time.</p>
<p>Those are the three options that I have in Web Intelligence. I can use the merged dimensions (the most typical requirement) or I can use the dimensions from a specific data provider. If I compare the three blocks (merged, left, and right) I can see exactly how Web Intelligence is working. How does Desktop Intelligence work?</p>
<h3>Merging Data in Desktop Intelligence</h3>
<p>In my example Web Intelligence report I have selected the Resort object in two different queries. After the automatic merging process has run I end up with three different ways to reference the Resort values on a report. Specifically I can reference Resort(left), Resort(right), or Resort. The last option is the merged result. In Desktop Intelligence I am missing that last choice. Is that a problem?</p>
<p>I have a screen shot that shows what the merging process looks like in Desktop Intelligence. One complaint that I have is that I have to click on each dimension object individually to see if it is linked or not. In the screen shot shown below I am only showing that the two year values are linked.</p>
<p><img src="/tips/extend_merge/deski_merge.png" width="546" height="397" border="0" alt="Screen shot of Desktop Intelligence merge dimension process" title="Desktop Intelligence merge dimension process" /></p>
<p>Next I notice that I have no way to refer to the merged result set as I do in Web  Intelligence. I have to pick either the left or right value. Does it matter? It turns out that it does not, as shown here. I have selected the right version of the Year object, yet all three values are showing up. </p>
<p><img src="/tips/extend_merge/deski_block.png" width="428" height="201" border="0" alt="Desktop Intelligence merge dimension results" title="Desktop Intelligence merge dimension result block" /></p>
<p>In Desktop Intelligence the results from the left and right queries are merged together. Every value from the left query appears on the right, and every value on the right appears on the left. It is a union of the two data providers. As a result of this union operation, it doesn&#8217;t matter which side I pick. I can swap the left and right dimension values and still get the same result. It is always a full outer join.</p>
<p>Is it possible for me to reproduce the way Web Intelligence behaves in Desktop Intelligence? In the example I am using today, the answer is yes. However, I need to look at the measure values instead of the dimensions since I cannot alter the merged dimension behavior. If I want to show the left data, I can create a filter so that only those rows that include a Revenue value will be displayed. Here is how that filter looks.</p>
<p><img src="/tips/extend_merge/deski_filter_left.png" width="494" height="412" border="0" alt="Screen shot of Desktop Intelligence complex filter creation process" title="Creating a complex filter in a Desktop Intelligence merged block" /></p>
<p>Dimension values will never be NULL in Desktop Intelligence because of the way the values are shared as a result of the merging process. If I can identify a measure, as I did in this case, I can essentially create a left or right block based on my requirements. The process is not intuitive, nor is it effective in every case. </p>
<h3>Extend Merged Dimension Values</h3>
<p>So now to the point of this post: what if I would like Web Intelligence to act more like Desktop Intelligence? That&#8217;s exactly what the setting &#8220;Extend merged dimension values&#8221; does for me. Remember in my description of Desktop Intelligence I said that merged dimensions result in a union, where every value from my left query appears in my right dimension and vice versa. That means that I will always see data from either side, no matter which dimension I pick. Here is one way to invoke this setting. I am right-clicking on a report tab and I see this menu.</p>
<p><img src="/tips/extend_merge/invoke_document_properties.png" width="248" height="229" border="0" alt="Screen shot of context menu in a Web Intelligence document" title="Invoking the context (right-click) menu in a Web Intelligence document" /></p>
<p>After selecting Document Properties the following menu appears on the side of my document.</p>
<p><img src="/tips/extend_merge/extend_merge_setting.png" width="245" height="93" border="0" alt="Screen shot of document properties in a Web Intelligence document" title="Document properties in a Web Intelligence document" /></p>
<p>The setting is off by default. What happens if I turn it on?</p>
<p>Here is what my left block looked like before the setting was turned on.<br />
<img src="/tips/extend_merge/left_block.png" width="433" height="169" border="0" alt="Screen shot of a Web Intelligence block showing priority given to the left side of the merged queries" title="Web Intelligence block driven by the left query" /></p>
<p>And here is what it looked like afterwards.<br />
<img src="/tips/extend_merge/left_block_extended.png" width="433" height="241" border="0" alt="Screen shot of a Web Intelligence block showing the results of extended merged dimensions" title="Web Intelligence block driven by the left query with extend merged dimensions activate" /></p>
<p>And here is the right block.</p>
<p><img src="/tips/extend_merge/right_block_extended.png" width="433" height="241" border="0" alt="Screen shot of a Web Intelligence block showing the results of extended merged dimensions" title="Web Intelligence block driven by the right query with extend merged dimensions activate" /></p>
<p>They look exactly the same. And that&#8217;s how Desktop Intelligence would have behaved in this situation. Each dimension has been extended to include the values from the other. My left year includes right values, and my right year includes left values. I have recreated the Desktop Intelligence behavior in Web Intelligence. I am not sure this is a good thing, but I can do it. <img src='http://www.dagira.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Conclusion</h3>
<p>If I only use the merged dimension (meaning I use Resort instead of Resort(Left) or Resort(Right)) then this setting doesn&#8217;t do anything for me. The results will be the same with the setting on or off. But if I need to pick the specific values from either the left or right, this setting allows me to recreate the behavior found in Desktop Intelligence. </p>
<p>One caveat: this setting is a document setting, not a report setting. That means if I turn it on (or off) it affects the entire document. That may or may not be an issue. It all depends on what I am trying to do.</p>
<p><em>This post was written in response to a <a href="http://www.forumtopics.com/busobj/viewtopic.php?t=156975">specific topic on BOB</a>. I started to write the answer there but realized it would make much more sense with screen shots and more text.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dagira.com/2010/06/19/what-does-extend-merged-dimensions-really-do/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Making Up Data Part II: Using Universe Data</title>
		<link>http://www.dagira.com/2009/12/05/making-up-data-part-ii-using-universe-data/</link>
		<comments>http://www.dagira.com/2009/12/05/making-up-data-part-ii-using-universe-data/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 12:00:51 +0000</pubDate>
		<dc:creator>Dave Rathbun</dc:creator>
				<category><![CDATA[Full Client]]></category>
		<category><![CDATA[Multiple Data Providers]]></category>
		<category><![CDATA[Report Techniques]]></category>
		<category><![CDATA[Web Intelligence]]></category>

		<guid isPermaLink="false">http://www.dagira.com/?p=225</guid>
		<description><![CDATA[In Part I of this series I talked briefly about the need for report writers to sometimes &#8220;make up&#8221; data. In that post I showed how I could use the Web Intelligence Rich Client (or alternatively Desktop Intelligence) to import data from a spreadsheet in order to fill out holes in data. In this post [...]]]></description>
			<content:encoded><![CDATA[<p>In Part I of this series I talked briefly about the <a href="http://www.dagira.com/2009/11/09/making-up-data-part-i-personal-data-providers/">need for report writers to sometimes &#8220;make up&#8221; data</a>. In that post I showed how I could use the Web Intelligence Rich Client (or alternatively Desktop Intelligence) to import data from a spreadsheet in order to fill out holes in data. In this post I am going to show an equivalent solution using multiple data providers from a universe instead. I will redo the same example shown before (with a lot fewer screenshots since quite a bit of the process is the same). Because I am using a universe I can show two different possible solutions. <span id="more-225"></span></p>
<h3>Filling Out A Calendar</h3>
<p>My report requirement states that all months &#8211; whether they have sales data or not &#8211; must appear in my output. Because Web Intelligence cannot make up data to fill out the missing months, I need to have an alternative source. In the first post in this series I showed how to do that with a personal data provider as I built out the data in a spreadsheet. This time I am going to show how to do the same thing using only a universe. In order to provide a complete (clean) solution I am going to have to make a new object in my universe.</p>
<p>The first step is to create a query that returns some data. I am going to use the same data that I started with on the last post, which is six months of sales revenue data from the eFashion database. I am also limiting the data to the year 2001 in order to match the example from the last post.</p>
<p><img src="/tips/universe_data_merge/raw_data.jpg" /></p>
<p>Next I will create a second data provider from the calendar table that includes all of my month values. Since this query has no restrictions (conditions) and no measures (no joins to any fact table) it will be guaranteed to return every month. At this point in the last post I detailed how to merge (link) two data providers together. This time that step is not required. That&#8217;s the first advantage of using universe data to perform this step: the dimension objects that are shared across my two queries are already merged (linked). When I used personal data, I had to do the merge step myself.</p>
<p>Once I drag the merged month into my report block I will see all 12 month names. As I did last time I will also replace the existing Month Name detail object with the one that comes from my calendar data provider. The results from these operations are shown in the screenshot below. The &#8220;Discontinued&#8221; value comes from a custom format used in the eFashion universe. The universe was designed with the assumption that if any cell was empty (as opposed to zero) then there were no sales for that item, and it must have been discontinued.</p>
<p><img src="/tips/universe_data_merge/merged_data.jpg" /></p>
<p>I would like to insert a zero value into those &#8220;Discontinued&#8221; cells. I could make it look like it has a zero by changing the format. But if I want an average of that column to be impacted by the fact that I had zero sales for six months out of the year, I need to have an actual zero in the cell, not just a custom format. It&#8217;s at this point that I have gone as far as I can without talking to my universe designer.</p>
<h3>Creating and Using Placeholder Objects</h3>
<p>As a universe designer I can help solve this problem. I might create a special class called &#8220;Placeholder Objects&#8221; that includes new objects used to solve this type of problem. <em>(I have also seen these objects called &#8220;dummy&#8221; objects because they are only going to work in very specific situations. They&#8217;re not &#8220;smart enough&#8221; to be used by themselves.)</em> When I used personal data to solve this issue I created a new column in my spreadsheet and put a zero in for every month. In my universe I will create just one object with a zero value in the select clause and nothing in the tables. <em>Note that this object will not parse; that is expected.</em></p>
<p><img src="/tips/universe_data_merge/zero.jpg" /></p>
<p>Since this object does not have a table associated with it I will need to make sure that it&#8217;s used with at least one &#8220;real&#8221; object in a query. As a universe designer I can&#8217;t enforce this. But if a report writer tried to use this object by itself the query would not run. I have seen some folks suggest that objects like this should be pointed to the DUAL table (in Oracle) or something similar. I disagree. The only benefit to doing this is that the object will parse. But at the same time I am fixing that issue I would be introducing an entirely new set of issues because the DUAL table isn&#8217;t typically going to join to any other table. It&#8217;s much more effective to leave this object in a state where it won&#8217;t parse than to deal with all of that mess.</p>
<h3>Rebuilding the Query</h3>
<p>Once I have created my dummy object and exported the updated universe I can fix the problem. In fact I can fix it a couple of different ways. First, I could mimic the solution from the last post by adding the zero object to my calendar-only data provider. Since I have already covered all of those steps I thought I would show a different technique for this post. I am going to use a UNION query.</p>
<p>A union requires that all of the queries (you can have two or more) match. Each query has to include the exact same number of objects, and the object types (character, date, number) have to match as well. For the scenario I am using for this post each query will have three objects. Both queries will include the Month and Month Name. The first query will also include the new Zero object. The second query will include the regular revenue object. Here are the two screen shots showing what this query looks like.</p>
<p><strong>Query Panel Union Part 1</strong><br />
<img src="/tips/universe_data_merge/query_01.jpg" /></p>
<p><strong>Query Panel Union Part 2</strong><br />
<img src="/tips/universe_data_merge/query_02.jpg" /></p>
<p>Notice that the first query does not have any conditions at all? The second query includes the condition that I created to drop out months (it only shows months with an &#8220;e&#8221; in their name) as well as a limit to show data only for 2001 as mentioned earlier. When I run the combined queries I see this output.</p>
<p><img src="/tips/universe_data_merge/union_data.jpg" /></p>
<p>At this point the data looks great, and it was obtained with a minimal amount of fuss. All of the months show up as required. There are no merged dimensions here since everything is returned in a single data provider. However, there is one item that needs to be fixed. Check out the column headers&#8230; they&#8217;re not exactly &#8220;user friendly&#8221; at this point. What happened? It turns out that column headers from a union query are taken from the first pass of the data provider. As a result my column header says &#8220;Zero&#8221; instead of &#8220;Sales revenue&#8221; as I would expect. Fortunately Web Intelligence (the Rich Client in this case) makes this process extremely simple. All I have to do is open the query panel and drag &#8220;Query 2&#8243; in front of &#8220;Query 1&#8243; in the union area of the query panel and rerun. After rerunning the query I am left with a report block that is missing a measure. <img src='http://www.dagira.com/wp-includes/images/smilies/icon_eek.gif' alt=':shock:' class='wp-smiley' />  This is okay, because the object named &#8220;Zero&#8221; has been removed from the query, and a new object &#8220;Sales revenue&#8221; has appeared. All I have to do is drag that new measure onto the block and I see these results.</p>
<p><img src="/tips/universe_data_merge/final_data.jpg" /></p>
<p>Notice that I have added an Average calculation in the footer to show that the zero values are being included during the calculation. The result obtained via this process is now essentially identical to that shown in the first post about making up data. <img src='http://www.dagira.com/wp-includes/images/smilies/icon_cool.gif' alt='8-)' class='wp-smiley' /> </p>
<h3>Conclusion</h3>
<p>So far I have shown two different techniques that can be used to &#8220;make up&#8221; data for a report: personal data and universe data. Which is better? As with many questions the answer is &#8220;It depends.&#8221; <img src='http://www.dagira.com/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' />  Personal data has an advantage in that it can be built on the fly by a report user and does not require any universe maintenance. Universe data has an advantage in that the extra objects are reusable and are available to anyone. With proper training users can build queries that can include extra data that does not exist in the database. </p>
<p>Personal data requires me to know how to merge the results. With universe data the merge step (as long as I use the same objects) is performed automatically.</p>
<p>In this post I also showed two different techniques for getting the &#8220;filler data&#8221; into my report. With personal data I have to create two data providers and merge the results. With universe objects I have the option of creating a single data provider using a Union technique and my placeholder object.</p>
<p>The placeholder measure object that I created is not limited to this particular report. I can use (and reuse) it for any other report with similar requirements. Since the object is not tied to the calendar (or any other dimension) I can use it anywhere. It can be used to merge data providers or in a union query. I can create similar &#8220;dummy&#8221; objects for dates or text fields as needed. Ultimately I can decide if I want these special objects to be visible to all users or to a selected subset of &#8220;power user&#8221; report writers using the standard security process.</p>
<h3>Next Time</h3>
<p>For Part III of this post I am going to create a more complex example where data might be missing from more than one dimension (instead of just month as I have used in the last two posts.) I am also going to show cross tab and a section output because each of those can cause some interesting challenges as well. Maybe I&#8217;ll even do a sectioned cross tab. <img src='http://www.dagira.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Related Posts</strong></p>
<ul>
<li><a href="http://www.dagira.com/2009/11/09/making-up-data-part-i-personal-data-providers/">Making Up Data Part I: Personal Data Providers</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dagira.com/2009/12/05/making-up-data-part-ii-using-universe-data/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Making Up Data Part I: Personal Data Providers</title>
		<link>http://www.dagira.com/2009/11/09/making-up-data-part-i-personal-data-providers/</link>
		<comments>http://www.dagira.com/2009/11/09/making-up-data-part-i-personal-data-providers/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 07:18:06 +0000</pubDate>
		<dc:creator>Dave Rathbun</dc:creator>
				<category><![CDATA[Full Client]]></category>
		<category><![CDATA[Multiple Data Providers]]></category>
		<category><![CDATA[Report Techniques]]></category>
		<category><![CDATA[Web Intelligence]]></category>

		<guid isPermaLink="false">http://www.dagira.com/?p=219</guid>
		<description><![CDATA[Reporting tools are designed to report. Seems simple, doesn&#8217;t it? But sometimes they need to do more in order to meet the requirements. For example, a frequent question on BOB (in fact it&#8217;s in the Reporter FAQ) goes like this:
I have only six months of data, but I have to show all twelve months in [...]]]></description>
			<content:encoded><![CDATA[<p>Reporting tools are designed to report. Seems simple, doesn&#8217;t it? But sometimes they need to do more in order to meet the requirements. For example, a frequent question on <a href="http://busobj.forumtopics.com">BOB</a> (in fact it&#8217;s in the Reporter FAQ) goes like this:</p>
<blockquote><p>I have only six months of data, but I have to show all twelve months in my report. How can I show the missing data?</p></blockquote>
<p>The trick is to understand that Business Objects does not make up data. It just doesn&#8217;t have that capability. And you can&#8217;t edit the report directly in order to add those extra values to the result set. However, there are a couple of tricks that I can share that will help solve this issue. <span id="more-219"></span></p>
<p><strong>Special Note to Blog Readers:</strong> This post is fairly long because it has quite a few screen shots to illustrate the process. As a result it will be presented in several pages. When you get to the bottom of a page just click on the next page number from the links provided to continue reading the post. Since this is the first time I have used this feature I thought I would warn you about that. <img src='http://www.dagira.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Now on with the solution.</p>
<h3>Using Personal Data</h3>
<p>One of the easiest ways to make up data for a report is to use a personal data provider. This technique can be used in all versions of Desktop Intelligence and also in the newer &#8220;rich client&#8221; version of Web Intelligence. While the specific steps are unique to each tool the general concept is the same, so I will only show how to do this using the rich client. <em>Screen shots for this blog post were taken from version 3.0 of the Web Intelligence Rich Client.</em></p>
<p>The first step is to determine what is missing and therefore what you need to make up as filler information. It&#8217;s also important to know that the format of your personal data has to match what is coming from your enterprise data source or the data won&#8217;t merge properly. For this scenario I will show some data coming from the eFashion database. I am going to restrict the data to months that include an &#8220;e&#8221; in their name, just to make sure that I have holes in my data. If you&#8217;re wondering, that includes February, June, September, October, November, and December. Why did I pick that? No reason, really, just thought it would be fun. <img src='http://www.dagira.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>After applying that condition (along with another to restrict to one specific year) I see the following data on my report.</p>
<p><img src="/tips/personal_data_merge/raw_data.jpg" /></p>
<p>In the eFashion universe the <strong>Month</strong> is a dimension object and is a numeric value. The <strong>Month Name</strong> is a character string containing the month name spelled out (October rather than just Oct) and is configured as a detail object. This is important. When I want to merge two different data providers together I have to perform that process (the merge or link step) using only dimension objects. I cannot use detail objects. That means my personal data provider will have to include the month number as a dimension, and it should also include the month name as a detail.</p>
<p>After building up this query I have six months of data, as described in my original scenario. To meet the report requirements I have to show all twelve months, including those that don&#8217;t have sales that meet my current criteria. How can I make this happen?</p>
<h3>Making Up Data</h3>
<p>I am going to use a spreadsheet to make up my data, but I could just as easily use a delimited text or CSV file created with any text editor. The trick is that I have to structure my personal data so that it matches what I already have from the universe. To solve the scenario I am currently working on that means that I need the month number <strong>and</strong> the month name in my personal data. Here&#8217;s how that looked when I was done.</p>
<p><img src="/tips/personal_data_merge/raw_data_xls.jpg" /></p>
<p>I saved this data on my computer as a standard spreadsheet file. I could also have used a comma separated values (CSV) or other structured text file just as easily. The next step is to import this data into my document.</p>
<h3>Adding Personal Data</h3>
<p>In order to add personal data to my document I open the query panel, right click on the current query tab, and select the option to add a new data provider. After I do that I see this dialog box.</p>
<p><img src="/tips/personal_data_merge/add_new_data.jpg" /></p>
<p>After making sure I select &#8220;Local data source&#8221; I move on to the next step, which is to browse my computer and find the spreadsheet file I saved earlier. Once I find the file I am presented with a few configuration options as shown here.</p>
<p><img src="/tips/personal_data_merge/new_personal_config.jpg" /></p>
<p>The filename is there, of course. Since I am using a spreadsheet I can pick which sheet from the workbook contains my data. I can also determine whether to use a named range, to enter the range myself, or to let the client try to figure out where all of the data is for me. For this simple case I mark &#8220;All fields&#8221; and let the client do just that. Finally, I confirm that the box for &#8220;First row contains column names&#8221; is checked and click the Next button. Here is what I see at this point in the process.</p>
<p><img src="/tips/personal_data_merge/new_data_objects.jpg" /></p>
<p>There are a couple of problems with this result. The client is trying to be helpful, but it&#8217;s making the wrong decisions for me. <img src='http://www.dagira.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  The Month column contained all numeric values so it was imported as a measure. The Month Name contained character data so it was imported as a dimension. Both of these assumptions are wrong. I need the month number to be a dimension so I can link it to the value I already have, and I need the name to be a detail in order to match the existing structure on the report. Fortunately, since this is my own personal data, I am allowed to make changes to the configuration.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dagira.com/2009/11/09/making-up-data-part-i-personal-data-providers/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
	</channel>
</rss>

