<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.adatis.co.uk/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Adatis BI Blogs</title><link>http://blogs.adatis.co.uk/blogs/</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><item><title>Debug Custom MDS Workflows</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2013/05/20/debug-custom-mds-workflows.aspx</link><pubDate>Mon, 20 May 2013 14:19:04 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:13437</guid><dc:creator>Jeremy Kashel</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The custom MDS workflows, AKA External Action Business Rules or custom MDS assemblies, are one of the more advanced features of MDS. They allow you to extend the standard MDS business rules by getting MDS to fire Entity Member member data at an external assembly of your choice.&lt;/p&gt;  &lt;p&gt;There are a lot of moving parts to this feature, MDS business rules, the custom .Net assembly, service broker and a windows service! When a business rule meets your condition, then the rule is written to a service broker queue. The windows service interrogates the queue and then passes the information to the custom assembly. I’m not going to show how to do this, this is already done by &lt;a href="http://johanmachielse.blogspot.co.uk/2011/07/master-data-services-implementing.html" target="_blank"&gt;Johan Machielse&lt;/a&gt; and also on &lt;a href="http://msdn.microsoft.com/en-gb/library/hh270298.aspx" target="_blank"&gt;MSDN&lt;/a&gt;. What I would like to show is how to debug the use of the custom business rules, just due to the number of moving parts and also a couple of quirks that I’ve encountered when using them.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Custom Assembly Deployment&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;One of the first things that may catch you out is the deployment of the assembly. To troubleshoot this, I recommend the&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; “-console” argument of the workflow service. If you run it in command line mode you may encounter a few errors:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“Could not load file or assembly &amp;#39;YourAssembly&amp;#39; or one of its dependencies. This assembly is built by a runtime newer than      &lt;br /&gt;the currently loaded runtime and cannot be loaded.”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;This means that you need to go the properties of your assembly in Visual Studio and change the Target Framework from .NET Framework 4 to 3.5.&lt;/p&gt;  &lt;p&gt;Another error that you may get is &amp;quot;&lt;em&gt;ERROR: Could not create type. Ignored.”&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;/em&gt;Assuming that you have actually put the assembly in the bin directory, this is most likely to be that the either the namespace or the class name in your DLL doesn’t match what you have in your config file. Check the contents of Microsoft.MasterDataServices.Workflow.exe.config match your DLL.&lt;/p&gt;  &lt;p&gt;You may also get, “&lt;em&gt;ERROR: Type does not implement IWorkflowTypeExtender.&lt;/em&gt;” This means that your assembly has been picked up correctly, but it does not implement IWorkflowTypeExtender.&lt;/p&gt;  &lt;p&gt;If the assembly does start up ok without errors, you may still get errors when the exe tries to take a message off the service broker queue. An error such as &lt;em&gt;“Could not dispatch due to missing extender &amp;lt;tag&amp;gt;”&lt;/em&gt; means that the tag that you’ve given to the assembly in the config file does not match the “Workflow Type” value of the MDS business rule:&lt;/p&gt;  &lt;p&gt;   &lt;pre class="code"&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;setting &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;WorkflowTypeExtenders&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;serializeAs&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;String&lt;/span&gt;&amp;quot;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;value&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;font style="background-color:#ffff00;"&gt;MDSTEST&lt;/font&gt;=MDS.CustomWorkflow, CustomWorkflow&lt;strong&gt;&lt;span&gt;&amp;lt;/value&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;setting&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/pre&gt;

  &lt;pre class="code"&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_189D954D.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_0D740B03.png" width="244" height="97" /&gt;&lt;/a&gt;&lt;/pre&gt;
  &lt;strong&gt;Debugging the Custom Assembly&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once you do get the assembly working, you may find that the code isn’t quite doing what you want. A good way to troubleshoot this is to choose “Attach To Process” from the Debug menu in Visual Studio, as shown below:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image3_266FDB48.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image3_thumb_545D2E00.png" width="409" height="278" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you do this, then you can add breakpoints to your .Net code as normal and step through in order to troubleshoot issues.&lt;/p&gt;

&lt;p&gt;To conclude, this probably isn’t an exhaustive list of all the sort of errors that could occur with custom workflows, but with any luck it will save someone a few hours of troubleshooting.&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=13437" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/MDM/default.aspx">MDM</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Master+Data+Services/default.aspx">Master Data Services</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/MDS/default.aspx">MDS</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Master+Data+Management/default.aspx">Master Data Management</category></item><item><title>Maintaining Table Width with Hidden Columns in SSRS</title><link>http://blogs.adatis.co.uk/blogs/harding/archive/2013/05/15/maintaining-table-width-with-hidden-columns-in-ssrs.aspx</link><pubDate>Wed, 15 May 2013 15:32:23 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:13286</guid><dc:creator>jonathan harding</dc:creator><slash:comments>1</slash:comments><description>Sometimes when using SSRS to create documents such as invoices, it is necessary to include columns in a table which may or may not be shown.&amp;#160; Often with these documents layout is very important, and having a table changing width as columns are shown or hidden is unacceptable.&amp;#160; It is not possible in SSRS to give a table a fixed width, but we can use another method to simulate this without having to dig into the RDL file. We’ll make a report that contains a table made up of 5 columns: Product...(&lt;a href="http://blogs.adatis.co.uk/blogs/harding/archive/2013/05/15/maintaining-table-width-with-hidden-columns-in-ssrs.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=13286" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/harding/archive/tags/SSRS/default.aspx">SSRS</category></item><item><title>Friday Fun:  GeoFlow does the Great South Run</title><link>http://blogs.adatis.co.uk/blogs/sachatomey/archive/2013/04/12/friday-fun-geoflow-does-the-great-south-run.aspx</link><pubDate>Fri, 12 Apr 2013 08:08:00 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:12929</guid><dc:creator>sachatomey</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://research.microsoft.com/en-us/news/features/geoflow_data_viz-041113.aspx"&gt;GeoFlow&lt;/a&gt; was released to public preview yesterday; a new 3D visualization tool for Excel which allow users to create, navigate and interact with time-sensitive data applied to a digital map.&lt;/p&gt;

&lt;p&gt;Back in October last year, along with 25,000 other people, my good friend and colleague Tim Kent (&lt;a title="Tim Kent" href="https://twitter.com/timk_adatis" target="_blank"&gt;@TimK_Adatis&lt;/a&gt;)&amp;nbsp;and I ran the Great South Run; a 10 mile run around the &lt;a href="http://en.wikipedia.org/wiki/Portsmouth" target="_blank"&gt;City of Portsmouth&lt;/a&gt; on the south coast of England.&amp;nbsp; As it happened, we&amp;nbsp;both wore GPS watches and using the data collected I&amp;#39;ve created a&amp;nbsp;simple GeoFlow tour of the race.&lt;/p&gt;

&lt;p&gt;Tim is Green - I am Red - who wins...&amp;nbsp; there&amp;#39;s only one way to find out ......&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.youtube.com/v/2MmHF1gEGOw&amp;amp;autoplay=1" target="_blank"&gt;&lt;img width="800" height="404" align="middle" style="width:640px;height:324px;" src="http://blogs.adatis.co.uk/blogs/sachatomey/PMouth.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.youtube.com/v/2MmHF1gEGOw&amp;amp;autoplay=1"&gt;Run Race&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=12929" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/sachatomey/archive/tags/Business+Intelligence/default.aspx">Business Intelligence</category><category domain="http://blogs.adatis.co.uk/blogs/sachatomey/archive/tags/Excel/default.aspx">Excel</category><category domain="http://blogs.adatis.co.uk/blogs/sachatomey/archive/tags/GeoFlow/default.aspx">GeoFlow</category></item><item><title>SSAS Tabular, PowerPivot and conformed snowflakes</title><link>http://blogs.adatis.co.uk/blogs/calvinferns/archive/2013/03/19/ssas-tabular-powerpivot-and-conformed-snowflakes.aspx</link><pubDate>Tue, 19 Mar 2013 22:38:25 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:12267</guid><dc:creator>Calvin Ferns</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Many of you will be aware of the Kimball concept of conformed dimensions.&amp;#160; This is the principle of joining multiple fact tables, often from multiple source systems, into the same dimension table.&amp;#160; Using this shared dimension the many fact tables can be analysed by the single view of the dimensional data and deliver powerful cross dataset analysis.&amp;#160; &lt;/p&gt;  &lt;p&gt;In many cases the granularity of the differing source systems is different, a typical example of this is shown in the Adventureworks where sales data is gathered against an individual product but survey data is gathered against Product Category and SubCategory.&amp;#160; In order to facilitate easy key generation and lookups the Product Category and SubCategory are then separated from the main product table, this is described as a Snowflake design pattern as shown below.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/calvinferns/image_0BCD4017.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/calvinferns/image_thumb_43FB9162.png" width="744" height="226" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The first SSAS Tabular consideration here is that if you need to join in at a less granular level than the primary dimension table is is essential to present a snowflake to SSAS tabular, it cannot join in at a higher grain like SSAS Multidimensional can.&amp;#160; This is due to its need for a distinct list on the dimension side of the join key.&amp;#160; &lt;/p&gt;  &lt;p&gt;The relationships in SSAS Tabular or Powerpivot can then be set up as shown below to join other data in at a higher grain such as the FactSurveyResponse below&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/calvinferns/image_6265D24B.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/calvinferns/image_thumb_57E4FE2B.png" width="634" height="340" /&gt;&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;The next step is to browse this data and check that we can indeed view all our data by Product SubCategory, using the ‘Analyze in Excel’ button we can browse the development cube and set up the pivot table below.&amp;#160; Allowing the slicing of disparate data by common dimensions in this fashion is one of the biggest business benefits of data warehousing.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/calvinferns/image_0B40C188.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/calvinferns/image_thumb_313671DE.png" width="336" height="339" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The solution thus far works but, in Excel and other add hoc tools, the three product tables and large number of attributes are confusing to the end user.&amp;#160; As such we should look at hiding unused and unwanted columns and using the tabular cube to denormalise or ‘flatten’ the options presented to the business user.&amp;#160; Unwanted columns are removed by using the hide from client tools options or removing unwanted columns from the cube all together (ideally using SQL Views).&amp;#160; To reduce the number of tables presented to the user we will hide DimProductCategory and DimProductSubCategory entirely from the user while adding derived columns holding this information to DimProduct.&amp;#160; To achieve this we use the RELATED keyword in DAX to add a few new columns.&amp;#160; Adding a ProductSubCategory Column to DimProduct we use the following expression:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;=RELATED(DimProductSubcategory[EnglishProductSubcategoryName])&lt;/strong&gt;&lt;/p&gt;        &lt;p&gt;Once the above column is available, refreshing the Pivot table used earlier with the new column gives in the following result:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/calvinferns/image_21B3600F.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/calvinferns/image_thumb_206EC730.png" width="242" height="393" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This incorrect result is the impact of the fact that relationships are only propagated towards the fact table automatically in Tabular and Powerpivot.&amp;#160; We need to explicitly specify that the measure we are using relates to the DimProduct table through ProductSubCategory and the context of this table needs to be used.&amp;#160; To do this we need to alter our measure calculation to take into account the related table DimProduct, unsurprisingly&amp;#160; this is achieved with the RELATEDTABLE function.&amp;#160; We use the CALCULATE function in combination to aggregate our data as appropriate.&amp;#160; The measure DAX formula can then be defined as follows:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;=CALCULATE(     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DISTINCTCOUNT([CustomerKey]),      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font style="background-color:#ffff00;"&gt;RELATEDTABLE(DimProduct)       &lt;br /&gt;&lt;/font&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,VALUES(DimDate),      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; VALUES(DimCustomer)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; )&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A values statement is needed to allow the current filter context to be used for all other dimensions on the fact, this doesn’t seem very elegant and I am open to a better way of doing it. The measure as defined above can then be used in excel to give the same result as we first achieved while giving a much cleaner user interface with a single product table for users to find all their information. &lt;/p&gt;  &lt;p&gt;Any question or improvements get in touch here or @CalvinFerns&lt;/p&gt;  &lt;p&gt;Thanks for reading&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;   &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b2f6af2d-3bee-40e9-891a-8b963eb8d9ea" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SSAS" rel="tag"&gt;SSAS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Tabular" rel="tag"&gt;Tabular&lt;/a&gt;,&lt;a href="http://technorati.com/tags/PowerPivot" rel="tag"&gt;PowerPivot&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Snowflake" rel="tag"&gt;Snowflake&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Kimball" rel="tag"&gt;Kimball&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Comformed" rel="tag"&gt;Comformed&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Dimensions" rel="tag"&gt;Dimensions&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Granularity" rel="tag"&gt;Granularity&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=12267" width="1" height="1"&gt;</description></item><item><title>Different Methods Of Type 2 Dimension Population</title><link>http://blogs.adatis.co.uk/blogs/jeoc/archive/2013/02/28/different-methods-of-type-2-dimension-population.aspx</link><pubDate>Thu, 28 Feb 2013 17:18:00 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:11581</guid><dc:creator>JEOC</dc:creator><slash:comments>1</slash:comments><description>&lt;p class="MsoNormal"&gt;This post is to share some of my findings about the different ways of dealing with Type&amp;nbsp;2 changes in SSIS environment. I wanted to provide comparison of the methods in terms of performance, reusability and ease of maintenance.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;For the purposes of the testing let’s take the scenario where a client would like to implement historical tracking in their DW environment for one of their dimensions, lets say that they have given the following requirements:-&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;The ordered online flag should be replaced with a more user friendly text field containing ‘Yes’ or ‘No (done in a derived column transformation/SQL case statement). &lt;br /&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal"&gt;The client would like to track any changes to the Purchase Order Number, Customer Account Number or Carrier Tracking Number so that they can preserve the history of these changes. These will be setup as Type 2 changing attributes and we will need to record the time that each change was induced. &lt;br /&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal"&gt;Any changes to the &lt;em&gt;OrderedOnline&lt;/em&gt; field will be as the result of corrections made to the source data and historic tracking of changes will not be required for this in the DW and all rows should be updated with the new value (a Type 1 change). &lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;I created the following table to hold the data:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="color:blue;font-family:consolas;font-size:9.5pt;"&gt;&lt;font size="1"&gt;CREATE&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;font size="1"&gt; &lt;span style="color:blue;"&gt;TABLE&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;DimOrder &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="1"&gt;&lt;span style="color:gray;font-family:consolas;font-size:9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;/span&gt;&lt;span style="color:teal;font-family:consolas;font-size:9.5pt;"&gt;Order_Key&lt;/span&gt;&lt;/font&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;font size="1"&gt; &lt;span style="color:blue;"&gt;INT&lt;/span&gt; &lt;span style="color:blue;"&gt;IDENTITY&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;1&lt;span style="color:gray;"&gt;,&lt;/span&gt;1&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;PRIMARY&lt;/span&gt; &lt;span style="color:blue;"&gt;KEY&lt;/span&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;NULL&lt;/span&gt; &lt;/font&gt;&lt;span style="color:green;"&gt;&lt;font size="1"&gt;--Surrogate Key &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;font size="1"&gt;&lt;span style="color:gray;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,&lt;/span&gt;&lt;span style="color:teal;"&gt;SalesOrderID&lt;/span&gt; &lt;span style="color:blue;"&gt;INT &lt;/span&gt;&lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;NULL&lt;/span&gt;&lt;span style="mso-tab-count:1;"&gt; &lt;/span&gt;&lt;span style="color:green;"&gt;--Source Key&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;LineNumber&lt;/span&gt; &lt;span style="color:blue;"&gt;TINYINT&lt;/span&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;NULL&lt;/span&gt; &lt;/font&gt;&lt;span style="color:green;"&gt;&lt;font size="1"&gt;--Source Key &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;font size="1"&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;OrderNumber&lt;/span&gt; &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;25&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;NULL&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;font size="1"&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;font size="1"&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;PurchaseOrderNumber&lt;/span&gt; &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;25&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;/font&gt;&lt;span style="color:gray;"&gt;&lt;font size="1"&gt;NULL &lt;br /&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;AccountNumber&lt;/span&gt; &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;15&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;/font&gt;&lt;span style="color:gray;"&gt;&lt;font size="1"&gt;NULL &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;font size="1"&gt;&lt;span style="color:gray;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,&lt;/span&gt;&lt;span style="color:teal;"&gt;CarrierTrackingNumber&lt;/span&gt; &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt; (&lt;/span&gt;25&lt;/font&gt;&lt;span style="color:gray;"&gt;&lt;font size="1"&gt;) &lt;br /&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;OrderedOnline&lt;/span&gt; &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt; (&lt;/span&gt;3&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;/font&gt;&lt;span style="color:gray;"&gt;&lt;font size="1"&gt;NULL &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;font size="1"&gt;&lt;span style="color:gray;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,&lt;/span&gt;&lt;span style="color:teal;"&gt;RecordValidFromDate&lt;/span&gt; &lt;span style="color:blue;"&gt;DATETIME&lt;/span&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;/font&gt;&lt;span style="color:gray;"&gt;&lt;font size="1"&gt;NULL &lt;br /&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;RecordExpiredDate&lt;/span&gt; &lt;/font&gt;&lt;span style="color:blue;"&gt;&lt;font size="1"&gt;DATETIME &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:gray;font-family:consolas;font-size:9.5pt;"&gt;&lt;font size="1"&gt;)&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="MsoNormal"&gt;The three methods I have selected are:-&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div class="MsoNormal"&gt;The SSIS inbuilt Slowly Changing Dimension (SCD) Task.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font-size-adjust:none;font-stretch:normal;"&gt;A &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;custom built SSIS package to perform the Type 2 changes.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;span style="font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Using a T-SQL Procedure to perform the dimension population.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;In each of the comparisons I have performed the following tests:-&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div class="MsoNormal"&gt;An initial load of data (all of the records are new are there are no changes.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal"&gt;A load of the same data from Step 1 (no changes all records exist)&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal"&gt;A load of data which contains both Type 1 and Type 2 changes&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p class="MsoNormal"&gt;I used Adventure Works as a source and Step 1 &amp;amp; 2 both use the same source statement which looks like this:&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt; &lt;br /&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#008080"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OrdHed.SalesOrderID &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,SalesOrderDetailID &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,OnlineOrderFlag &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,SalesOrderNumber &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,PurchaseOrderNumber &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,AccountNumber &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,CarrierTrackingNumber&lt;/font&gt; &lt;br /&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt; &lt;/font&gt;&lt;font color="#008080" size="1"&gt;Sales.SalesOrderHeader OrdHed &lt;br /&gt;&lt;font color="#808080"&gt;INNER JOIN&lt;/font&gt; Sales.SalesOrderDetail OrdDet &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;ON&lt;/font&gt; Ordhed.SalesOrderID = Orddet.SalesOrderID&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;For the third test I created some copies of the source tables and then ran some basic statements on them to change the format of the data as below:&lt;/p&gt;
&lt;p&gt;&lt;font color="#008080"&gt;&lt;font size="1"&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt; * INTO [Sales].SalesOrderDetailTest &lt;font color="#0000ff"&gt;FROM&lt;/font&gt; [Sales].SalesOrderDetail &lt;br /&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt; * INTO [Sales].SalesOrderHeaderTest &lt;font color="#0000ff"&gt;FROM&lt;/font&gt; [Sales].SalesOrderHeader &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#008080" size="1"&gt;&lt;font color="#008000"&gt;--this will only exhibit Type 1 changes&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#008080"&gt;&lt;font size="1"&gt;&lt;font color="#0000ff"&gt;UPDATE&lt;/font&gt; Sales.SalesOrderHeaderTest &lt;br /&gt;&lt;font color="#0000ff"&gt;SET&lt;/font&gt; OnlineOrderFlag = Case when&amp;nbsp; OnlineOrderFlag = 1 &lt;font color="#0000ff"&gt;THEN&lt;/font&gt; 0 &lt;font color="#0000ff"&gt;ELSE&lt;/font&gt; 1 &lt;font color="#0000ff"&gt;END&lt;/font&gt; &lt;br /&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt; salesOrderID &lt;font color="#808080"&gt;BETWEEN &lt;/font&gt;59392 &lt;font color="#808080"&gt;AND&lt;/font&gt; 67257 &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#008080" size="1"&gt;&lt;font color="#008000"&gt;--this will exhibit only a Type 2 change&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#008080"&gt;&lt;font size="1"&gt;&lt;font color="#0000ff"&gt;UPDATE&lt;/font&gt; Sales.SalesOrderHeaderTest &lt;br /&gt;&lt;font color="#0000ff"&gt;SET&lt;/font&gt; PurchaseOrderNumber = &lt;font color="#ff0000"&gt;&amp;#39;X&amp;#39;&lt;/font&gt; + PurchaseOrderNumber &lt;br /&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt; salesOrderID &amp;lt; 51525 &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#008000" size="1"&gt;--this does a mix of both.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#008080"&gt;&lt;font size="1"&gt;&lt;font color="#0000ff"&gt;UPDATE&lt;/font&gt; Sales.SalesOrderHeaderTest &lt;br /&gt;&lt;font color="#0000ff"&gt;SET&lt;/font&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PurchaseOrderNumber &lt;font color="#808080"&gt;=&lt;/font&gt; &lt;font color="#ff0000"&gt;&amp;#39;X&amp;#39; &lt;/font&gt;&lt;font color="#808080"&gt;+&lt;/font&gt; PurchaseOrderNumber &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,OnlineOrderFlag = &lt;font color="#0000ff"&gt;CASE WHEN&lt;/font&gt;&amp;nbsp; OnlineOrderFlag &lt;font color="#808080"&gt;=&lt;/font&gt; 1 &lt;font color="#0000ff"&gt;THEN&lt;/font&gt; 0 &lt;font color="#0000ff"&gt;ELSE&lt;/font&gt; 1 &lt;font color="#0000ff"&gt;END&lt;/font&gt; &lt;br /&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt; salesOrderID &lt;font color="#808080"&gt;BETWEEN &lt;/font&gt;51524 &lt;font color="#808080"&gt;AND&lt;/font&gt; 59391&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;The data is then sourced from the new tables which provide the changes for testing. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;font size="2"&gt;1. SSIS Slowly Changing Dimension Task&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Configuration of the package is very straightforward; you add a data source, drag on a slowly changing Dimension task to the data flow and double click it to configure how you want it to run. The whole process takes less than 10 minutes to complete and there are many options that should suit a variety of needs.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeoc/scd2_42402C02.png"&gt;&lt;img width="486" height="402" title="scd2" style="border-width:0px;margin-right:auto;margin-left:auto;float:none;display:block;" alt="scd2" src="http://blogs.adatis.co.uk/blogs/jeoc/scd2_thumb_3B20EF8A.png" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeoc/scd3_516B7874.png"&gt;&lt;img width="492" height="411" title="scd3" style="border-width:0px;margin-right:auto;margin-left:auto;float:none;display:block;" alt="scd3" src="http://blogs.adatis.co.uk/blogs/jeoc/scd3_thumb_5575C646.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once the configuration is completed we end up with a dataflow which looks like this: &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;font size="2"&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeoc/scdDataflow_201C742E.png"&gt;&lt;img width="550" height="597" title="scdDataflow" style="border-width:0px;margin-right:auto;margin-left:auto;float:none;display:block;" alt="scdDataflow" src="http://blogs.adatis.co.uk/blogs/jeoc/scdDataflow_thumb_6705972B.png" border="0" /&gt;&lt;/a&gt; &lt;br /&gt;2. Custom Built SSIS Package&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Next I designed a package in SSIS but without using the SCD wizard. I used the following principles during design to try and improve performance:&lt;/p&gt;
&lt;p&gt;1. Changes can be detected in the data flow by using simple lookup transformations (we could consider hash checking to improve performance if there were very many columns) to see if there is any change to the data, by using several lookups with we can determine if the change is Type 1, 2 or both.&lt;/p&gt;
&lt;p&gt;2. Updates in the data flow are performed in SSIS using the ‘OLE DB Command’ task. As this works on a row-by-row basis this has a large impact on performance. To avoid this I created tables to hold the Type 1 and Type 2 changes and then used an ‘Execute SQL task’ in the control flow to make the updates in one go.&lt;/p&gt;
&lt;p&gt;The completed dataflow looks like this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeoc/scdCustomDataflow_4CD40A03.png"&gt;&lt;img width="725" height="371" title="scdCustomDataflow" align="left" style="border-width:0px;margin-right:0px;margin-left:0px;display:inline;" alt="scdCustomDataflow" src="http://blogs.adatis.co.uk/blogs/jeoc/scdCustomDataflow_thumb_7ECBAA8D.png" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;New records go straight into the target tables and the ones which have changes are split using a multicast, where a change has occurred the records are inserted into holding tables and then processed in the control flow.&lt;/p&gt;
&lt;p align="left"&gt;The control flow looks like this: &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeoc/clip_image004_31501E05.jpg"&gt;&lt;img width="693" height="403" title="clip_image004" align="left" style="border-width:0px;margin-right:0px;margin-left:0px;display:inline;" alt="clip_image004" src="http://blogs.adatis.co.uk/blogs/jeoc/clip_image004_thumb_4A4BEE4A.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;The control flow executes the statements below:&lt;/p&gt;
&lt;p&gt;&lt;font color="#008000"&gt;--Make Type 1 changes&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;font color="#0000ff"&gt;UPDATE&lt;/font&gt; TGT &lt;br /&gt;&lt;font color="#0000ff"&gt;SET&lt;/font&gt; TGT.OrderedOnline = SRC.OrderedOnline &lt;br /&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt; DimOrder TGT &lt;br /&gt;&lt;font color="#808080"&gt;INNER JOIN&lt;/font&gt; DimOrderType1 SRC &lt;br /&gt;&lt;font color="#808080"&gt;ON&lt;/font&gt; TGT.SalesOrderID = SRC.SalesOrderID &lt;br /&gt;&lt;font color="#808080"&gt;AND&lt;/font&gt; TGT.LineNumber = SRC.LineNumber;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#008000" size="1"&gt;--Type 2 expire old rows&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;font color="#0000ff"&gt;UPDATE&lt;/font&gt; TGT &lt;br /&gt;&lt;font color="#0000ff"&gt;SET&lt;/font&gt; &lt;font color="#008080"&gt;TGT.RecordExpiredDate &lt;font color="#808080"&gt;=&lt;/font&gt; SRC.TransactionDate&lt;/font&gt; &lt;br /&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt; &lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#008080"&gt;DimOrder TGT &lt;br /&gt;&lt;/font&gt;&lt;font color="#808080"&gt;INNER JOIN&lt;/font&gt; &lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#008080"&gt;DimOrderType2 SRC &lt;br /&gt;&lt;/font&gt;&lt;font color="#808080"&gt;ON&lt;/font&gt; &lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#008080"&gt;TGT.SalesOrderID &lt;font color="#808080"&gt;=&lt;/font&gt; SRC.SalesOrderID &lt;br /&gt;&lt;/font&gt;&lt;font color="#808080"&gt;AND&lt;/font&gt; &lt;/font&gt;&lt;font color="#008080"&gt;&lt;font size="1"&gt;TGT.LineNumber &lt;font color="#808080"&gt;= &lt;/font&gt;SRC.LineNumber;&lt;/font&gt; &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#008000"&gt;--Type 2 insert new records&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;font color="#0000ff"&gt;INSERT INTO&lt;/font&gt; &lt;/font&gt;&lt;font size="1"&gt;&lt;font color="#008080"&gt;DimOrder(SalesOrderID,LineNumber,OrderNumber,PurchaseOrderNumber,AccountNumber &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,CarrierTrackingNumber,OrderedOnline,RecordValidFromDate) &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt; &lt;br /&gt;&lt;/font&gt;&lt;font color="#008080" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SalesOrderID &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,LineNumber &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,OrderNumber &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,PurchaseOrderNumber &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,AccountNumber &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,CarrierTrackingNumber &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,OrderedOnline &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,TransactionDate &lt;font color="#0000ff"&gt;AS&lt;/font&gt; RecordValidFromDate &lt;br /&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt; DimOrderType2; &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;strong&gt;&lt;u&gt;&lt;font size="2"&gt;3. T-SQL Script&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I also thought I would try a basic SQL script to see how this performed.&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="color:blue;font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;CREATE&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt; &lt;span style="color:blue;"&gt;PROC&lt;/span&gt; &lt;span style="color:teal;"&gt;popDimOrder&lt;/span&gt; &lt;span style="color:blue;"&gt;AS&lt;/span&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="color:blue;font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;BEGIN&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;CREATE&lt;/span&gt; &lt;span style="color:blue;"&gt;TABLE&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;#OrderData &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:gray;font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;( &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:teal;"&gt;SalesOrderID&lt;/span&gt; &lt;span style="color:blue;"&gt;INT&lt;/span&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;/font&gt;&lt;span style="color:gray;"&gt;&lt;font size="1"&gt;NULL &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;LineNumber&lt;/span&gt; &lt;span style="color:blue;"&gt;INT&lt;/span&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;/font&gt;&lt;span style="color:gray;"&gt;&lt;font size="1"&gt;NULL &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;OrderNumber&lt;/span&gt; &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;25&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;/font&gt;&lt;span style="color:gray;"&gt;&lt;font size="1"&gt;NULL &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;PurchaseOrderNumber&lt;/span&gt; &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;25&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;/font&gt;&lt;span style="color:gray;"&gt;&lt;font size="1"&gt;NULL &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;AccountNumber&lt;/span&gt; &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;15&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;/font&gt;&lt;span style="color:gray;"&gt;&lt;font size="1"&gt;NULL &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;CarrierTrackingNumber&lt;/span&gt; &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;25&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;/font&gt;&lt;span style="color:gray;"&gt;&lt;font size="1"&gt;NULL &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;OrderedOnline&lt;/span&gt; &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;3&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;/font&gt;&lt;span style="color:gray;"&gt;&lt;font size="1"&gt;NULL &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;RecordExists&lt;/span&gt; &lt;span style="color:blue;"&gt;smallINT&lt;/span&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;NULL&lt;/span&gt; &lt;span style="color:blue;"&gt;default&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;0&lt;/font&gt;&lt;span style="color:gray;"&gt;&lt;font size="1"&gt;) &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;DECLARE&lt;/span&gt; &lt;span style="color:teal;"&gt;@TransactionDate&lt;/span&gt; &lt;span style="color:blue;"&gt;Datetime&lt;/span&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; &lt;span style="color:teal;"&gt;@TransactionDate&lt;/span&gt; &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:fuchsia;"&gt;GETDATE&lt;/span&gt;&lt;/font&gt;&lt;span style="color:gray;"&gt;&lt;font size="1"&gt;() &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt 36pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="color:blue;font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;INSERT&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt; &lt;span style="color:blue;"&gt;INTO&lt;/span&gt; &lt;span style="color:teal;"&gt;#OrderData&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:teal;"&gt;SalesOrderID&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;span style="color:teal;"&gt;LineNumber&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;span style="color:teal;"&gt;OrderNumber&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;span style="color:teal;"&gt;PurchaseOrderNumber&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;span style="color:teal;"&gt;AccountNumber&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color:teal;"&gt;[CarrierTrackingNumber]&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;span style="color:teal;"&gt;[OrderedOnline]&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color:teal;"&gt;RecordExists &lt;br /&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;font size="1"&gt;SELECT &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:teal;"&gt;OrdHed&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;SalesOrderID &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;SalesOrderDetailID&lt;/span&gt; &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;LineNumber &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;SalesOrderNumber&lt;/span&gt; &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;OrderNumber &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;ISNULL&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:teal;"&gt;PurchaseOrderNumber&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;PurchaseOrderNumber &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;AccountNumber &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:fuchsia;"&gt;ISNULL&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:teal;"&gt;CarrierTrackingNumber&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;CarrierTrackingNumber &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:blue;"&gt;CASE&lt;/span&gt; &lt;span style="color:teal;"&gt;OnlineOrderFlag&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;WHEN&lt;/span&gt; 0 &lt;span style="color:blue;"&gt;THEN&lt;/span&gt; &lt;/font&gt;&lt;span style="color:red;"&gt;&lt;font size="1"&gt;&amp;#39;No&amp;#39; &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;WHEN&lt;/span&gt; 1 &lt;span style="color:blue;"&gt;THEN&lt;/span&gt; &lt;/font&gt;&lt;span style="color:red;"&gt;&lt;font size="1"&gt;&amp;#39;Yes&amp;#39; &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;END&lt;/span&gt; &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;OrderedOnline &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;0 &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;RecordExists &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;FROM&lt;/span&gt; &lt;span style="color:teal;"&gt;[AdventureWorks2012]&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;Sales&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;SalesOrderHeaderTest&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;OrdHed &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;INNER&lt;/span&gt; &lt;span style="color:gray;"&gt;JOIN&lt;/span&gt; &lt;span style="color:teal;"&gt;[AdventureWorks2012]&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;Sales&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;SalesOrderDetailTest&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;OrdDet &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;ON&lt;/span&gt; &lt;span style="color:teal;"&gt;Ordhed&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;SalesOrderID&lt;/span&gt; &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:teal;"&gt;Orddet&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;SalesOrderID&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;--Check if records exist&lt;/span&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:fuchsia;"&gt;UPDATE&lt;/span&gt; &lt;span style="color:teal;"&gt;SRC&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; &lt;span style="color:teal;"&gt;RecordExists&lt;/span&gt; &lt;span style="color:gray;"&gt;=&lt;/span&gt; 1 &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;FROM&lt;/span&gt; &lt;span style="color:teal;"&gt;#OrderData&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;SRC &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;INNER&lt;/span&gt; &lt;span style="color:gray;"&gt;JOIN&lt;/span&gt; &lt;span style="color:teal;"&gt;POC&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;dbo&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;DimOrder&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;TGT &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;ON&lt;/span&gt; &lt;span style="color:teal;"&gt;TGT&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;SalesOrderID&lt;/span&gt; &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:teal;"&gt;SRC&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;SalesOrderID &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;AND&lt;/span&gt; &lt;span style="color:teal;"&gt;TGT&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;LineNumber&lt;/span&gt; &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:teal;"&gt;SRC&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;LineNumber&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;--Insert new records&lt;/span&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt 36pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="color:blue;font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;INSERT&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt; &lt;span style="color:blue;"&gt;INTO&lt;/span&gt;&amp;nbsp;&lt;span style="color:teal;"&gt;DimOrder&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:teal;"&gt;SalesOrderID&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;LineNumber&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;OrderNumber&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;PurchaseOrderNumber&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;AccountNumber&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;font size="1"&gt;&lt;span style="color:gray;font-size:8pt;mso-bidi-font-family:consolas;"&gt;,&lt;/span&gt;&lt;span style="color:teal;font-size:8pt;mso-bidi-font-family:consolas;"&gt;CarrierTrackingNumber&lt;/span&gt;&lt;span style="color:gray;font-size:8pt;mso-bidi-font-family:consolas;"&gt;,&lt;/span&gt;&lt;span style="color:teal;font-size:8pt;mso-bidi-font-family:consolas;"&gt;OrderedOnline&lt;/span&gt;&lt;span style="color:gray;font-size:8pt;mso-bidi-font-family:consolas;"&gt;,&lt;/span&gt;&lt;span style="color:teal;font-size:8pt;mso-bidi-font-family:consolas;"&gt;RecordValidFromDate&lt;/span&gt;&lt;span style="color:gray;font-size:8pt;mso-bidi-font-family:consolas;"&gt;,&lt;/span&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color:teal;font-size:8pt;mso-bidi-font-family:consolas;"&gt;RecordExpiredDate &lt;br /&gt;&lt;/span&gt;&lt;span style="color:gray;font-size:8pt;mso-bidi-font-family:consolas;"&gt;)&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;SalesOrderID &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;LineNumber &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;OrderNumber &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;PurchaseOrderNumber &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;AccountNumber &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;[CarrierTrackingNumber] &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;[OrderedOnline] &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;@TransactionDate&lt;/span&gt; &lt;span style="color:blue;"&gt;AS&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;RecordValidFromDate &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,null&lt;/span&gt; &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;RecordExpiredDate &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;font size="1"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;FROM&lt;/span&gt; &lt;span style="color:teal;"&gt;#OrderData&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;WHERE&lt;/span&gt; &lt;span style="color:teal;"&gt;RecordExists&lt;/span&gt; &lt;span style="color:gray;"&gt;=&lt;/span&gt; 0&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;DELETE&lt;/span&gt; &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; &lt;span style="color:teal;"&gt;#OrderData&lt;/span&gt; &lt;span style="color:blue;"&gt;WHERE&lt;/span&gt; &lt;span style="color:teal;"&gt;RecordExists&lt;/span&gt; &lt;span style="color:gray;"&gt;=&lt;/span&gt; 0 &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:green;"&gt;&lt;font size="1"&gt;--Make Type 1 changes &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:fuchsia;"&gt;UPDATE&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;TGT &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; &lt;span style="color:teal;"&gt;TGT&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;OrderedOnline&lt;/span&gt; &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:teal;"&gt;SRC&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;OrderedOnline &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;FROM&lt;/span&gt; &lt;span style="color:teal;"&gt;POC&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;dbo&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;DimOrder&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;TGT &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;INNER&lt;/span&gt; &lt;span style="color:gray;"&gt;JOIN&lt;/span&gt; &lt;span style="color:teal;"&gt;#OrderData&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;SRC &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;ON&lt;/span&gt; &lt;span style="color:teal;"&gt;TGT&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;SalesOrderID&lt;/span&gt; &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:teal;"&gt;SRC&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;SalesOrderID &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;AND&lt;/span&gt; &lt;span style="color:teal;"&gt;TGT&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;LineNumber&lt;/span&gt; &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:teal;"&gt;SRC&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;LineNumber&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;--Check for Type 2 changes&lt;/span&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:fuchsia;"&gt;UPDATE&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;SRC &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; &lt;span style="color:teal;"&gt;RecordExists&lt;/span&gt; &lt;span style="color:gray;"&gt;=&lt;/span&gt; 2 &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;FROM&lt;/span&gt; &lt;span style="color:teal;"&gt;#OrderData&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;SRC &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;INNER&lt;/span&gt; &lt;span style="color:gray;"&gt;JOIN&lt;/span&gt; &lt;span style="color:teal;"&gt;POC&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;dbo&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;DimOrder&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;TGT &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;ON&lt;/span&gt; &lt;span style="color:teal;"&gt;TGT&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;SalesOrderID&lt;/span&gt; &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:teal;"&gt;SRC&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;SalesOrderID &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;AND&lt;/span&gt; &lt;span style="color:teal;"&gt;TGT&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;LineNumber&lt;/span&gt; &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:teal;"&gt;SRC&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;LineNumber &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;WHERE&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:teal;"&gt;TGT&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;RecordExpiredDate&lt;/span&gt; &lt;span style="color:gray;"&gt;IS&lt;/span&gt; &lt;span style="color:gray;"&gt;NULL&lt;/span&gt;&lt;/font&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;AND(&lt;/span&gt;&lt;span style="color:teal;"&gt;TGT&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;AccountNumber&lt;/span&gt; &lt;span style="color:gray;"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span style="color:teal;"&gt;SRC&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;AccountNumber &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;OR&lt;/span&gt; &lt;span style="color:teal;"&gt;TGT&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;CarrierTrackingNumber&lt;/span&gt; &lt;span style="color:gray;"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span style="color:teal;"&gt;SRC&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;CarrierTrackingNumber&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;OR&lt;/span&gt; &lt;span style="color:teal;"&gt;TGT&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;LineNumber&lt;/span&gt; &lt;span style="color:gray;"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span style="color:teal;"&gt;SRC&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;LineNumber &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;OR&lt;/span&gt; &lt;span style="color:teal;"&gt;TGT&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;OrderNumber&lt;/span&gt; &lt;span style="color:gray;"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span style="color:teal;"&gt;SRC&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;OrderNumber&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;font size="1"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;OR&lt;/span&gt; &lt;span style="color:teal;"&gt;TGT&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;PurchaseOrderNumber&lt;/span&gt; &lt;span style="color:gray;"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span style="color:teal;"&gt;SRC&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;PurchaseOrderNumber&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;--Expire Old records&lt;/span&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:fuchsia;"&gt;UPDATE&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;TGT &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SET&lt;/span&gt; &lt;span style="color:teal;"&gt;TGT&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;RecordExpiredDate&lt;/span&gt; &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;@TransactionDate &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;FROM&lt;/span&gt; &lt;span style="color:teal;"&gt;DimOrder&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;TGT &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;INNER&lt;/span&gt; &lt;span style="color:gray;"&gt;JOIN&lt;/span&gt; &lt;span style="color:teal;"&gt;#OrderData&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;SRC &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;ON&lt;/span&gt; &lt;span style="color:teal;"&gt;TGT&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;SalesOrderID&lt;/span&gt; &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:teal;"&gt;SRC&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;SalesOrderID &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;AND&lt;/span&gt; &lt;span style="color:teal;"&gt;TGT&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;LineNumber&lt;/span&gt; &lt;span style="color:gray;"&gt;=&lt;/span&gt; &lt;span style="color:teal;"&gt;SRC&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;LineNumber &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;WHERE&lt;/span&gt; &lt;span style="color:teal;"&gt;SRC&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;RecordExists&lt;/span&gt; &lt;span style="color:gray;"&gt;=&lt;/span&gt; 2&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:green;"&gt;--Insert New Records&lt;/span&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin:0cm 0cm 0pt 36pt;line-height:normal;mso-layout-grid-align:none;"&gt;&lt;span style="color:blue;font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;INSERT&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt; &lt;span style="color:blue;"&gt;INTO&lt;/span&gt; &lt;span style="color:teal;"&gt;DimOrder&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:teal;"&gt;SalesOrderID&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;LineNumber&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;OrderNumber&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;PurchaseOrderNumber&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;AccountNumber &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;CarrierTrackingNumber&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;OrderedOnline&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;RecordValidFromDate&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt;&amp;nbsp; &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;span style="mso-tab-count:2;"&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;SalesOrderID &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;LineNumber &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;OrderNumber &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;PurchaseOrderNumber &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;AccountNumber &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;[CarrierTrackingNumber] &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;[OrderedOnline] &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;@TransactionDate&lt;/span&gt; &lt;span style="color:blue;"&gt;AS&lt;/span&gt; &lt;/font&gt;&lt;span style="color:teal;"&gt;&lt;font size="1"&gt;RecordValidFromDate &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;FROM&lt;/span&gt; &lt;span style="color:teal;"&gt;#OrderData&lt;/span&gt; &lt;span style="color:blue;"&gt;WHERE&lt;/span&gt; &lt;span style="color:teal;"&gt;RecordExists&lt;/span&gt; &lt;span style="color:gray;"&gt;=&lt;/span&gt; 2&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;DROP&lt;/span&gt; &lt;span style="color:blue;"&gt;TABLE&lt;/span&gt; &lt;span style="color:teal;"&gt;#OrderData&lt;/span&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;"&gt;&lt;span style="color:blue;font-size:8pt;mso-bidi-font-family:consolas;"&gt;&lt;font size="1"&gt;END&lt;/font&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;u&gt;&lt;font size="2"&gt;Results &lt;br /&gt;&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2"&gt;

&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;
&lt;p align="left"&gt;&lt;strong&gt;Inbuilt SSIS Task&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p align="left"&gt;&lt;strong&gt;Custom Built SSIS Task&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p align="left"&gt;&lt;strong&gt;T-SQL Script&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Initial Load&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;9m 22s&lt;/td&gt;
&lt;td&gt;3s&lt;/td&gt;
&lt;td&gt;2s&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Second Load (no new data)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;20m 54s&lt;/td&gt;
&lt;td&gt;3s&lt;/td&gt;
&lt;td&gt;3s&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type 1 and 2 changes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1h 31m 43s&lt;/td&gt;
&lt;td&gt;5s&lt;/td&gt;
&lt;td&gt;4s&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;What we see from the results is quite surprising. There is clearly a large difference in speed between the Inbuilt SSIS task and the other two methods, in the last test we see that the T-SQL script performs the same operation over 1000 times faster than then the inbuilt SSIS task. The difference between the T-SQL script and the Custom built SSIS task however is fairly minimal.&lt;/p&gt;
&lt;p&gt;I did do some further tests replacing the OLE DB Command component of the auto generated script with inserts into tables with a series of updates much like in the second custom built task, however I found that this performed marginally faster so can only think that the major impact on speed must come from the way that the task performs the matching rather than the row-by-row operations used by the component.&lt;/p&gt;
&lt;p&gt;In terms of ease of maintainability I would say that the SSIS task is the simplest one to use and maintain, the Custom built SSIS package is more complex although nothing someone accustomed to SSIS should feel uncomfortable with. Whilst the T-SQL task is definitely the hardest to maintain and takes the longest time to develop. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;font size="2"&gt;Conclusion&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Whilst there is no correct choice in this kind of situation it is important to be aware of the methods available (this is by no means a complete list!) and make the decision based upon the needs of the environment in which the solution is to be used. &lt;/p&gt;
&lt;p&gt;The Inbuilt task does provide an effective mechanism for building SCD into a warehouse and in cases where the number of records are small, however if you intend to deal with large volumes of data or have a tight loading time it is worth assessing the impact of using the SCD component and seeing what kind of benefit using an alternative approach might provide. &lt;/p&gt;
&lt;p&gt;Unless the need for fast loading is absolutely critical to the project however I would stay away from the third solution as the performance benefit is small compared to the overhead it places upon maintenance and development.&lt;/p&gt;&lt;p&gt;&amp;nbsp;Please note these are only my findings and it is very important that you should thoroughly test anything that you see here prior to deploying in your own environment.&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=11581" width="1" height="1"&gt;</description></item><item><title>Data Quality Services - Kimball ETL Screening</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2013/02/28/data-quality-services-kimball-etl-screening.aspx</link><pubDate>Thu, 28 Feb 2013 10:39:53 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:11902</guid><dc:creator>Jeremy Kashel</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Although it’s arguably not the most popular in the Kimball series, &lt;a href="http://www.kimballgroup.com/data-warehouse-and-business-intelligence-resources/data-warehouse-books/booksdwet/" target="_blank"&gt;The Data Warehouse ETL Toolkit&lt;/a&gt; contains a huge amount of vital information that’s focussed on the ETL side of data warehousing. In particular I’ve found the data quality screens design to be useful, so I thought it might be worth exploring if this concept can be applied to Data Quality Services.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What is a Kimball Data Quality Screen?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A screen is simply a check that is made against data that comes into the ETL pipeline and is used to measure data quality. Physically, the Kimball screen design is typically implemented as a table called Screen, which contains, as rows, the actual checks to perform against staged data. In addition, the screen table will contain metadata to aid data quality measurement, such as screen severity, category, source system and possibly exception actions.&lt;/p&gt;  &lt;p&gt;Each time that a screen yields some results (i.e. data quality issues) then another table, Error Event Fact, is populated with the results. Therefore, by using the data generated by the screening process, The Error Event Fact becomes the place to look for an overall measurement of data quality. The schema for this design from the Kimball book (with a few modifications) is as follows:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_5E1423A9.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_100BC434.png" width="574" height="196" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The check performed by each screen is typically a snippet of SQL that checks for a particular condition, e.g. Is the customer’s postcode missing, or is the tax amount within permitted ranges?&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Can Data Quality Services assist with ETL screening?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;DQS is capable of auditing and checking data, as each domain within a knowledge base can have its own &lt;a href="http://msdn.microsoft.com/en-us/library/hh510397.aspx" target="_blank"&gt;domain rules&lt;/a&gt;. In order to see how this might work as Kimball screens, I’ve set up a simple knowledge base around purchase orders. Here’s the domain management window from the DQS client:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_29079479.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_420364BE.png" width="207" height="161" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Within the Delivery Charge domain, I’ve setup a domain rule called ‘Delivery Charge Negative’ in order to ensure that the delivery charge cannot be negative:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_6FF0B776.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_1DDE0A2F.png" width="311" height="97" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’ve done something similar with the PO Date domain, setting up a rule to state that the PO date must be greater than 01/01/2012 in this case. Data run against the PO knowledge base will now be enforced against these two rules, so these are effectively my two Kimball style screens. To recap, DQS cleaning can be run either from the Data Quality Client or from SSIS.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Populating the Error Event Fact with SSIS&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I’m going to be running my DQS domain rules via SSIS, as my end goal is to populate the Error Event Fact. Remember, if any DQ issues occur, I want the Error Event Fact to know about them.&lt;/p&gt;  &lt;p&gt;In this scenario, the data from the source system has already been staged to a SQL table, which gives the following results in the SSIS source adaptor preview:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_08EC87BC.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_36D9DA74.png" width="317" height="187" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This data is passed to the DQS Cleansing SSIS task, with the data mapped to the DQS Knowledge Base in the following way:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_16BECDB7.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_01CD4B44.png" width="345" height="250" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Once the package is run, the data will be passed to DQS, which will run the data against its knowledge base, including running the domain rules. The data that is returned from DQS is as shown below. Note, PO55 row has failed both rules, whereas the other two rows have failed one row each.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_5DA7F0B4.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_48B66E41.png" width="653" height="109" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now we know exactly which rows have failed each data quality screen. The only trouble is that the data is in the wrong format for our error event fact. We want a total of 4 rows in the error event fact has PO Id 5 has failed 2 screens, whereas the other two rows have failed 1 screen. Therefore, we carry out a unpivot before inserting into the Error Event Fact. For this blog post my ScreenId is hard coded, but in reality you would have to lookup an appropriate ID for the DQS screen. The full SSIS package is as follows:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_76A3C0F9.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_0F9F913F.png" width="202" height="347" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Data Quality Reporting&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;With the Error Event Fact populated, a variety of reports can be produced. In this case I’ve made a very simple Analysis Services cube and made a quick report in Excel 2013, using slicers, sparklines and also the new &lt;a href="http://office.microsoft.com/en-gb/excel-help/create-a-pivottable-timeline-to-filter-dates-HA102840038.aspx?CTT=5&amp;amp;origin=HA102809308" target="_blank"&gt;Timeline&lt;/a&gt; feature:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_3D8CE3F7.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_289B6184.png" width="700" height="274" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;From this report I can see the screen that’s failed the most rows, see a trend of data quality and filter on specific issues.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;With a bit of work, DQS is capable of producing the rows needed for the Kimball Error Event Fact, but how good is it? I see the advantages of using DQS as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Front end user interface in order to allow data stewards to set up their own rules to screen the data – much better than holding rules in SSIS or manually in a table;&lt;/li&gt;    &lt;li&gt;DQS becomes a one stop shop for all data quality, as, in addition to holding the screens as domain rules, DQS will clean your data for you, according to the valid/invalid domain values that you set up in the knowledge base.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;There are a few disadvantages to it also:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The domain rules are not as flexible as pure SQL or SSIS, meaning that you may not be able to express all the screening rules that you had in mind;&lt;/li&gt;    &lt;li&gt;DQS can&amp;#39;t maintain all the metadata that you need to implement Kimball screening, so you’ll need to supplement it with some SQL tables to hold things like screen severity, screen type etc;&lt;/li&gt;    &lt;li&gt;Even though the performance has been improved in CUI, it’s still not suitable for large amounts of data. &lt;a href="http://blogs.msdn.com/b/dqs/archive/2012/04/17/significant-performance-enhancements-in-dqs-with-the-cumulative-update-1-cu1-release-for-sql-server-2012.aspx" target="_blank"&gt;Here’s&lt;/a&gt; an overview of how long you can expect the SSIS cleansing to take.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So my view is that if you’re already using DQS and data stewards like it using it to manage data quality, and your data volumes are not too big, then implement the classic Kimball screening design using DQS. But there are more cons than pros unfortunately, so if you’ve not already made an investment in DQS, and you have the time to invest in your own Kimball style screening solution, then I think you can come up with something that’s a bit more flexible and scalable.&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=11902" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Excel/default.aspx">Excel</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Data+Warehousing/default.aspx">Data Warehousing</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Kimball/default.aspx">Kimball</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/DQS/default.aspx">DQS</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Data+Quality+Services/default.aspx">Data Quality Services</category></item><item><title>Differences between Regular SSRS and SSRS for Dynamics AX 2012</title><link>http://blogs.adatis.co.uk/blogs/harding/archive/2013/02/05/differences-between-regular-ssrs-and-ssrs-for-dynamics-ax-2012.aspx</link><pubDate>Tue, 05 Feb 2013 09:00:00 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:11403</guid><dc:creator>jonathan harding</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I’ve spent quite a long time recently developing SSRS reports for Dynamics AX 2012.&amp;#160; In a change from AX 2009, the newer version now uses SSRS as it’s main reporting engine.&amp;#160; No doubt this is so that business with existing experience in the MS SQL stack can get on creating reports for their new AX 2012 installation without the need for re-training or bringing in extra people trained in X++.&lt;/p&gt;  &lt;p&gt;So not a bad idea, however my experience has turned up a number of important differences between standard SSRS reports and those in Dynamics AX:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;h5&gt;Placement of Report Code&lt;/h5&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In Dynamics AX 2012 SSRS reports you cannot use the code window found by going to the report properties.&amp;#160; The window is still there, and you can still type into it, but as soon as you build the report in AX the code will be stripped out of the report.&amp;#160; This is because when you build a report design within a Dynamics AX report model in Visual Studio, the process adds a custom code block to the report XML (a method to overwrite the report OnInit() method).&amp;#160; This wipes out any code you may have added.&lt;/p&gt;  &lt;p&gt;Instead, you must add code as a new Data Method in the report model.&amp;#160; This can then be referenced in your report design like this: =MyMethod(arg1)&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;h5&gt;No ‘ResetPageNumbers’ Property on PageBreak&lt;/h5&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;A great addition to SSRS 2008 was the ability to reset the page number global based on groups within your report.&amp;#160; This was handled by a property found by expanding out the ‘PageBreak’ property for the group.&amp;#160; Unfortunately this option does not exist in SSRS for Dynamics AX 2012.&amp;#160; There may be a good reason for this, and if anyone knows it please let me know!&lt;/p&gt;  &lt;p&gt;To get around this I added a data method which keeps track of which group my report is on as it renders and resets the page number appropriately.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;h5&gt;Conditionally Hidden Elements cause ConsumeContainerWhitespace Property to Fail&lt;/h5&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Suppose I have a one-page report that should fit onto an A4 page.&amp;#160; The report contains a data table and another section, which should appear at the bottom of the page regardless of the number of rows in the table.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/harding/whitespaceexample_4D134557.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="whitespaceexample" border="0" alt="whitespaceexample" src="http://blogs.adatis.co.uk/blogs/harding/whitespaceexample_thumb_576469B7.png" width="184" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="left"&gt;To do this, I enclose the data table in a rectangle element which is sized such that the ‘bottom section’ is at the bottom of the page.&amp;#160; By setting the report property ‘consumecontainerwhitespace’ to true, I ensure that as the table grows it fills up it’s containing rectangle, but the ‘bottom section’ stays where it is.&lt;/p&gt;  &lt;p align="left"&gt;This example would also work in AX, unless you place an element in the rectangle which can be conditionally hidden.&amp;#160; For example I may have a row in the table which should only be shown in certain conditions.&amp;#160; In standard SSRS, the report would continue to function as before, with the table consuming the rectangle and the rectangle staying the same size.&amp;#160; In AX however, the addition of the hidden row causes this behaviour to break and that rectangle to grow as rows are added to the table.&lt;/p&gt;  &lt;p align="left"&gt;A workaround for this is to make the optional row ‘invisible’ by shrinking it and/or making the text and borders white so they don’t show up.&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=11403" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/harding/archive/tags/SSRS/default.aspx">SSRS</category><category domain="http://blogs.adatis.co.uk/blogs/harding/archive/tags/Dynamics+AX2012/default.aspx">Dynamics AX2012</category></item><item><title>Absolute Positioning of Report Elements in SSRS</title><link>http://blogs.adatis.co.uk/blogs/harding/archive/2013/02/01/absolute-positioning-of-report-elements-in-ssrs.aspx</link><pubDate>Fri, 01 Feb 2013 14:58:43 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:11402</guid><dc:creator>jonathan harding</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;A client recently asked for an invoice document to be designed using SSRS.&amp;#160; The layout was pretty standard but for one important caveat:&amp;#160; The payment details section had to be in a fixed position at the bottom of the last page of the report, so a 3-page invoice should look like this example:&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/harding/InvPg1_095B9FEA.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="InvPg1" border="0" alt="InvPg1" src="http://blogs.adatis.co.uk/blogs/harding/InvPg1_thumb_6F8769BA.png" width="186" height="244" /&gt;&lt;/a&gt; &lt;a href="http://blogs.adatis.co.uk/blogs/harding/InvPg2_4F002A08.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="InvPg2" border="0" alt="InvPg2" src="http://blogs.adatis.co.uk/blogs/harding/InvPg2_thumb_40557E23.png" width="186" height="244" /&gt;&lt;/a&gt; &lt;a href="http://blogs.adatis.co.uk/blogs/harding/InvPg3_4DBB9129.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="InvPg3" border="0" alt="InvPg3" src="http://blogs.adatis.co.uk/blogs/harding/InvPg3_thumb_4CE32B3F.png" width="186" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This could be achieved by putting the ‘Payment Details Section’ fields in the report footer, and setting their visibility based on the report page number. Unfortunately in SSRS there is only one footer for every page and it’s height cannot be varied between pages.&amp;#160; The client did not want to waste space in the report body, which is a side-effect of this method.&lt;/p&gt;  &lt;p&gt;So, how to fix the position of a report element to the bottom of the report?&lt;/p&gt;  &lt;p&gt;The basic premise of my solution was to incorporate a ‘hidden’ element into the report body. This element can grow or shrink dynamically to alter the distance between the last of the invoice lines and the payment details section, and thus appears to keep the payment details ‘fixed’ at the bottom of the report.&amp;#160; To do this, we need to know how many rows of data can fit on the first page of the report (r1):&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/harding/InvEq1_0C40DED0.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="InvEq1" border="0" alt="InvEq1" src="http://blogs.adatis.co.uk/blogs/harding/InvEq1_thumb_1CD8D9BE.png" width="235" height="312" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p align="left"&gt;And how many we need to add to push the payment details section to the bottom of the next page (r2 + r3):&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/harding/InvEq2_381132BF.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="InvEq2" border="0" alt="InvEq2" src="http://blogs.adatis.co.uk/blogs/harding/InvEq2_thumb_28FA53E5.png" width="471" height="316" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once we have values for r1, r2 and r3, we need to add (r2+r3) additional rows to the invoice lines table on our layout.&amp;#160; These rows &lt;strong&gt;must be outside of all groupings on the table&lt;/strong&gt; as we don’t want them repeated with the groups, we just want them to appear at the foot of the table.&amp;#160; To get the desired effect, we need to control the visibility on these additional rows such that given the total number of data rows in the table, enough additional rows are visible to ‘push’ the payment details section to the bottom of the last page.&lt;/p&gt;  &lt;p&gt;To control the visibility of the additional rows, we need to add some code to the report:&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; RowHidden(countRows &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;, thisRow &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Boolean&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; maxRowsPageOne, additionalRows &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Const&lt;/span&gt; TOTALADDITIONALROWS &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = 35&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        maxRowsPageOne = 12&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; (countRows &amp;lt;= maxRowsPageOne) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            &lt;span class="kwrd"&gt;If&lt;/span&gt; (thisRow &amp;lt;= (maxRowsPageOne - countRows)) &lt;span class="kwrd"&gt;Then&lt;/span&gt; &lt;span class="rem"&gt;&amp;#39;Current row is inside visible range for first page&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;False&lt;/span&gt; &lt;span class="rem"&gt;&amp;#39;Show the row&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="rem"&gt;&amp;#39;Hide the row&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            additionalRows = TOTALADDITIONALROWS - ((countRows - maxRowsPageOne) &lt;span class="kwrd"&gt;Mod&lt;/span&gt; TOTALADDITIONALROWS) &lt;span class="rem"&gt;&amp;#39;This is key, determines count of rows to make visible&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;            &lt;span class="kwrd"&gt;If&lt;/span&gt; additionalRows &amp;lt; TOTALADDITIONALROWS &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;                &lt;span class="kwrd"&gt;If&lt;/span&gt; thisRow &amp;lt;= additionalRows &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;False&lt;/span&gt; &lt;span class="rem"&gt;&amp;#39;Show the row&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="rem"&gt;&amp;#39;Hide the row&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;                &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;True&lt;/span&gt; &lt;span class="rem"&gt;&amp;#39;Hide all extra columns&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; Function&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;This code needs to be called by every additional row in the invoice lines table using &lt;em&gt;=Code.RowHidden(CountRows(), 1)&lt;/em&gt; where ‘1’ represents the number of the particular row, starting from the first additional row after the data rows. &lt;/p&gt;

&lt;p&gt;And that’s all there is to it!&amp;#160; It should be noted that this method means the cells in the invoice line table cannot be allowed to grow, or the calculations for the number of additional rows to show will not work.&amp;#160; You also need to be very careful with any future changes to the layout of the report, as these could also affect those calculations.&amp;#160; It’s certainly worth seeing if there can be some compromise on the positioning of report elements to something that SSRS can handle better, but if not, then I hope this is useful!&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Until next time…..&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=11402" width="1" height="1"&gt;</description></item><item><title>Unique Values in Master Data Services</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2012/12/07/unique-values-in-master-data-services.aspx</link><pubDate>Fri, 07 Dec 2012 13:29:27 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:11127</guid><dc:creator>Jeremy Kashel</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I’ve been doing quite a few demos and Proof of Concept (POC) projects recently for MDS. Understandably there are always a raft of questions that come up during demos and POCs, one of which recently was “how do I ensure that this attribute’s value is unique?”. &lt;/p&gt;  &lt;p&gt;MDS can easily deal with simple uniqueness enforcement, which is something that anyone who has done any MDS development will no doubt know straight away. But if the requirement is more complex, such as ensuring that the attribute is unique in conjunction with other attributes, then I don’t think it’s as well known. Therefore I thought it would be worth a quick post on how to do this.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Code Attribute&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To get the simple case out of the way, each MDS entity is always created with an attribute called Code, which must be unique. Therefore if you try and create/update a member with a duplicate Code, then you get the following error message:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_1C8F48C1.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_7869EE31.png" width="417" height="57" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Business Rules&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To enforce uniqueness on any other attribute, you have to use business rules. Therefore, if I want to ensure that the attribute called Name must be unique, then I must carry out the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Go to the business rules editor and create a new rule &lt;/li&gt;    &lt;li&gt;Drag the action of “must be unique” over to the actions node &lt;/li&gt;    &lt;li&gt;Drag the Name attribute over to the “Select attribute” node, meaning that the action should look as follows: &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_1165BE77.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_7C743C03.png" width="244" height="139" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Once that’s done, save the rule step and then re-publish the rule. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Trying to enter a duplicate value for the Name attribute will now give the following validation error:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_2A618EBC.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_584EE174.png" width="407" height="52" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Business Rules – Multiple Attributes&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Now for the harder scenario. In the sample MDS product model, there is a Country attribute and also a Product Sub Category. I want to ensure that Name is unique, but only within a Country and Sub Category combination. To do this we go to the same business rules interface, and add the same action as before. Once that is done we carry out the following additional steps:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Change the radio button to “In combination with the following” &lt;/li&gt;    &lt;li&gt;This is the part that I don’t think is that obvious. Drag over the Country attribute and then the Product Sub Category attribute onto the “attributes” node. This should give the following: &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_714AB1B9.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_5C592F46.png" width="244" height="169" /&gt;&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;As before, save the rule step, then publish the rule. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Now a duplicate name will be permitted, but only within a country and sub category combination. If we do enter a duplicate value within a given Country/Product Sub Category group, then the following validation message is shown:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_3833D4B7.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_3833D4B7.png" width="428" height="57" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=11127" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/MDM/default.aspx">MDM</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Master+Data+Services/default.aspx">Master Data Services</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/MDS/default.aspx">MDS</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Master+Data+Management/default.aspx">Master Data Management</category></item><item><title>SQL PASS Summit 2012</title><link>http://blogs.adatis.co.uk/blogs/calvinferns/archive/2012/11/13/sql-pass-summit-2012.aspx</link><pubDate>Tue, 13 Nov 2012 05:11:49 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:10949</guid><dc:creator>Calvin Ferns</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Having just returned from SQL PASS I thought I would blog a few highlights about the conference and some of the things I came across and am looking forward to.&amp;#160; I went over to Seattle with two of my colleagues and we started with a little sight-seeing to get our body clocks back in sync and I would thoroughly recommend it.&amp;#160; The jetlag from the UK gets to you for the first couple of days and you get to see things like this:&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/calvinferns/DSC03818_6FAB40DF.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="DSC03818" border="0" alt="DSC03818" src="http://blogs.adatis.co.uk/blogs/calvinferns/DSC03818_thumb_768AA7CA.jpg" width="539" height="358" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/font&gt;&lt;em&gt;&lt;font color="#000000" size="1"&gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#000000" size="1"&gt;The Adatis SQLPass team: Myself, Neil Dobner, Tim Kent&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;This was my first time at PASS and I was not disappointed.&amp;#160; The first couple of evenings in Seattle were spent catching up with some people I have met at SQL Bits.&amp;#160; The SQL community being what it is I was quickly introduced to more people and making new connections.&amp;#160; The &lt;a href="https://twitter.com/search?q=%23SQLfamily" target="_blank"&gt;#SQLfamily&lt;/a&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt; &lt;/font&gt;&lt;font color="#000000"&gt;on twitter are a welcoming bunch and really add a lot to the atmosphere of a friendly conference.&amp;#160; I would strongly recommend using twitter for both connecting with people and using the &lt;a href="https://twitter.com/search?q=%23SQLHelp" target="_blank"&gt;#SQLHelp&lt;/a&gt; hash tag to ask questions.&amp;#160; I had come across a number of the speakers at SQL Bits and they were all very good quality and I heard very little negative comment on the sessions across the 3 days.&amp;#160; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;There were a good number of highlights for me that I would like to pass on in case they are as relevant to you as they are to me.&amp;#160; I&amp;#39;ve split them down into a few areas, firstly Powerview:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;PowerView coming to SSAS Multidimensional &lt;/li&gt;    &lt;li&gt;PowerView in Excel &lt;/li&gt;    &lt;li&gt;Powerview on Multidimensional will come to Sharepoint well before it gets into the Office Excel release cycle &lt;/li&gt;    &lt;li&gt;Image Urls and geospatial reports are also particularly easy &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Some brilliant stuff in a Tabular internals stuff given by Akshai Mirchandani and Allan Folting, DAX queries by Alberto Ferrari and 2012 SSAS by Chris Webb:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Insights into value encoding and hash encoding compression which makes sense of guidance such as &lt;/li&gt;    &lt;li&gt;Don&amp;#39;t bring in any row level identifier or document numbers etc unless you really have to &lt;/li&gt;    &lt;li&gt;Use a process defrag as maintenance when doing updates and deletes &lt;/li&gt;    &lt;li&gt;Lower end hardware can be quicker, ie go for less but faster procs &lt;/li&gt;    &lt;li&gt;Profile you DAX queries to look out for formula engine calls using: CallBackDataId &lt;/li&gt;    &lt;li&gt;Partitions are not eliminated by the query optimiser they only help you manage processing, this is particularly impressive because the engine is so fast it didn&amp;#39;t need this! &lt;/li&gt;    &lt;li&gt;Direct query really is unusable given the limitations and the awful SQL it generates &lt;/li&gt;    &lt;li&gt;Two thirds of the SSAS multidimensional codebase is there to deal with M2M correctly &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Finally some database engine stuff:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Windowing functions in 2012 really will be a lifesaver for complex queries, especially lag and lead for those moments where your user thinks you work in Excel &lt;/li&gt;    &lt;li&gt;Updatable columns store indexes! &lt;/li&gt;    &lt;li&gt;Licencing can be a nightmare of Cores, processors and virtualisation but the key way to keep it sensible on the new model is to keep you core density at 4 cores per processor. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I met loads of fantastic interesting people and have picked up some great contacts.&amp;#160; The conference has also had the added side affect of getting me excited about SQL Server again.&amp;#160; It is easy to get caught in the day job and forget what a brilliant product we work with and what hard work goes on at Microsoft to keep it that way.&lt;/p&gt;  &lt;p&gt;Thanks everyone&lt;/p&gt;  &lt;p&gt;See you &lt;a href="http://www.sqlpass.org/summit/2013/" target="_blank"&gt;Next Year?&lt;/a&gt; or maybe &lt;a href="http://www.sqlbits.com/" target="_blank"&gt;SQL Bits&lt;/a&gt; a bit closer to home.&lt;/p&gt;  &lt;p&gt;&lt;a title="https://twitter.com/CalvinFerns" href="https://twitter.com/CalvinFerns" target="_blank"&gt;@CalvinFerns&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=10949" width="1" height="1"&gt;</description></item><item><title>Master Data Services SQL Server 2012 Vs 2008 R2</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2012/11/09/master-data-services-sql-server-2012-vs-2008-r2.aspx</link><pubDate>Fri, 09 Nov 2012 15:03:14 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:10801</guid><dc:creator>Jeremy Kashel</dc:creator><slash:comments>0</slash:comments><description>&lt;p align="left"&gt;I’ve given quite a few MDS demos recently and one question I seem to get asked often is “What features does MDS 2012 have compared to MDS 2008R2?”. As its happened quite a few times, I thought it would be a good idea to put a quick post together to explain the differences. The table below details all the features MDS has and compares the two versions:&lt;/p&gt;  &lt;div align="left"&gt;   &lt;table style="border-bottom:medium none;border-left:medium none;border-collapse:collapse;border-top:medium none;border-right:medium none;mso-border-alt:solid windowtext .5pt;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-insideh:.5pt solid windowtext;mso-border-insidev:.5pt solid windowtext;" class="MsoTableMediumShading1Accent1" cellspacing="0" cellpadding="0" align="center"&gt;       &lt;tr style="mso-yfti-irow:-1;mso-yfti-firstrow:yes;"&gt;         &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#4f81bd;border-top:windowtext 1pt solid;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:accent1;"&gt;           &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-yfti-cnfc:5;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:;mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;mso-themecolor:background1;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;" color="#ffffff"&gt;Feature&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:;mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;mso-themecolor:background1;mso-bidi-font-weight:bold;"&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#4f81bd;border-top:windowtext 1pt solid;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:accent1;mso-border-left-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-yfti-cnfc:1;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:;mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;mso-themecolor:background1;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;" color="#ffffff"&gt;MDS 2012&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:;mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;mso-themecolor:background1;mso-bidi-font-weight:bold;"&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#4f81bd;border-top:windowtext 1pt solid;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:accent1;mso-border-left-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-yfti-cnfc:1;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:;mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;mso-themecolor:background1;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;" color="#ffffff"&gt;MDS 2008 R2&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:;mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;mso-themecolor:background1;mso-bidi-font-weight:bold;"&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow:0;"&gt;         &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Front End&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l7 level1 lfo1;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;New Silverlight UI added for the Explorer area. Better performance, with less clicks to get tasks done.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l7 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Excel Add-in introduced&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l7 level1 lfo1;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;HTML based ASP.NET implementation.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l7 level1 lfo1;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;No Excel Add-in&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow:1;"&gt;         &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-yfti-cnfc:132;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Modelling&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l4 level1 lfo4;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Carry out in the web UI, plus some tasks can be carried out in Excel&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l4 level1 lfo4;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Allows the auto generation of a code without using business rules&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l4 level1 lfo4;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Carry out modelling in the web UI only&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow:2;"&gt;         &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Hierarchies&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l2 level1 lfo2;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Three types of hierarchies&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l2 level1 lfo2;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Manage hierarchies in the new Silverlight UI&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l2 level1 lfo2;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Three types of hierarchies&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l2 level1 lfo2;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Manage hierarchies in the older UI style&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow:3;"&gt;         &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-yfti-cnfc:132;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Collections&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l2 level1 lfo2;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Add members from Explicit Hierarchies or other Collections&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l2 level1 lfo2;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Maintain a weighting on a member by member basis&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l2 level1 lfo2;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Add members from Explicit Hierarchies or other Collections&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow:4;"&gt;         &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Staging Process&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l6 level1 lfo5;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;A staging table is created per entity that you create in MDS. The table mirrors the exact structure that you see when you view the entity in the front end, making loading easier.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l6 level1 lfo5;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;A generic staging table is used for all entities. This means, for example, you must load attribute changes in attribute name/value pairs&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow:5;"&gt;         &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-yfti-cnfc:132;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Deployment&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l1 level1 lfo7;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Deploy the model structure from the front end.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l1 level1 lfo7;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Deploy the data from the new command line deployment tool&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l8 level1 lfo6;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Deploy model structure and data from the front end&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow:6;"&gt;         &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Security&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l8 level1 lfo6;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Grant permissions to models, entities, attributes and attribute groups&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l8 level1 lfo6;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Security cleaned up and simplified (no longer necessary to grant permissions to hierarchies)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l8 level1 lfo6;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Grant permissions to models, entities, attributes, attribute groups and hierarchies&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow:7;"&gt;         &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-yfti-cnfc:132;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Business Rules&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l8 level1 lfo6;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Alter attribute values, validate data integrity, initiate workflow.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l8 level1 lfo6;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Some minor validation changes around using business rules to auto-generate Code values&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l8 level1 lfo6;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Alter attribute values, validate data integrity, initiate workflow.&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-yfti-cnfc:128;" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow:8;"&gt;         &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;SharePoint Integration&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l8 level1 lfo6;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Initiate a SharePoint workflow from MDS business rules&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l8 level1 lfo6;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;New functionality to embed the web UI inside a SharePoint page&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l8 level1 lfo6;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Initiate a SharePoint workflow from MDS business rules&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow:9;"&gt;         &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-yfti-cnfc:132;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Data Quality Services (DQS) Integration&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l3 level1 lfo8;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Connect to a DQS matching policy from Excel, against MDS master data&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l3 level1 lfo8;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;No DQS capability, as DQS is new in SQL Server 2012&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow:10;"&gt;         &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Version Management&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l0 level1 lfo9;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Create multiple copies of your master data and work with them independently as needed&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l0 level1 lfo9;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Some minor UI improvements have been added&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:13pt;text-indent:-18pt;margin:0cm 0cm 10pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l0 level1 lfo9;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="line-height:10pt;font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:10pt;mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;As SQL 2012, create multiple copies of your master data and work with them independently as needed&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow:11;"&gt;         &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-yfti-cnfc:132;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Transactions (auditing)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l5 level1 lfo10;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Transactions removed from Explorer and now are only available in Version Management&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l5 level1 lfo10;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Therefore users cannot reverse their own transactions, only administrators can do this&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l5 level1 lfo10;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Annotations are now permanent and cannot be deleted&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l5 level1 lfo10;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Transactions viewable in two areas, Explorer and Version Management&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l5 level1 lfo10;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Users can reverse their own transactions&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l5 level1 lfo10;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Annotations can be deleted&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow:12;"&gt;         &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Metadata&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l9 level1 lfo3;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;No support to view Metadata – this is now a deprecated feature&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#f2f2f2;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-background-themecolor:background1;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-background-themeshade:242;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l9 level1 lfo3;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Customise the metadata for most objects in MDS&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:64;mso-add-space:auto;mso-list:l9 level1 lfo3;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;View metadata in the metadata explorer&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="mso-yfti-irow:13;mso-yfti-lastrow:yes;"&gt;         &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;margin:0cm 0cm 0pt;mso-yfti-cnfc:132;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Installation &amp;amp; Configuration&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l9 level1 lfo3;" class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Installation from the main SQL Server setup program&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l9 level1 lfo3;" class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Minor changes to the configuration settings&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:windowtext 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:windowtext 1pt solid;padding-top:0cm;mso-border-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;"&gt;           &lt;p style="line-height:normal;text-indent:-18pt;margin:0cm 0cm 0pt 18pt;mso-yfti-cnfc:128;mso-add-space:auto;mso-list:l9 level1 lfo3;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:;mso-bidi-font-family:symbol;mso-fareast-font-family:symbol;"&gt;&lt;span style="mso-list:ignore;"&gt;&lt;font face="Symbol"&gt;&lt;font style="font-size:9pt;"&gt;·&lt;/font&gt;&lt;/font&gt;&lt;span style="line-height:normal;font-family:;"&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:7pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-family:calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;"&gt;Installation from the SQL Server media, but not included in the main setup program&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/table&gt; &lt;/div&gt;  &lt;div align="center"&gt;&amp;#160;&lt;/div&gt;  &lt;div align="left"&gt;For me the improvements to the performance and the addition of the Excel Add-in are the most compelling reasons to upgrade. The great thing in particular about the Excel Add-in is that data stewards can manage data with the familiarity of Excel, but the data itself will be stored in SQL Server 2012.&lt;/div&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=10801" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/MDM/default.aspx">MDM</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Master+Data+Services/default.aspx">Master Data Services</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/MDS/default.aspx">MDS</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Master+Data+Management/default.aspx">Master Data Management</category></item><item><title>SQL Server Delete does not release file space allocation</title><link>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2012/10/17/sql-server-delete-does-not-release-file-space-allocation.aspx</link><pubDate>Wed, 17 Oct 2012 18:41:22 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:10498</guid><dc:creator>Martyn Bullerwell</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;This one’s a short blog post, and by no means new, but it may help you in the future and maybe save some head scratching. Commonly in Data Warehousing projects you will be processing data through tables whilst staging and cleaning source data. These tables may commonly be heaps (no Clustered Index), that have no persistent data; rather they are a transient set of tables that get deleted from when your Warehouse loads each day.&lt;/p&gt;  &lt;p&gt;What you may not know is that when a heap is deleted from (as opposed to truncated) the space that was used by that data is not automatically de-allocated from the table, and when new data is added the table space is increased, even though the table may be “empty”. &lt;/p&gt;  &lt;p&gt;So what is actually going on? When deleting from a heap the database engine either locks the page or the row, as opposed to the whole table when deleting on a clustered index. During the delete on the heap the page is emptied, but the engine does not de-allocate the page. This behaviour only occurs on a heap, and can cause very large tables with no data in them. For my recent project, it caused the stage and clean processes to slow down gradually over time because the database engine was scanning huge tables with no data in them.&lt;/p&gt;  &lt;p&gt;So, what can we do to stop this behaviour? There are three options (as documented by Microsoft &lt;a href="http://msdn.microsoft.com/en-us/library/ms189835.aspx" target="_blank"&gt;here (see Locking Behaviour)&lt;/a&gt;):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. When deleting from the table obtain an exclusive lock on the whole table, by using a TABLOCK hint as follows: &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DELETE FROM [TABLE] WITH (TABLOCK) WHERE [COLUMN] = &amp;#39;CRITERIA&amp;#39;&lt;/p&gt;    &lt;p&gt;2. If possible, truncate the whole table, this will de-allocate all pages.&lt;/p&gt;    &lt;p&gt;3. Finally, my least favourite, add a clustered index to the table.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;   &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:114511b7-e539-446d-bc37-2f87398cb5b3" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SQL+Server+2012" rel="tag"&gt;SQL Server 2012&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Delete" rel="tag"&gt;Delete&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Heap" rel="tag"&gt;Heap&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=10498" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/tags/Business+Intelligence/default.aspx">Business Intelligence</category><category domain="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/tags/SQl+Server+2012/default.aspx">SQl Server 2012</category></item><item><title>RANKX–Analysis Services 2012 Tabular</title><link>http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/2012/10/17/rankx-analysis-services-2012-tabular.aspx</link><pubDate>Wed, 17 Oct 2012 07:29:14 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:10496</guid><dc:creator>Martyn Bullerwell</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;RANKX was a new function made available in DAX at the launch of SQL Server 2012; however Ranking is a widely used function in most BI projects, and was very much anticipated. Having worked extensively with Tabular on a recent project we had the need to rank over large sets of data, with models based on billions of rows. Whilst we were extremely impressed with the performance of Tabular, we found something not quite right with RANKX. Suppose we had the following very simple format of data, and wanted to perform a simple Rank over it.&lt;/p&gt;  &lt;p&gt;   &lt;table cellspacing="0" cellpadding="0"&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;b&gt;CountryKey&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;Units&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;SalesValue&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;53&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;24/01/2012&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;62&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;81.290619&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;156&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;03/01/2012&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;3575&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;5186.565208&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;48&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;07/05/2012&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;321&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;362.836524&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;157&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;16/04/2012&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;7&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;8.005637&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;134&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;19/08/2012&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;20&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;44.12&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;232&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;29/07/2012&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;40&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;49.313156&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;178&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;05/03/2012&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;47&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;61.25&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;63&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;26/03/2012&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;51&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;73.369509&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;153&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;17/06/2012&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;3061&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;6026.4&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;31&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;08/07/2012&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;3622&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;5005.038257&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;140&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;13/02/2012&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;9870&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;7713.968564&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;14&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;27/05/2012&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;29220&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;46728.26302&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;98&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;20/08/2012&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;297&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;377.653459&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;131&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;30/07/2012&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;172&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;182.591931&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;48&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;27/03/2012&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;348&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;411.801792&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;157&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;06/03/2012&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;3&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;8.01422&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/table&gt; &lt;/p&gt;  &lt;p&gt;In order to a Rank the above data by country over all time we would probably write a simple DAX query as follows:&lt;/p&gt;  &lt;ol&gt;   &lt;ol&gt;     &lt;li&gt;DEFINE &lt;/li&gt;      &lt;li&gt;&amp;#160; MEASURE FactSales[UnitCount]= SUM(FactSales[Units])&lt;/li&gt;      &lt;li&gt;&amp;#160; MEASURE FactSales[Rank]= RANKX(ALL(FactSales[CountryKey]), FactSales[UnitCount])&lt;/li&gt;      &lt;li&gt;&lt;/li&gt;      &lt;li&gt;EVALUATE&lt;/li&gt;      &lt;li&gt;&amp;#160; SUMMARIZE(&lt;/li&gt;      &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; FactSales&lt;/li&gt;      &lt;li&gt;&amp;#160;&amp;#160; ,FactSales[CountryKey]&lt;/li&gt;      &lt;li&gt;&amp;#160;&amp;#160; ,&amp;quot;ProductSalesUnits&amp;quot;,FactSales[UnitCount]&lt;/li&gt;      &lt;li&gt;&amp;#160;&amp;#160; ,&amp;quot;Rank&amp;quot;, FactSales[Rank]&lt;/li&gt;      &lt;li&gt;&amp;#160; ) &lt;/li&gt;      &lt;li&gt;ORDER BY&lt;/li&gt;      &lt;li&gt;&amp;#160; FactSales[UnitCount] DESC&lt;/li&gt;   &lt;/ol&gt; &lt;/ol&gt;  &lt;p&gt;Now you can see from the query above, in order to avoid any doubt we only rank over a single table and we have no joins to other tables at all. This works fine resulting in the data below. &lt;/p&gt;  &lt;p&gt;   &lt;table cellspacing="0" cellpadding="0"&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;b&gt;FactSales[CountryKey]&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;[ProductSalesUnits]&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;[Rank]&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;227&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;91818113&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;226&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;21487836&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;2&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;39&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;9033389&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;3&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;14&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;7597054&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;4&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;82&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;4656585&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;5&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;109&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;3678302&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;6&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;75&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;3371681&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;7&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;140&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;2511239&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;8&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;107&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1850520&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;9&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;208&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1443241&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;10&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;31&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1092047&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;11&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;153&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;997860&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;12&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;201&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;914827&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;13&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;59&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;870366&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;14&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;163&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;840927&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;15&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/table&gt; &lt;/p&gt;  &lt;p&gt;Now assume we rank over a lot more data and wish to apply a simple CALCULATETABLE in order to filter some data out. We may write a DAX Query as follows:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;DEFINE &lt;/li&gt;    &lt;li&gt;&amp;#160; MEASURE FactSales[UnitCount]= SUM(FactSales[Units])&lt;/li&gt;    &lt;li&gt;&amp;#160; MEASURE FactSales[Rank]= RANKX(ALL(FactSales[CountryKey]), FactSales[UnitCount])&lt;/li&gt;    &lt;li&gt;&lt;/li&gt;    &lt;li&gt;EVALUATE&lt;/li&gt;    &lt;li&gt;&amp;#160; CALCULATETABLE (&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; SUMMARIZE(&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FactSales&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,FactSales[CountryKey]&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&amp;quot;ProductSalesUnits&amp;quot;,FactSales[UnitCount]&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&amp;quot;Rank&amp;quot;, FactSales[Rank]&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; )&lt;/li&gt;    &lt;li&gt;&amp;#160; ,DATESBETWEEN(&amp;#39;Date&amp;#39;[CalDate], DATE(2012,1,1), DATE(2012,8,31))&lt;/li&gt;    &lt;li&gt;)&lt;/li&gt;    &lt;li&gt;ORDER BY &lt;/li&gt;    &lt;li&gt;&amp;#160; FactSales[UnitCount] DESC&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;In this instance we are joining to a Date dimension, but that is it.&amp;#160; The above query yields the below result.&lt;/p&gt;  &lt;p&gt;   &lt;table cellspacing="0" cellpadding="0"&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;b&gt;FactSales[CountryKey]&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;[ProductSalesUnits]&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;[Rank]&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;227&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;83147875&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;226&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;19446567&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;2&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;39&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;8137335&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;3&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;14&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;6769390&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;4&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;82&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;4100168&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;5&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;109&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;3321496&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;6&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;75&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;3010890&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;7&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;140&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;2165554&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;8&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;107&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1655472&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;9&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;208&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1274740&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;10&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;31&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;987122&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;11&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;153&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;908938&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;12&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;201&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;853322&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;13&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;59&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;771677&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;14&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/table&gt; &lt;/p&gt;  &lt;p&gt;That works, we get results as we would expect within seconds. Now, if instead of ranking over an integer field, let’s apply the RANKX function to a real number. In this example we get a worrying result set using the DAX as follows: &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;DEFINE&amp;#160; &lt;/li&gt;    &lt;li&gt;&amp;#160; MEASURE FactSales[SalesValue]= &lt;font style="background-color:#ffff00;"&gt;FactSales[Sales Value]&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&amp;#160; MEASURE FactSales[Rank]= RANKX(ALL(FactSales[CountryKey]), FactSales[UnitCount])&lt;/li&gt;    &lt;li&gt;EVALUATE&lt;/li&gt;    &lt;li&gt;&amp;#160; CALCULATETABLE (&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; SUMMARIZE(&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FactSales&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,FactSales[CountryKey]&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&amp;quot;ProductSalesValue&amp;quot;,FactSales[Sales Value]&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&amp;quot;Rank&amp;quot;, FactSales[Rank]&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; )&lt;/li&gt;    &lt;li&gt;&amp;#160; ,DATESBETWEEN(&amp;#39;Date&amp;#39;[CalDate], DATE(2012,1,1), DATE(2012,8,31))&lt;/li&gt;    &lt;li&gt;)&lt;/li&gt;    &lt;li&gt;ORDER BY &lt;/li&gt;    &lt;li&gt;&amp;#160; FactSales[UnitCount] DESC&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Which outputs: &lt;/p&gt;  &lt;p&gt;   &lt;table cellspacing="0" cellpadding="0"&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;b&gt;FactSales[CountryKey]&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;[ProductSalesValue]&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;[Rank]&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;227&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;84074007.25&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;226&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;29928143.25&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;3&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;font style="background-color:#ffff00;"&gt;14&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;font style="background-color:#ffff00;"&gt;10859628.74&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;font style="background-color:#ffff00;"&gt;4&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;font style="background-color:#ffff00;"&gt;39&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;font style="background-color:#ffff00;"&gt;8451588.111&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;font style="background-color:#ffff00;"&gt;4&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;109&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;7964922.769&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;6&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;82&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;6254219.85&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;6&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;75&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;4730390.37&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;7&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;107&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;2466064.97&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;9&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;208&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1904009.18&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;10&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;font style="background-color:#ffff00;"&gt;140&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;font style="background-color:#ffff00;"&gt;1862708.961&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;font style="background-color:#ffff00;"&gt;11&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;font style="background-color:#ffff00;"&gt;153&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;font style="background-color:#ffff00;"&gt;1311217.35&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;font style="background-color:#ffff00;"&gt;11&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;22&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1207366.72&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;13&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;59&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1182179.95&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;15&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/table&gt; &lt;/p&gt;  &lt;p&gt;Now let’s be clear, all we have done is simply change the measure from an Integer to a Float, the rest of the data is the same. You will notice that there are tie’s in the data that there should not be. Having scratched our heads for hours, rebuilt the model, re wrote the DAX, and had a number of colleagues check it over we found that when no calculate table is applied, then we get the correct answer again as follows:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;DEFINE &lt;/li&gt;    &lt;li&gt;&amp;#160; MEASURE FactSales[SalesValue]= FactSales[Sales Value]&lt;/li&gt;    &lt;li&gt;&amp;#160; MEASURE FactSales[Rank]= RANKX(ALL(FactSales[CountryKey]), FactSales[UnitCount])&lt;/li&gt;    &lt;li&gt;EVALUATE&lt;/li&gt;    &lt;li&gt;&amp;#160; SUMMARIZE(&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; FactSales&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160; ,FactSales[CountryKey]&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160; ,&amp;quot;ProductSalesValue&amp;quot;,FactSales[Sales Value]&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160; ,&amp;quot;Rank&amp;quot;, FactSales[Rank]&lt;/li&gt;    &lt;li&gt;)&lt;/li&gt;    &lt;li&gt;ORDER BY &lt;/li&gt;    &lt;li&gt;&amp;#160; FactSales[UnitCount] DESC&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;   &lt;table cellspacing="0" cellpadding="0"&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;b&gt;FactSales[CountryKey]&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;[ProductSalesValue]&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;[Rank]&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;227&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;92885561.31&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;226&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;33237033.3&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;2&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;14&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;12253005.68&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;3&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;39&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;9414266.358&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;4&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;109&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;8928147.606&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;5&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;82&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;7120811.54&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;6&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;75&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;5296490.13&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;7&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;107&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;2756500.54&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;8&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;208&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;2146627.18&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;9&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;140&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;2115750.609&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;10&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;153&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1479858.53&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;11&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;22&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1339255.82&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;12&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;59&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1324799.98&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;13&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;105&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1320651.83&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;14&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;31&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1277065.779&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;15&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/table&gt; &lt;/p&gt;  &lt;p&gt;So what we have learnt here is that RANKX seems to give the wrong answer, but only when ranking over real numbers, and only when we filter the data set in some way using CALCULATETABLE. Not being able to find a clear reason for this behaviour we eventually gave in and raised it with Microsoft. Having spent a week or so working it through with the great support team at Microsoft, it seems that this is a current “feature” of RANKX. It is believed to be a floating point arithmetic issue that is driven from how floating point numbers are stored. It is documented here: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://support.microsoft.com/kb/78113/EN-US"&gt;http://support.microsoft.com/kb/78113/EN-US&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There is also some further information documented here: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/library/gg492146.aspx"&gt;http://technet.microsoft.com/en-us/library/gg492146.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=4106"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=4106&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I have been told by Microsoft that this is the same as it is in Excel, and Analysis Services, however still does not explain why the CALCULATETABLE makes a difference.&amp;#160; I am still working with Microsoft to see if we can get to the bottom of it.&amp;#160;&amp;#160; However, if precision beyond 15 significant figures within the rank is not important to you (up to 99 Billion with 2DP) this issue is very easily worked around. Take the following DAX query: &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;DEFINE &lt;/li&gt;    &lt;li&gt;&amp;#160; MEASURE FactSales[UnitCount]= FactSales[Royalty Value]&lt;/li&gt;    &lt;li&gt;&amp;#160; MEASURE FactSales[Rank]= RANKX(ALL(FactSales[CountryKey]), ROUND(FactSales[UnitCount],2))&lt;/li&gt;    &lt;li&gt;&lt;/li&gt;    &lt;li&gt;EVALUATE&lt;/li&gt;    &lt;li&gt;&amp;#160; CALCULATETABLE (&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; SUMMARIZE(&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FactSales&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,FactSales[CountryKey]&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&amp;quot;ProductSalesValue&amp;quot;,FactSales[UnitCount]&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&amp;quot;Rank&amp;quot;, FactSales[Rank]&lt;/li&gt;    &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; )&lt;/li&gt;    &lt;li&gt; ,DATESBETWEEN(&amp;#39;Date&amp;#39;[CalDate], DATE(2012,1,1), DATE(2012,8,31))&lt;/li&gt;    &lt;li&gt;)&lt;/li&gt;    &lt;li&gt;ORDER BY &lt;/li&gt;    &lt;li&gt;&amp;#160; FactSales[UnitCount] DESC&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Which now correctly outputs: &lt;/p&gt;  &lt;p&gt;   &lt;table cellspacing="0" cellpadding="0"&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;b&gt;FactSales[CountryKey]&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;[ProductSalesValue]&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;b&gt;[Rank]&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;227&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;84074007.25&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;226&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;29928143.25&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;2&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;14&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;10859628.74&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;3&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;39&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;8451588.111&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;4&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;109&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;7964922.769&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;5&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;82&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;6254219.85&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;6&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;75&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;4730390.37&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;7&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;107&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;2466064.97&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;8&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;208&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1904009.18&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;9&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;140&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1862708.961&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;10&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;153&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1311217.35&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;11&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;22&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1207366.72&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;12&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;59&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1182179.95&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;14&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;105&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1196551.61&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;13&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;31&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;1132926.109&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;15&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/table&gt; &lt;/p&gt;  &lt;p&gt;You will notice that all I have done is ROUND the measure in the RANKX function to 2 decimal places, this will stop the calculation engine from ranking over an approximated value, and force it RANK on a decimal with less than 15 significant figures, which will in turn fix the ranking. Further to this, rounding the values prior to it being loaded into the model will also work, just be sure to keep below the 15 Significant figures if possible. &lt;/p&gt;  &lt;p&gt;So in summary, it seems that the calculation engine, when using the RANKX function does not handle the float data type as we may expect. This can be easily rectified by losing some precision on the RANK measure you define. We have been informed that using the Currency function will also fix the problem. I hope this stops others going through the same pain. As and When i get any further information on this issue I will post it up. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5d0dded7-80a5-4923-8950-7b1c36cfc6a1" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/DAX" rel="tag"&gt;DAX&lt;/a&gt;,&lt;a href="http://technorati.com/tags/RANKX" rel="tag"&gt;RANKX&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Tabular" rel="tag"&gt;Tabular&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL+Server+2012" rel="tag"&gt;SQL Server 2012&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Analysis+Services" rel="tag"&gt;Analysis Services&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=10496" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/tags/SQl+Server+2012/default.aspx">SQl Server 2012</category><category domain="http://blogs.adatis.co.uk/blogs/martynbullerwell/archive/tags/DAX/default.aspx">DAX</category></item><item><title>Matching with Master Data Services, DQS and SSIS</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2012/10/11/matching-with-master-data-services-dqs-and-ssis.aspx</link><pubDate>Thu, 11 Oct 2012 16:34:37 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:10491</guid><dc:creator>Jeremy Kashel</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;If you have an MDM requirement to consolidate multiple sources of Master Data together into a single golden record, then you have a few different ways to achieve this on the Microsoft platform. This blog post gives an overview of the different ways that various matching methods can be used in conjunction with Master Data Services for consolidation in Master Data Management, outlining the pros and cons of each option. In summary, the options are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Data Quality Services (DQS) &lt;/li&gt;    &lt;li&gt;SQL Server Integration Services (SSIS) &lt;/li&gt;    &lt;li&gt;Plus Master Data Services itself has a few (not that well known) matching capabilities &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Data Quality Services&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A key requirement in all but the simplest MDM solutions is that the matching/consolidation must be carried out in an automated manner, with a Data Steward alerted to take action if needed (e.g. the matching engine incorrectly matches two customers, the Data Steward opens MDS and corrects this). This scenario would be hard to achieve with DQS, as it’s possible to automate the DQS cleaning, but it’s not possible to automate the DQS matching. This is something that I’ve raised connect issues about, &lt;a href="https://connect.microsoft.com/SQLServer/feedback/details/696741/dqs-access-matching-cleaning-via-web-service-or-other-endpoint" target="_blank"&gt;here&lt;/a&gt; and &lt;a href="https://connect.microsoft.com/SQLServer/feedback/details/695885/dqs-run-matching-policy-from-ssis" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If your data to be matched into MDS is not coming in on a daily basis, and you therefore need to do more ad-hoc matching to produce your golden Master Data records, then DQS could be for you. The MDS Excel Add-in will give you the capability of matching data that you import into Excel with MDS members, harnessing the power of DQS. An overview of how this works is available &lt;a href="http://www.mssqltips.com/sqlservertip/2748/lets-explore-excel-addin-of-master-data-services-of-sql-server-2012--part-2/" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Integration Services&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SSIS has been around for a long time now and, as many of you will know, contains fuzzy matching components. With the right MDS model design, its possible to carry out a batch based fuzzy match between your master records and end up with a mapping between your the records that exist in your source systems and your MDS golden records. The rough conceptual steps to do this are:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Load the new and changed records from the source systems into a staging area. &lt;/li&gt;    &lt;li&gt;Clean and standardise your data. This is actually something that DQS cleaning can help with.&lt;/li&gt;    &lt;li&gt;Query your staging area to get the new records that you want to insert/update into Master Data Services.&lt;/li&gt;    &lt;li&gt;Now the question arises, do we have an exact or close match for these records already in MDS? While the exact matches are easy to deal with, use the SSIS Fuzzy Lookup component to establish whether there are any approximate matches.&lt;/li&gt;    &lt;li&gt;Link the source records to master records (if the match is high enough) using MDS Domain Attributes.&lt;/li&gt;    &lt;li&gt;Carry out appropriate inserts and updates into MDS using the MDS staging tables.&lt;/li&gt;    &lt;li&gt;Ensure that a Data Steward is alerted in some way if necessary (e.g. if the match threshold is below x% confidence). This can be done with Email or MDS Notifications, for example.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;This process can run in batch overnight, with the Data Steward approving or rejecting the matches that SSIS has carried out the following morning. Whilst the above over-simplifies the process and technical work required, hopefully the process makes sense at a high level.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Master Data Services&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Although you cannot feed MDS your source data and get it to automatically carry out matching for you, it does actually contain the raw components in order to do this. By this I mean the MDS database contains an assembly called Microsoft.MasterDataServices.DataQuality, which gives you a number of &lt;a href="http://blog.hoegaerden.be/2011/02/05/finding-similar-strings-with-fuzzy-logic-functions-built-into-mds/" target="_blank"&gt;fuzzy matching T-SQL functions&lt;/a&gt;. These are called from the MDS front end when you carry out some filtering when viewing entities. Using them just for filtering in the front end really isn’t using the functions to their true capability, but thankfully you can use these functions in your own code.&lt;/p&gt;  &lt;p&gt;You can use the MDS T-SQL functions in a similar way to the conceptual SSIS method outlined above, in order to match and eliminate duplicates. In addition, the MDS web API can also be used to carry out a fuzzy match, as mentioned in &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sqlmds/thread/90ba166f-d791-4e07-8fad-389e3c533c89/" target="_blank"&gt;this forum post&lt;/a&gt;. Retrieving match candidates using a web service may be an attractive option if you’re trying to do real time MDM.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Essentially until it’s possible to automate DQS matching, we have a choice between SSIS and the MDS matching functions. The following &lt;a href="http://www.solidq.com/ce-en/News/Pages/Data-Quality-and-Master-Data-Management-with-Microsoft-SQL-Server-2008-R2.aspx" target="_blank"&gt;e-book&lt;/a&gt; gives a very detailed overview of the matches that both are capable of doing. The MDS T-SQL functions are more flexible than the SSIS fuzzy components as you can choose what fuzzy algorithm you want to use, but the SSIS components let you choose between Fuzzy Grouping and Fuzzy Lookup out of the box, without having to write SQL. Although I tend find that both give very good matching results, the MDS T-SQL functions produce slightly better matches in my experience, plus give you the option of trying different algorithms to suit different scenarios.&lt;/p&gt;  &lt;p&gt;It’s also worth mentioning that &lt;a href="http://www.profisee.com/" target="_blank"&gt;Profisee Maestro&lt;/a&gt; (full disclosure, we are a partner) integrates with MDS, offering its own matching algorithms. Maestro also has a front end with the ability to assist with survivorship and approval, which I think is a useful addition to MDS. Speaking of survivorship and approval, there are two options in MDS out-of-the box. The new Master Data Manager web front-end is much improved, but potentially the MDS Excel Add-In allows a bit more flexibility for survivorship carried out by a Data Steward, just due to its natural ability for filling/copying/pasting/filtering.&lt;/p&gt;  &lt;p&gt;So overall, due to the various improvements, Master Data Services is now capable of tackling more complex MDM scenarios than in the 2008 R2 version.&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=10491" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Excel/default.aspx">Excel</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/MDM/default.aspx">MDM</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Master+Data+Services/default.aspx">Master Data Services</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/MDS/default.aspx">MDS</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Master+Data+Management/default.aspx">Master Data Management</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/SSIS/default.aspx">SSIS</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/DQS/default.aspx">DQS</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Data+Quality+Services/default.aspx">Data Quality Services</category></item><item><title>Boot to VHD – Demo Environments and more</title><link>http://blogs.adatis.co.uk/blogs/sachatomey/archive/2012/09/26/boot-to-vhd-demo-environments-and-more.aspx</link><pubDate>Wed, 26 Sep 2012 11:54:00 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:10475</guid><dc:creator>sachatomey</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;A few people have asked me about this recently, so I thought I’d share my approach.&lt;/p&gt;  &lt;p&gt;Creating demo environments, particularly for the MS BI Stack, can be time consuming and a challenge, particularly when you need to take the demo with you and can’t rely on powerful, internal servers and good client internet connectivity.&lt;/p&gt;  &lt;h2&gt;&lt;font color="#004080"&gt;A bit of history&lt;/font&gt;&lt;/h2&gt;  &lt;p&gt;Initially we used to have a dedicated, decently specced, Demo laptop that would be installed with all the goodies that we would need to demo. This worked until the demo needed to be in two places at once, or you needed to carry around your day-to-day laptop too.&lt;/p&gt;  &lt;p&gt;The solution was to use the demo environment as our day to day workstation but it was massive overkill to have full blown Windows Server running SharePoint with multiple instances of SQL Server etc. and, unless you had a high spec machine, everything was a little laggy.&lt;/p&gt;  &lt;p&gt;The next approach was to carry around a couple of laptop hard disks that you’d swap in and out depending on whether you were demoing or working. This worked well for a good while but did prevent timely demos (no screwdriver, no demo).&lt;/p&gt;  &lt;p&gt;Then we entertained VirtualBox and Hyper-V and other virtualisation tech to run Virtual environments – this was all well and good but the primary downfall of this approach is the fact you need a really high spec machine to run both the host and the virtual environment or performance is going to be a major issue and for demos, you want performance to be good, as good as possible.&lt;/p&gt;  &lt;p&gt;Then we discovered Boot to VHD. I’m not sure when this was first possible and I definitely believe we were late to the game but we’ve been using it for around 12 months, long enough to prove it to be a solid approach to creating and running [not only] demo environments.&lt;/p&gt;  &lt;h2&gt;&lt;font color="#004080"&gt;Boot to VHD&lt;/font&gt;&lt;/h2&gt;  &lt;p&gt;The concept is easy, and “does what it says on the tin”. You create, or acquire a VHD and configure your laptop to Boot directly to the VHD.&lt;/p&gt;  &lt;h3&gt;&lt;font color="#004080"&gt;Advantages&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;1) The VHD can use all the host resources. Under traditional virtualisation approaches you need to split memory and/or processors which impacts performance. So on an 8GB, 2 proc laptop traditionally you would have 4GB, 1 proc for the host and 4GB, 1 proc for the virtual environment. With Boot to VHD the virtual environment can utilise the full 8GB and both processors.&lt;/p&gt;  &lt;p&gt;2) It’s flexible. I have a chunky external HHD containing several different virtual environments for different purposes. I can backup, swap out, replace and roll-back environments in the time it takes to copy a VHD from local to external or vice-versa. You can even share demo environments with you colleagues.&lt;/p&gt;  &lt;p&gt;3) You always have a demo environment to hand. All it takes is a reboot to load up the appropriate environment for those spontaneous demo opportunities.&lt;/p&gt;  &lt;h3&gt;&lt;font color="#004080"&gt;Disadvantages&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;1) You do need to be careful regarding disk space usage and be very disciplined to ensure you always have enough disk space available. If you are running a number of large environments there will be an element of maintenance to ensure everything always fits.&lt;/p&gt;  &lt;p&gt;2) Without resorting to a hybrid approach, you can’t demo a distributed system working together.&lt;/p&gt;  &lt;h2&gt;&lt;font color="#004080"&gt;Setup&lt;/font&gt;&lt;/h2&gt;  &lt;p&gt;So to make use of Boot to VHD, we’ll assume we already have a VHD available and ready for booting to. These can either be created manually, acquired from your internal infrastructure team, or from other third-parties.&lt;/p&gt;  &lt;p&gt;When creating them manually I ALWAYS create “Dynamically Expanding” virtual hard disks. This way, you can actually store more VHD environments on your laptop than you would otherwise.&lt;/p&gt;  &lt;p&gt;Although dynamically expanding disks allow you to store more environments, you will still need to ensure you have enough disk space for the disk to expand into as this will be required at the time of boot up. So, if your VHD is set to a 100GB dynamically expanding disk, (it might only be a 20GB file), but when it’s booted up, it will expand to 100GB, so you will need that space on your hard disk or the boot up will fail.&lt;/p&gt;  &lt;p&gt;1) Copy the VHD to your laptop to a suitable location e.g. C:\VHD&lt;/p&gt;  &lt;p&gt;2) Create a new Boot entry   &lt;br /&gt;Run the following at a command prompt as an Administrator:&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;bcdedit /copy {current} /d &amp;quot;&lt;b&gt;&lt;font color="#ff0000"&gt;My New VHD Option&lt;/font&gt;&lt;/b&gt;&amp;quot;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Be sure to update the label to something to help you identify the VHD – this label will appear on the boot menu when you reboot.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/sachatomey/image_031495C2.png"&gt;&lt;img style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/sachatomey/image_thumb_34A00357.png" width="606" height="127" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Note the new GUID that has been created.&lt;/p&gt;  &lt;p&gt;3) Using the GUID created for you in the previous step and the location of the VHD, run the following three commands, one after the other&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;bcdedit /set {&lt;font color="#ff0000"&gt;23dd42c1-f397-11e1-9602-923139648459&lt;/font&gt;} device vhd=[&lt;font color="#ff0000"&gt;C&lt;/font&gt;:]&lt;font color="#ff0000"&gt;\VHD\AdatisBI.vhd&lt;/font&gt;      &lt;br /&gt;bcdedit /set {&lt;font color="#ff0000"&gt;23dd42c1-f397-11e1-9602-923139648459&lt;/font&gt;} osdevice vhd=[&lt;font color="#ff0000"&gt;C&lt;/font&gt;:]&lt;font color="#ff0000"&gt;\VHD\AdatisBI.vhd&lt;/font&gt;      &lt;br /&gt;bcdedit /set {&lt;font color="#ff0000"&gt;23dd42c1-f397-11e1-9602-923139648459&lt;/font&gt;} detecthal on&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Note the square brackets around the drive letters, these are required. If you have spaces in your path, or filename, you’ll need to wrap the path, excluding the drive letter, in quotes.e.g.&lt;/p&gt;  &lt;p&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;..vhd=[&lt;font color="#ff0000"&gt;C&lt;/font&gt;:]&lt;font color="#ff0000"&gt;&amp;quot;\VHD Path\AdatisBI.vhd&lt;b&gt;&amp;quot;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/sachatomey/clip_image002_3433D062.jpg"&gt;&lt;img style="border:0px currentColor;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.adatis.co.uk/blogs/sachatomey/clip_image002_thumb_48B91FE0.jpg" width="606" height="255" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That’s all there is to it. Reboot and you should be presented with a new Boot option and away you go.&lt;/p&gt;  &lt;h2&gt;&lt;font color="#004080"&gt;Troubleshooting&lt;/font&gt;&lt;/h2&gt;  &lt;p&gt;When it doesn’t work you generally get a BSOD on boot up. To date I’ve identified two reasons for this:&lt;/p&gt;  &lt;p&gt;1) You don’t have enough disk space for the VHD to expand (The BSOD actually does inform you of this)&lt;/p&gt;  &lt;p&gt;2) You may need to change the SATA Mode configuration in the BIOS. Depending on how and where the VHD was created you may need to change the setting to either ATA or AHCI. If that works, you’ll have to reverse the change to reboot into your physical installation. &lt;/p&gt;  &lt;p&gt;I’ve yet to create a portable (i.e. sharable amongst colleagues) VHD for Windows 8. I have successfully created a Windows 8 VHD but it only currently works on the laptop it was created on, this is unlike any other VHD I have created in the past. If I work out a fix, I will update this post.&lt;/p&gt;  &lt;h2&gt;&lt;font color="#004080"&gt;Additional Information&lt;/font&gt;&lt;/h2&gt;  &lt;p&gt;There are a couple of extra benefits that are worth pointing out.&lt;/p&gt;  &lt;p&gt;1) Once you’ve booted to VHD, your original, physical OS installation drive is reallocated, normally to drive D (Your VHD will assume C drive). This allows you to share files between environments, or as I do, place my &lt;a href="https://apps.live.com/skydrive/app/9a65e47d-606a-4816-a246-90f54bf7a3ea"&gt;SkyDrive&lt;/a&gt; folder on an accessible location on the original, physical drive. This allows me to have SkyDrive installed on VHDs but only have a single copy of the contents on my HDD.&lt;/p&gt;  &lt;p&gt;2) The reverse is true too. You can attach a VHD (from the physical install, or from within another VHD) using the Disk Management tool to access, move or copy files between environments. The disk is expanded at this point so you will need enough disk space to accommodate it.&lt;/p&gt;  &lt;p&gt;3) If disk space is a premium, you can shrink the VHD using a tool such as &lt;a href="http://vmtoolkit.com/files/folders/converters/entry87.aspx"&gt;VHD Resizer&lt;/a&gt;. It doesn’t resize the physical VHD file, but allows you to reduce the size of the virtual hard disk. It also allows you to convert from Fixed to Dynamic disks and vice-versa.&lt;/p&gt;  &lt;p&gt;4) You can remove boot entries with the following (or you can use the System Configuration tool):&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;bcdedit /delete {&lt;font color="#ff0000"&gt;GUID&lt;/font&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;5) I have found this approach so reliable my day-to-day Windows 7 installation is a VHD. I have not noticed any impact to performance. The only thing that I have noticed is that you cannot determine a “Windows Experience Index” when running a VHD – but I can live with that &lt;img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.adatis.co.uk/blogs/sachatomey/wlEmoticon-smile_1A5F9A33.png" /&gt;&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=10475" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/sachatomey/archive/tags/Utilities/default.aspx">Utilities</category><category domain="http://blogs.adatis.co.uk/blogs/sachatomey/archive/tags/Business+Intelligence/default.aspx">Business Intelligence</category><category domain="http://blogs.adatis.co.uk/blogs/sachatomey/archive/tags/Licensing/default.aspx">Licensing</category><category domain="http://blogs.adatis.co.uk/blogs/sachatomey/archive/tags/Demo/default.aspx">Demo</category><category domain="http://blogs.adatis.co.uk/blogs/sachatomey/archive/tags/Boot/default.aspx">Boot</category><category domain="http://blogs.adatis.co.uk/blogs/sachatomey/archive/tags/Virtualisation/default.aspx">Virtualisation</category><category domain="http://blogs.adatis.co.uk/blogs/sachatomey/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.adatis.co.uk/blogs/sachatomey/archive/tags/VHD/default.aspx">VHD</category></item><item><title>Analysis Services Member Properties and Excel</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2012/09/18/analysis-services-member-properties-and-excel.aspx</link><pubDate>Tue, 18 Sep 2012 16:40:15 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:10464</guid><dc:creator>Jeremy Kashel</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;When working with users who are browsing a cube using Excel 2010, a common requirement that I find is that the users want to create tabular or grid based reports. E.g. “I have a list of currencies, I want to display the currency code in an adjacent column”. Or “Here are my account codes, I want to also see the account type”.&lt;/p&gt;  &lt;p&gt;The common way that I see users attempt this is to stack attribute hierarchies on top of one another. For example, using Adventure Works, to get the currency names and codes together, I can stack the two attribute hierarchies:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_366981CE.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_164E7511.png" width="171" height="66" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This produces the following report:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_2F4A4556.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_2F4A4556.png" width="244" height="156" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Not exactly what we want – ideally we want the currency codes in separate columns, on the same line as the name.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;An Alternative Approach&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;One well known way to achieve this layout is to right click on the relevant member and &lt;a href="http://office.microsoft.com/en-us/excel-help/display-or-hide-screentips-and-properties-in-a-pivottable-or-pivotchart-report-HA010177752.aspx" target="_blank"&gt;display its member properties&lt;/a&gt;, whereas another is to &lt;a href="http://office.microsoft.com/en-gb/excel-help/change-the-layout-and-format-of-a-pivottable-report-HP010342424.aspx#_Toc273370200" target="_blank"&gt;set the layout to Tabular Form&lt;/a&gt;. I tend to prefer the member properties route as I think it produces slightly better reports, so I’ll be covering a simple member properties design tip shortly. First of all, here’s the sort of report that I’m able to create using member properties:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_4846159B.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_76336853.png" width="329" height="93" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’m able to do this because the Adventure Works Source Currency Code Attribute Hierarchy has the Source Currency (names) as a member property. Therefore, I get the following option when I right click on the currency code:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_0F2F3899.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_0F2F3899.png" width="368" height="72" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Displaying member properties will only work if the attribute relationships are set up correctly. The reason that I’m able to see the member property ‘Source Currency’ is because of the following attribute relationship:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_282B08DE.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_282B08DE.png" width="200" height="77" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;However, if we just display the currency name, using the Source Currency attribute hierarchy and then try and right click to see the currency code, we’ll unfortunately see nothing in the ‘Show Properties in Report’ submenu. This is because the currency name is a property of the code, rather than the other way around. I’d argue that for a user it’s intuitive to get the name from the code, or vice versa, as they sit at the same level. With a few simple changes we can achieve this, essentially by adding an extra attribute to the dimension…&lt;/p&gt;  &lt;p&gt;Within the dimension editor in BIDS, the first step is to add the new attribute. In this case it should be based on the Currency Code column that is, of course, already in use. That doesn’t matter, we want to use it twice. Therefore, I’ve created a new attribute called Currency Code and have set AttributeHierarchyEnabled = False, as there’s no need for anyone to browse this attribute. Now onto the all important attribute relationships. The attribute hierarchy that contains the names is called Source Currency. As it’s not possible to get the currency codes by right clicking on this attribute hierarchy, Source Currency is the attribute needs to be related to the new Currency Code attribute:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_4126D923.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_6F142BDB.png" width="327" height="56" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Finally, the end result for the user is that they now get the ability to easily get access to the currency codes by right clicking on the names:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_1D017E94.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_080FFC21.png" width="387" height="315" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=10464" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Analysis+Services/default.aspx">Analysis Services</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Excel/default.aspx">Excel</category></item><item><title>Power View in SQL Server 2012 RTM</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2012/03/28/power-view-in-sql-server-2012-rtm.aspx</link><pubDate>Wed, 28 Mar 2012 13:13:01 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:10328</guid><dc:creator>Jeremy Kashel</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Power View has been given a couple of small changes from RC0 to the RTM release:&lt;/p&gt;  &lt;p&gt;Firstly, you can now choose the colour of the various visualisations via the Themes section, which you’ll find on the new Styles ribbon tab:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_58C08984.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_0AB82A0F.png" width="458" height="99" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This will allow you to change the colour for a slicer, table or card, whereas for a chart it will set the palette that gets used for the chart series. Surprisingly it seems to set the theme globally, rather than allowing you to set the colour/palette for a single object:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_6692CF7F.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_7F8E9FC4.png" width="409" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The other change that I’ve noticed is that the Card visualisation now has a Style option on the ribbon:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_6A9D1D51.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_188A700A.png" width="231" height="128" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This allows the cards to be displayed without normal coloured background, with a much larger font. So potentially useful for highlighting key numeric facts:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_4677C2C2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_5F739307.png" width="272" height="364" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I do really like Power View, in particular the clean look &amp;amp; feel, fast performance, export to PowerPoint and animations to name a few. However, even though RC0 added a lot of new features, I think it’s still missing some of the functionality offered by other reporting tools. I know that it’s marketed as a data visualisation tool rather than a reporting tool, but those lines will become a bit blurred for users. This is where Connect comes in…&lt;/p&gt;  &lt;p&gt;One connect suggestion that I’ve created is to &lt;a href="https://connect.microsoft.com/SQLServer/feedback/details/733379/power-view-drill-down-or-across-in-charts" target="_blank"&gt;allow drill down in Power View charts&lt;/a&gt;. If you’ve used Power View to perhaps spot a trend or spike in the data, then it makes sense for you to manipulate the view to find the root cause, which I think drill down would help with. Other suggestions that I think would be useful are &lt;a href="https://connect.microsoft.com/SQLServer/feedback/details/713781/heat-maps-would-be-great-in-power-view" target="_blank"&gt;heat maps&lt;/a&gt; and allowing Power View to &lt;a href="https://connect.microsoft.com/SQLServer/feedback/details/713196/enable-power-view-to-access-multidimensional-models" target="_blank"&gt;access multidimensional models&lt;/a&gt;. Please vote on Connect if you agree!&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=10328" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/SQL+Server+2012/default.aspx">SQL Server 2012</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Power+View/default.aspx">Power View</category></item><item><title>HTML Links Embedded within Text (SSRS 2008R2)</title><link>http://blogs.adatis.co.uk/blogs/philip/archive/2012/03/23/html-links-embedded-within-text-ssrs-2008r2.aspx</link><pubDate>Fri, 23 Mar 2012 16:59:47 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:10322</guid><dc:creator>PhilKibaki</dc:creator><slash:comments>0</slash:comments><description>&lt;h1 style="line-height:16pt;margin:24pt 0cm 0pt;"&gt;&lt;font face="Cambria"&gt;&lt;font style="font-size:13pt;" color="#000000"&gt;Overview&lt;/font&gt;&lt;/font&gt;&lt;/h1&gt;  &lt;p style="line-height:13pt;margin:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;So, old news, from SSRS 2008 onwards, Reporting Services can render HTML Tags, although there are some limitations to the tags that can be used:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div style="line-height:13pt;margin:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;Hyperlink tag:&lt;font color="#ff0000"&gt; &amp;lt;A href&amp;gt;&lt;/font&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="line-height:13pt;margin:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;Text formatting tags:&lt;font color="#ff0000"&gt; &amp;lt;S&amp;gt;,&amp;lt;B&amp;gt;, &amp;lt;I&amp;gt;, &amp;lt;U&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="line-height:13pt;margin:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;List handling tags:&lt;font color="#ff0000"&gt; &amp;lt;OL&amp;gt;, &amp;lt;LI&amp;gt;,&amp;lt;UL&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="line-height:13pt;margin:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;Font tag: &lt;font color="#ff0000"&gt;&amp;lt;FONT&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div style="line-height:13pt;margin:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;Header, style and block tags: &lt;font color="#ff0000"&gt;&amp;lt;SPAN&amp;gt;,&amp;lt;H{n}&amp;gt;,&amp;lt;LI&amp;gt;, &amp;lt;DIV&amp;gt;, &amp;lt;P&amp;gt;,&lt;span style="mso-spacerun:yes;"&gt;&amp;#160; &lt;/span&gt;&amp;lt;HN&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p style="line-height:13pt;margin:0cm 0cm 10pt;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;I’ll be talking about using the hyperlink tags to drill through or link back to the same report within a lump of text return by a dataset.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height:13pt;margin:0cm 0cm 10pt;tab-stops:92.15pt;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;Say your dataset returns some summary text that describes the data in the report, like “Sales for the Accessories Category amounted to £#,###.## putting it at around the 11th percentile” and you would like to drill through on the Keyword “&lt;u&gt;Category&lt;/u&gt;” only and not the whole text. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height:13pt;margin:0cm 0cm 10pt;tab-stops:92.15pt;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;So you want&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div style="line-height:13pt;margin:0cm 0cm 10pt;tab-stops:92.15pt;" class="MsoNormal"&gt;&lt;span style="line-height:12pt;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:10pt;"&gt;Sales for the Accessories &lt;u&gt;&lt;span style="color:;"&gt;&lt;font color="#0033cc"&gt;Category&lt;/font&gt;&lt;/span&gt;&lt;/u&gt; amounted to £#,###.## putting it at around the 11th percentile&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p style="line-height:13pt;margin:0cm 0cm 10pt;tab-stops:92.15pt;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;Instead of&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div style="line-height:13pt;margin:0cm 0cm 10pt;tab-stops:92.15pt;" class="MsoNormal"&gt;&lt;u&gt;&lt;span style="line-height:12pt;color:;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:10pt;" color="#0033cc"&gt;Sales for the Accessories Category amounted to £#,###.## putting it at around the 11th percentile&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/u&gt;&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p style="line-height:13pt;margin:0cm 0cm 10pt;tab-stops:92.15pt;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;From a lump of text returned by a dataset.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;h2 style="line-height:15pt;margin:10pt 0cm 0pt;"&gt;   &lt;br /&gt;&lt;font face="Cambria"&gt;&lt;font style="font-size:13pt;" color="#000000"&gt;Solution&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;  &lt;p style="line-height:15pt;margin:10pt 0cm 0pt;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;We can handle this kind of request by generating the hyperlink to the report you would like to drill through in the dataset. This is as opposed to using textbox actions in the report. There are a number of advantages of handling this in the dataset&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div style="line-height:13pt;page-break-after:avoid;text-indent:-18pt;margin:0cm 0cm 10pt 36pt;mso-list:l0 level1 lfo3;tab-stops:92.15pt;" class="MsoListParagraph"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;Turn on the HTML markup type in the place holder properties for the &lt;i style="mso-bidi-font-style:normal;"&gt;Summary_Text&lt;/i&gt; Field.             &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;        &lt;br /&gt;&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt; &lt;a href="http://blogs.adatis.co.uk/blogs/philip/image_144FDCAD.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/philip/image_thumb_7434CFEF.png" width="500" height="337" /&gt;&lt;/a&gt;   &lt;br /&gt;&lt;span style="mso-fareast-language:en-gb;mso-no-proof:yes;"&gt;&lt;/span&gt;  &lt;p style="margin:0cm 0cm 10pt;" class="MsoCaption" align="center"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;" color="#4f81bd"&gt;&lt;strong&gt;HTML Markup Type Setting          &lt;br /&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;    &lt;br style="page-break-before:always;mso-special-character:line-break;" /&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div style="line-height:13pt;page-break-after:avoid;text-indent:-18pt;margin:0cm 0cm 0pt 36pt;mso-list:l0 level1 lfo3;tab-stops:92.15pt;" class="MsoListParagraphCxSpFirst"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;Now, you need to build the link to the report you are drilling to, this is best done in the report to keep it dynamic, therefore, deploying the report to a different server or folder won’t mean you have to change any code as you are going to use the global parameters available in SSRS.            &lt;br /&gt;            &lt;br /&gt;Create a hidden parameter that will hold the expression below. Alternatively, you can have this expression directly in the dataset parameter, just create a dataset parameter and in the value expression add this hyperlink expression.             &lt;br /&gt;            &lt;br /&gt;Pass this in to your dataset to complete it with the missing parameters; in this case Category Name is missing.&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p style="line-height:13pt;page-break-after:avoid;margin:0cm 0cm 10pt 36pt;tab-stops:92.15pt;" class="MsoListParagraphCxSpLast"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="line-height:13pt;page-break-after:avoid;margin:0cm 0cm 10pt 36pt;tab-stops:92.15pt;" class="MsoListParagraphCxSpLast" align="center"&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/philip/Blog2_3B1DF2ED.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Blog2" border="0" alt="Blog2" src="http://blogs.adatis.co.uk/blogs/philip/Blog2_thumb_690B45A5.png" width="506" height="226" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;/p&gt; &lt;span style="mso-fareast-language:en-gb;mso-no-proof:yes;"&gt;&lt;/span&gt;  &lt;p style="margin:0cm 0cm 10pt;" class="MsoCaption" align="center"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;" color="#4f81bd"&gt;&lt;strong&gt;         &lt;br /&gt;HTML Link Expression           &lt;br /&gt;          &lt;br /&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height:13pt;margin:0cm 0cm 0pt 36pt;tab-stops:92.15pt;" class="MsoListParagraphCxSpFirst" align="center"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;&amp;#160;&lt;a href="http://blogs.adatis.co.uk/blogs/philip/Blog1_1B02E630.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Blog1" border="0" alt="Blog1" src="http://blogs.adatis.co.uk/blogs/philip/Blog1_thumb_61EC092D.png" width="638" height="376" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height:13pt;page-break-after:avoid;margin:0cm 0cm 10pt 36pt;tab-stops:92.15pt;" class="MsoListParagraphCxSpLast"&gt;&lt;span style="mso-fareast-language:en-gb;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin:0cm 0cm 10pt;" class="MsoCaption" align="center"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;" color="#4f81bd"&gt;&lt;strong&gt;HTML Expression in Dataset Parameters&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height:13pt;margin:0cm 0cm 0pt 36pt;tab-stops:92.15pt;" class="MsoListParagraphCxSpFirst"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height:13pt;margin:0cm 0cm 10pt 36pt;tab-stops:92.15pt;" class="MsoListParagraphCxSpLast"&gt;   &lt;br /&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;The incomplete generated link being passed to the dataset will look something like this:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height:13pt;margin:0cm 0cm 10pt 18pt;tab-stops:92.15pt;" class="MsoNormal"&gt;&lt;span style="mso-fareast-language:en-gb;mso-no-proof:yes;"&gt;&lt;/span&gt;    &lt;br /&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/philip/image_7AE7D972.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/philip/image_thumb_28D52C2B.png" width="611" height="29" /&gt;&lt;/a&gt;     &lt;br style="mso-special-character:line-break;" /&gt;    &lt;br style="mso-special-character:line-break;" /&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div style="line-height:13pt;page-break-after:avoid;text-indent:-18pt;margin:0cm 0cm 10pt 36pt;mso-list:l0 level1 lfo3;tab-stops:92.15pt;" class="MsoListParagraph"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;In your dataset, complete your link with the missing parameter. &lt;/font&gt;&lt;/font&gt;        &lt;br /&gt;        &lt;br /&gt;&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt; &lt;span style="mso-fareast-language:en-gb;mso-no-proof:yes;"&gt;&lt;/span&gt;  &lt;p style="margin:0cm 0cm 10pt;" class="MsoCaption" align="center"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;" color="#4f81bd"&gt;&lt;strong&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/philip/Blog3_41D0FC70.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Blog3" border="0" alt="Blog3" src="http://blogs.adatis.co.uk/blogs/philip/Blog3_thumb_5ACCCCB5.png" width="636" height="234" /&gt;&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;Complete your HTML Expression and Create Hyperlink&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height:13pt;margin:0cm 0cm 0pt 36pt;tab-stops:92.15pt;" class="MsoListParagraphCxSpFirst"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;It may be worth pointing out at this stage you can also add other HTML tags to edit the look of the text. You can add bolding to the text – as in my example above, or even have some conditional formatting to colour code the text. For example green for high percentiles etc.&lt;span style="mso-spacerun:yes;"&gt;&amp;#160; &lt;/span&gt;(see the list of HTML tags available at the beginning of this post).&lt;/font&gt;&lt;/font&gt;     &lt;br style="mso-special-character:line-break;" /&gt;    &lt;br style="mso-special-character:line-break;" /&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div style="line-height:13pt;page-break-after:avoid;text-indent:-18pt;margin:0cm 0cm 10pt 36pt;mso-list:l0 level1 lfo3;tab-stops:92.15pt;" class="MsoListParagraphCxSpLast"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;For this example, I am just linking back into the same report and passing in the category that has been clicked. You can of course link to a different report/Drill through.            &lt;br /&gt;You end up with something like this&lt;/font&gt;&lt;/font&gt;         &lt;br /&gt;        &lt;br /&gt;&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt; &lt;span style="mso-fareast-language:en-gb;mso-no-proof:yes;"&gt;&lt;/span&gt;  &lt;p style="margin:0cm 0cm 10pt;" class="MsoCaption" align="center"&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/philip/image_73C89CFA.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/philip/image_thumb_3AB1BFF8.png" width="552" height="440" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style="margin:0cm 0cm 10pt;" class="MsoCaption" align="center"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:9pt;" color="#4f81bd"&gt;&lt;strong&gt;How it will look&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height:13pt;margin:0cm 0cm 10pt 36pt;tab-stops:92.15pt;" class="MsoListParagraph"&gt;   &lt;br /&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size:11pt;"&gt;You can find the example RDL &lt;a href="http://blogs.adatis.co.uk/files/folders/10325/download.aspx"&gt;here&lt;/a&gt;. I used the AdventureWorksDW2008R2 Database.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=10322" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/philip/archive/tags/SSRS/default.aspx">SSRS</category><category domain="http://blogs.adatis.co.uk/blogs/philip/archive/tags/SSRS+HTML/default.aspx">SSRS HTML</category><category domain="http://blogs.adatis.co.uk/blogs/philip/archive/tags/Reporting+Services/default.aspx">Reporting Services</category></item><item><title>DQS Matching Vs SSIS Fuzzy Grouping and Lookup</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2012/03/23/dqs-matching-vs-ssis-fuzzy-grouping-and-lookup.aspx</link><pubDate>Fri, 23 Mar 2012 11:06:59 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:10320</guid><dc:creator>Jeremy Kashel</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;When the term fuzzy matching comes up in the Microsoft world, it’s natural for anyone who’s used the BI stack to think of SQL Server Integration Services (SSIS), due to the fact that it has both Fuzzy Grouping and Fuzzy Matching components. Therefore, when using the matching in Data Quality Services (DQS) the other day, I thought it might be worth contrasting the matching capabilities in the two products.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The &lt;a href="http://msdn.microsoft.com/en-us/library/ms141764.aspx" target="_blank"&gt;SSIS Fuzzy Grouping transformation&lt;/a&gt; is typically used on a set of data containing duplicates, as it will operate across all of the rows, grouping similar rows together based on fuzzy comparisons, with a view to eliminating duplicates. In contrast, the &lt;a href="http://msdn.microsoft.com/en-us/library/ms137786.aspx" target="_blank"&gt;Fuzzy Lookup transformation&lt;/a&gt; takes a value in the SSIS pipeline and uses fuzzy matching to match the input value against a set of clean reference data in a database.&lt;/p&gt;  &lt;p&gt;The matching in DQS takes a set of data and groups the data into clusters, based on a number of rules and other factors, again with a view to removing duplicates. It’s therefore only directly comparable against the SSIS Fuzzy Grouping, rather than the Fuzzy Lookup.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Test Scenario&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;For the purposes of this blog post, I’ve got a sample query from AdventureWorksDW, taking data from the DimCustomer table. I’ve unioned all that data with a few sample records that contain typos. E.g. I’ve got &amp;#39;Pamela Fernndez&amp;#39; misspelt for one customer and &amp;#39;4610 Pinto Rd&amp;#39; instead of ‘Road’ for another. I’m going to attempt to de-duplicate data in SSIS first and then do the same thing in DQS to see if there is any difference.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SSIS Fuzzy Grouping&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;As shown below, I’ve just got a very simple OLE DB source passing some data into a Fuzzy Grouping, then I’m going to examine the data via a data viewer:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/Control-flow_3F0A6550.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Control flow" border="0" alt="Control flow" src="http://blogs.adatis.co.uk/blogs/jeremykashel/Control-flow_thumb_33E0DB06.png" width="168" height="198" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The columns that I’m passing into the Fuzzy Grouping for the Customers are Full Name, Address Line 1, Gender and City just for the purposes of this blog post. I’ve configured the Fuzzy Grouping transform to carry out Fuzzy Matching on Address Line 1 and Full Name, as these are the most inconsistent (intentionally) across my made up data. I’ve also dropped the threshold right down to 0.40 to see a full range of matches that we may or may not get:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_4CDCAB4B.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_7AC9FE03.png" width="592" height="58" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’ve filtered the data for customers with a surname of Fernandez or a first name of Pamela, which includes two made up records. When I run the package, the data viewer produces the following results:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/Data-Viewer_78A4D73C.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="Data Viewer" border="0" alt="Data Viewer" src="http://blogs.adatis.co.uk/blogs/jeremykashel/Data-Viewer_thumb_3F8DFA3A.png" width="726" height="135" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The _score column has a high score of 0.8245935, which is based on the similarity scores of FullName and AddressLine1. There are 3 records included in the cluster, including someone called ‘P Fernandez’ who is male. Although that’s been matched, it’s only because I decreased the threshold, plus it can easily be excluded by adding an exact match for Gender, as shown below:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/Gender_2CC19E8E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Gender" border="0" alt="Gender" src="http://blogs.adatis.co.uk/blogs/jeremykashel/Gender_thumb_5AAEF146.png" width="488" height="105" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;DQS Matching&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;So overall SSIS copes well with the test scenario, how does DQS compare?&lt;/p&gt;  &lt;p&gt;After &lt;a href="http://msdn.microsoft.com/en-us/library/hh510400(v=sql.110).aspx" target="_blank"&gt;creating a knowledge base&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/hh510413(v=sql.110).aspx" target="_blank"&gt;creating domains&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/hh510398(v=sql.110).aspx" target="_blank"&gt;carrying out knowledge discovery&lt;/a&gt;, it’s possible to use DQS to create a Matching Policy. The &lt;a href="http://msdn.microsoft.com/en-us/library/hh270290(v=sql.110).aspx" target="_blank"&gt;Matching Policy&lt;/a&gt; involves building a number of rules that determine how the data matches. The starting point in creating a matching rule is determining which domains you want to match on and whether they should be matched using the fuzzy algorithms (similar) or matched exactly:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/Rule-editor_45BD6ED3.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Rule editor" border="0" alt="Rule editor" src="http://blogs.adatis.co.uk/blogs/jeremykashel/Rule-editor_thumb_73AAC18B.png" width="509" height="116" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So not too dissimilar to SSIS. You then choose to give each domain a percentage weight, which must add up to 100%. For example, if you give Full Name a weight 30% and, when run, its match score is 61% accuracy, then you have Address Line 1 at a 70% weight and a 45% accuracy, then an overall match score for a row will be (0.3 * 0.61) + (0.7 * 0.45) = 49.8% match score.&lt;/p&gt;  &lt;p&gt;Starting off with a 50% weight on the two domains, I get the following results when operating on the same data:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/dqs-clusters_0CA691D1.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="dqs clusters" border="0" alt="dqs clusters" src="http://blogs.adatis.co.uk/blogs/jeremykashel/dqs-clusters_thumb_3A93E489.png" width="702" height="181" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As with SSIS, it hasn’t got it quite right, but using the Gender domain will help. What I quite like in DQS is that I can flag a domain as being a pre-requisite:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_25A26216.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_538FB4CE.png" width="569" height="118" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Flagging a domain as a pre-requisite means that the domain will be used to eliminate matches, but will not contribute to the matching score. If I wanted it to contribute to the matching score I would just have to uncheck pre-requisite and give it a weight. Running the matching again gives the following results:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/dqs-results-2_3E9E325B.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="dqs results 2" border="0" alt="dqs results 2" src="http://blogs.adatis.co.uk/blogs/jeremykashel/dqs-results-2_thumb_6C8B8513.png" width="694" height="138" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So the duplicate is correctly mapped with a score of 75%. Drilling down on the match was achieved is quite nice in DQS also:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_1A78D7CC.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_3374A811.png" width="481" height="140" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This brings me to an interesting observation about the matching. I originally had my dummy record with a value of “3 Pierr Demoulainn” for the address. So in addition to having a typo in the second name and missing the word “Rue”, my other test also missed the second e out of the word “Pierre”. If I run my test data with these values, I get no matches at all. The lack of the second e in “Pierr” seems to have made all the difference. I &lt;em&gt;can&lt;/em&gt; get it to match if I give a lot of weighting to Full Name. If I do this, we see the following results:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/drill-down-2_1E83259E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="drill down 2" border="0" alt="drill down 2" src="http://blogs.adatis.co.uk/blogs/jeremykashel/drill-down-2_thumb_4C707856.png" width="496" height="145" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Address Line 1 has been given a score of 0%. Making the same change to my test data and then running in SSIS gives different results. The similarity for the address drops from 0.81 to 0.75, but it certainly doesn’t drop to zero. Although it will depend massively on your own data, the matching in DQS seems a bit more stringent. This can be mitigated by using more domains for the matching, rather than the simple 2 or 3 domains that I’ve used. To back that statement up, using a &lt;a href="http://msdn.microsoft.com/en-us/library/hh510399(v=sql.110).aspx" target="_blank"&gt;composite domain&lt;/a&gt; on both Address Line 1 and City does yield a strong match (71%) for the same data.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The rule based matching in DQS gives a lot of flexibility on how to weight matching across different domains. Coupled with the knowledge base components that interact with the matching, such as cleaning and Term-Based Relations, DQS has more features specifically aimed at matching than SSIS. It all depends on what sort of data you’re working with, but in theory, as you maintain the knowledge base over time, DQS should give you strong matches based on the knowledge you’ve given it.&lt;/p&gt;  &lt;p&gt;However, there are some drawbacks – it’s a shame that the matching can’t be automated (&lt;a href="http://connect.microsoft.com/SQLServer/feedback/details/695885/dqs-run-matching-policy-from-ssis" target="_blank"&gt;please vote for my connect suggestion if you agree&lt;/a&gt;). SSIS by its very nature can be automated, meaning the matching in SSIS will be more suitable for a lot of implementations. Secondly, I’d like to be able to match external records against correct values already in the knowledge base, rather than just doing a fuzzy grouping on the external records. I’m a bit surprised DQS can’t do a fuzzy lookup, maybe this will change in V2. Finally, as I’ve shown above, some of the matching results are a little unexpected, whereas in SSIS they were good pretty much straight away. To be fair to DQS this could probably be mitigated with a better choice of matching fields and also running cleaning against a fully populated knowledge base beforehand.&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=10320" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/SSIS/default.aspx">SSIS</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/DQS/default.aspx">DQS</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Data+Quality+Services/default.aspx">Data Quality Services</category></item><item><title>Mean, Median and Mode in MDX</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2012/03/19/mean-median-and-mode-in-mdx.aspx</link><pubDate>Mon, 19 Mar 2012 11:25:28 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:10316</guid><dc:creator>Jeremy Kashel</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;I recently delivered an Analysis Services training course to a client who were a bit surprised to learn that the standard list of Aggregation Functions for an Analysis Services measure doesn’t include Mean, Median and Mode. My answer was of course that all three can delivered using MDX, so I thought it might be a good blog post to show how it’s done.&lt;/p&gt;  &lt;p&gt;Before I begin, just a quick refresher for anyone who needs it, the &lt;a href="http://www.purplemath.com/modules/meanmode.htm" target="_blank"&gt;following article&lt;/a&gt; seems to be a good reference on the difference between Mean, Median and Mode. Essentially Mean is the average, Median is the middle value, whereas Mode is the value that occurs the most.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Mean and Median&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The Mean and the Median are both relatively easy to do in MDX as there are built-in functions for both AVG() and Median(). As they’re well documented &lt;a href="http://msdn.microsoft.com/en-us/library/ms146067.aspx" target="_blank"&gt;here&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/ms145570.aspx" target="_blank"&gt;here&lt;/a&gt;, I won’t spend too long covering them. In the following MDX query I’m producing the Mean and the Median of the product sub categories in Adventure Works:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;WITH 
MEMBER  &lt;/span&gt;[Measures].[Mean] &lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:maroon;"&gt;AVG&lt;/span&gt;([Product].[Subcategory].[Subcategory].&lt;span style="color:blue;"&gt;Members&lt;/span&gt;,
        [Measures].[Internet Sales Amount])

&lt;span style="color:blue;"&gt;MEMBER  &lt;/span&gt;[Measures].[Median] &lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:maroon;"&gt;Median&lt;/span&gt;([Product].[Subcategory].[Subcategory].&lt;span style="color:blue;"&gt;Members&lt;/span&gt;,
        [Measures].[Internet Sales Amount])

&lt;span style="color:blue;"&gt;SELECT  &lt;/span&gt;{[Measures].[Internet Sales Amount], [Measures].[Mean], [Measures].[Median]} &lt;span style="color:blue;"&gt;ON &lt;/span&gt;0,
        &lt;span style="color:maroon;"&gt;NonEmpty&lt;/span&gt;([Product].[Subcategory].[Subcategory].&lt;span style="color:blue;"&gt;Members&lt;/span&gt;, [Measures].[Internet Sales Amount]) &lt;span style="color:blue;"&gt;ON &lt;/span&gt;1
&lt;span style="color:blue;"&gt;FROM    &lt;/span&gt;[Adventure Works]
&lt;span style="color:blue;"&gt;WHERE   &lt;/span&gt;([Date].[Date].&amp;amp;[20070727])&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_6655BE87.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_463AB1CA.png" width="286" height="227" /&gt;&lt;/a&gt;&lt;/pre&gt;

&lt;p&gt;If you run the query and copy the data out to Excel you’ll see that it matches the result of Excel’s Median and Mode functions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mode&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mode is harder to achieve as there’s no built in MDX function. Fortunately, Excel is on hand to help out, as Analysis Services allows you to use some of the Excel functions in MDX. There are warnings that come with this approach, as you need to have Excel installed on the server and there can also be performance problems. But, if you’re comfortable with these caveats, then the Excel mode function may be an option for you.&lt;/p&gt;

&lt;p&gt;If you do use the Excel Mode function then there are a few things to watch out for. Firstly, you’ll have to use the MDX SetToArray() function to pass the set in the format that Excel expects. Secondly, you may get an error returned with the description: “#Error The following system error occurred:&amp;#160; Invalid flags.” This is due to the data type of the Measure – it seems that Currency measures are not supported by this function. Therefore, I’m using Cdbl() on Internet Sales Amount to get this to work:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;WITH 
MEMBER  &lt;/span&gt;[Measures].[Demo] &lt;span style="color:blue;"&gt;AS &lt;/span&gt;Cdbl([Measures].[Internet Sales Amount])
    
&lt;span style="color:blue;"&gt;MEMBER  &lt;/span&gt;[Measures].[ExcelMode] &lt;span style="color:blue;"&gt;AS
        &lt;/span&gt;Excel!MODE(&lt;span style="color:maroon;"&gt;SetToArray&lt;/span&gt;(&lt;span style="color:maroon;"&gt;NONEMPTY&lt;/span&gt;([Product].[Subcategory].[Subcategory].&lt;span style="color:blue;"&gt;Members&lt;/span&gt;, [Measures].[Demo])
        * [Measures].[Demo]))&lt;/pre&gt;

&lt;p&gt;Applying this to the example query I’ve got above, the mode returned is 8.99, as its the only number that appears twice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bi Modal Result Set&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is a bit more complexity to Mode in some situations, essentially as you can get a bi-modal result set - where there is more than one value occurring the most. E.g. the mode of 1,2,2,3 is just 2, but the mode of 1,2,2,3,3,4 is both 2 and 3 – so it’s known as bi-modal.&lt;/p&gt;

&lt;p&gt;The Excel Mode function won’t help in this scenario, as it will just return one of the mode values. Interestingly Excel 2010 does support this, with the Mode.Mult() function, but I’ve been unable to get this to work, presumably as the Excel function returns an array.&lt;/p&gt;

&lt;p&gt;All is not lost though, it’s possible to produce mode using MDX. First of all, the numbers that I’m operating on are shown below. As you can see, there are two sets of two numbers that are the same:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_5F36820F.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_0D23D4C8.png" width="148" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As the following &lt;a href="http://social.msdn.microsoft.com/forums/en-us/sqlanalysisservices/thread/C70DE994-5815-4B30-A10A-81518F784BD2" target="_blank"&gt;forum thread shows&lt;/a&gt;, mode can be achieved using MDX. I’m adapting that approach to give the following MDX:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;WITH 
&lt;/span&gt;&lt;span style="color:green;"&gt;--Produce a result set that will guarantee bi modal results
&lt;/span&gt;&lt;span style="color:blue;"&gt;MEMBER    &lt;/span&gt;[Measures].[Demo] &lt;span style="color:blue;"&gt;AS
        CASE WHEN &lt;/span&gt;[Product].[Subcategory].&lt;span style="color:maroon;"&gt;CurrentMember &lt;/span&gt;&lt;span style="color:blue;"&gt;IS &lt;/span&gt;[Product].[Subcategory].&amp;amp;[31]  &lt;span style="color:blue;"&gt;THEN &lt;/span&gt;65.91
        &lt;span style="color:blue;"&gt;ELSE &lt;/span&gt;Cdbl([Measures].[Internet Sales Amount]) &lt;span style="color:blue;"&gt;END

&lt;/span&gt;&lt;span style="color:green;"&gt;--Count how often each value appears
&lt;/span&gt;&lt;span style="color:blue;"&gt;MEMBER &lt;/span&gt;[Measures].[ValueCount] &lt;span style="color:blue;"&gt;AS 
&lt;/span&gt;&lt;span style="color:maroon;"&gt;SUM&lt;/span&gt;( 
    &lt;span style="color:blue;"&gt;Union&lt;/span&gt;([Product].[Subcategory].&lt;span style="color:maroon;"&gt;CurrentMember&lt;/span&gt;.&lt;span style="color:blue;"&gt;Level&lt;/span&gt;.&lt;span style="color:blue;"&gt;Members&lt;/span&gt;,
        {[Product].[Subcategory].&lt;span style="color:maroon;"&gt;CurrentMember&lt;/span&gt;} &lt;span style="color:blue;"&gt;AS &lt;/span&gt;Currentsub)
    , &lt;span style="color:maroon;"&gt;IIF&lt;/span&gt;(([Product].[Subcategory].&lt;span style="color:maroon;"&gt;CurrentMember&lt;/span&gt;, [Measures].[Demo]) = 
        (Currentsub.&lt;span style="color:blue;"&gt;Item&lt;/span&gt;(0).&lt;span style="color:blue;"&gt;Item&lt;/span&gt;(0), [Measures].[Demo]), 1, &lt;span style="color:blue;"&gt;null&lt;/span&gt;)
)&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;span style="color:green;"&gt;--Only get the items that appear the most
&lt;/span&gt;&lt;span style="color:blue;"&gt;SET &lt;/span&gt;[MaxModes] &lt;span style="color:blue;"&gt;AS 
    ORDER&lt;/span&gt;(&lt;span style="color:blue;"&gt;FILTER&lt;/span&gt;(&lt;span style="color:maroon;"&gt;NONEMPTY&lt;/span&gt;([Product].[Subcategory].[Subcategory].&lt;span style="color:blue;"&gt;Members&lt;/span&gt;, {[Measures].[Demo]}),
    [Measures].[ValueCount] = &lt;span style="color:maroon;"&gt;MAX&lt;/span&gt;(&lt;span style="color:maroon;"&gt;NONEMPTY&lt;/span&gt;([Product].[Subcategory].[Subcategory].&lt;span style="color:blue;"&gt;Members&lt;/span&gt;, [Measures].[Demo]), 
        [Measures].[ValueCount])), [Measures].[Demo], &lt;span style="color:blue;"&gt;ASC&lt;/span&gt;)

&lt;span style="color:blue;"&gt;SELECT   &lt;/span&gt;{[Measures].[Demo], [Measures].[ValueCount]} &lt;span style="color:blue;"&gt;on &lt;/span&gt;0,
        [MaxModes]
        &lt;span style="color:green;"&gt;--Filter out the duplicates 
        &lt;/span&gt;&lt;span style="color:blue;"&gt;HAVING &lt;/span&gt;[MaxModes].&lt;span style="color:maroon;"&gt;CurrentOrdinal &lt;/span&gt;= 0 &lt;span style="color:blue;"&gt;OR &lt;/span&gt;[Measures].[Demo] &amp;lt;&amp;gt; 
            ([Measures].[Demo], [MaxModes].&lt;span style="color:blue;"&gt;Item&lt;/span&gt;([MaxModes].&lt;span style="color:maroon;"&gt;CurrentOrdinal &lt;/span&gt;- 2)) &lt;span style="color:blue;"&gt;ON &lt;/span&gt;1
&lt;span style="color:blue;"&gt;FROM    &lt;/span&gt;[Adventure Works]
&lt;span style="color:blue;"&gt;WHERE    &lt;/span&gt;([Date].[Date].&amp;amp;[20070727])&lt;/pre&gt;

&lt;p&gt;This gives the following correct result set, assuming we just want the two bi modal values:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_540CF7C5.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_3F1B7552.png" width="222" height="82" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An alternative is to use an MDX Filter() or HAVING clause to just display all the sub categories that have the mode values, which would just require a small modification to the above code.&lt;/p&gt;

&lt;p&gt;I’ve not used these approaches with big data volumes etc, but they should at least give you a few options if you’ve got to do these sort of calculations in your own environment.&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=10316" width="1" height="1"&gt;</description></item><item><title>Power View Default Field Set</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2012/02/23/power-view-default-field-set.aspx</link><pubDate>Thu, 23 Feb 2012 11:57:10 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:10311</guid><dc:creator>Jeremy Kashel</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Here&amp;#39;s another quick tip when creating data models for use with Power View - Default Field Sets can be created in both Tabular SSAS and PowerPivot that give the user a shortcut for automatically adding multiple fields to a report.&lt;/p&gt;  &lt;p&gt;As an example, here&amp;#39;s a screenshot of the Default Field Set in PowerPivot - this will tell Power view that the following fields should be automatically selected when the table is added to a Power View report:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/Default-Field-Set-for-blog_5BAFA76A.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="Default Field Set for blog" border="0" alt="Default Field Set for blog" src="http://blogs.adatis.co.uk/blogs/jeremykashel/Default-Field-Set-for-blog_thumb_5FB9F53C.png" width="379" height="274" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;I&amp;#39;d seen this in the documentation a while back, but hadn&amp;#39;t actually used it, nor could I see a way to select the table. In fact, although there&amp;#39;s no checkbox, it&amp;#39;s just a simple single click on the actual table name, as I’ve highlighted below:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_3B949AAD.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_26A3183A.png" width="171" height="185" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;When you click on the table name Product above, you will now get the following fields automatically added to a table visualisation:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_3F9EE87F.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_6D8C3B37.png" width="454" height="226" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So not exactly rocket science, but worth doing! Here&amp;#39;s how to set up the Default Field set for &lt;a href="http://technet.microsoft.com/en-us/library/hh560541(v=sql.110).aspx"&gt;PowerPivot&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/hh479569(v=sql.110).aspx"&gt;Tabular Analysis Services&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=10311" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Analysis+Services/default.aspx">Analysis Services</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/PowerPivot/default.aspx">PowerPivot</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Self+Service+BI/default.aspx">Self Service BI</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/BISM/default.aspx">BISM</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Tabular/default.aspx">Tabular</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/SQL+Server+2012/default.aspx">SQL Server 2012</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Power+View/default.aspx">Power View</category></item><item><title>PowerPivot Settings for Power View</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2012/02/20/powerpivot-settings-for-power-view.aspx</link><pubDate>Mon, 20 Feb 2012 16:30:59 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:10308</guid><dc:creator>Jeremy Kashel</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I’ve been using both PowerPivot and Power View quite a bit recently and, &lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2011/11/29/working-with-images-in-power-view.aspx"&gt;in addition to the post I did a while back&lt;/a&gt;, have made a few further observations on getting the two to play nicely together.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Building an Example PowerPivot Model&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;For this post I’ve created a very very simple PowerPivot model, based on the Adventure Works Internet Sales Fact table and its related tables. What this means is that after the model is built, I can build a variety of Excel reports that summarise the measures in the FactInternetSales Adventure Works fact table, such as Sales Amount, Tax Amount or Order Quantity. In the example below I’ve built a very basic report showing Order Quantity by year:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/Excel-report_1CE96495.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="Excel report" border="0" alt="Excel report" src="http://blogs.adatis.co.uk/blogs/jeremykashel/Excel-report_thumb_63D28792.png" width="244" height="155" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;On to Power View&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Having already published the workbook to SharePoint, my task now is to create a Power View report, which can be done via the PowerPivot Gallery. If wanted to try and create a visual version of the above report in Power View (E.g. a graph), my steps would be to do first of all drag Calendar Year into the report, then Order Quantity. However, when doing this recently, the result wasn’t quite what I expected:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/Table-Without-Sum_7CCE57D7.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="Table Without Sum" border="0" alt="Table Without Sum" src="http://blogs.adatis.co.uk/blogs/jeremykashel/Table-Without-Sum_thumb_67DCD564.png" width="193" height="163" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Order Quantity has not been summed at all, which is the opposite behaviour to that of PowerPivot. Consequently I can’t create a graph visualisation, because Power View thinks I don’t have any measures in my report:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/Greyed-Out-Visualisations_15CA281D.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="Greyed Out Visualisations" border="0" alt="Greyed Out Visualisations" src="http://blogs.adatis.co.uk/blogs/jeremykashel/Greyed-Out-Visualisations_thumb_43B77AD5.png" width="547" height="137" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Yet if we contrast this to measures such as Internet Sales Amount or Tax Amount, they all work fine. Upon looking at the field list for Internet Sales, we will see that Order Quantity is missing the sum symbol, as Power View has not interpreted it as a measure:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_2EC5F862.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_47C1C8A7.png" width="176" height="215" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We can get around this in Power View with a bit of dragging and dropping, but we may as well look why it’s happened in the first place. The reason for this is the way in which the PowerPivot import wizard interprets SQL data types. The OrderQuantity column in the FactInternetSales SQL table has a data type of Smallint, which will not be summarised by default in Power View. Decimal and Money types are fine, hence why Tax Amount and Sales Amount above look ok.&lt;/p&gt;  &lt;p&gt;Rather than changing the data types, we can force Power View to interpret the column as a measure by going to the PowerPivot advanced tab and clicking on Summarize By. If the Summarize By value is changed from Default to Sum, then Power View will interpret the column as a measure:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_239C6E18.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_0EAAEBA5.png" width="267" height="231" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If we republish the model and then go back to Power View, we will see quite a difference with the same actions as before. First of all the field list is looking correct: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/Summarize-By-After_3C983E5D.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="Summarize By After" border="0" alt="Summarize By After" src="http://blogs.adatis.co.uk/blogs/jeremykashel/Summarize-By-After_thumb_27A6BBEA.png" width="175" height="212" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Secondly, only dragging Calendar Year and Order Quantity will now give the following correct results:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/Table-With-Sum-After_6E8FDEE7.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="Table With Sum After" border="0" alt="Table With Sum After" src="http://blogs.adatis.co.uk/blogs/jeremykashel/Table-With-Sum-After_thumb_1C7D31A0.png" width="212" height="177" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now that we have a measure, it means that we can now change the table into a visualisation of our choice:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/Visualisations-Enabled_078BAF2D.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="Visualisations Enabled" border="0" alt="Visualisations Enabled" src="http://blogs.adatis.co.uk/blogs/jeremykashel/Visualisations-Enabled_thumb_357901E5.png" width="429" height="108" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Power View is the kind of product that power users are hopefully going to find intuitive, but we can make things even easier for users by making small changes like this.&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=10308" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Excel/default.aspx">Excel</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/PowerPivot/default.aspx">PowerPivot</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Power+View/default.aspx">Power View</category></item><item><title>Data Quality Services (RC0) - Cleanse and Train the KB</title><link>http://blogs.adatis.co.uk/blogs/victormendes/archive/2012/01/09/data-quality-services-rc0-cleanse-and-train-the-kb.aspx</link><pubDate>Mon, 09 Jan 2012 16:10:00 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:10133</guid><dc:creator>Victor Mendes</dc:creator><slash:comments>3</slash:comments><description>This post will show a new KB (Knowledge Base) being trained using the &lt;a title="DQS - RC0 New Features" href="http://blogs.msdn.com/b/dqs/archive/2011/11/29/sql-server-2012-rc0-what-s-new-in-dqs.aspx" target="_blank"&gt;new feature&lt;/a&gt; via domain management which allows the KB to import the knowledge gained from a cleansing project. In the previous release, CTP3, the KB was trained using Knowledge Discovery from either a table or excel file. This could also have been done interactively via domain management, but not directly from a cleansed project.   &lt;p&gt;In this example we will retrain the new KB by importing knowledge learnt from two cleansed samples of data. The outputs of the cleansed projects will be imported into the KB. Before retraining our KB we will need to tweak one of the cleansing configuration settings. This will retrain our new KB faster.&lt;/p&gt;  &lt;h3&gt;New Knowledge Base&lt;/h3&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;/font&gt;&lt;/p&gt; If you have not created a KB before a step by step guide can be found &lt;a title="SQL Server Data Quality Services – Creating a Knowledge Base" href="http://www.bimonkey.com/2011/08/sql-server-data-quality-services-creating-a-knowledge-base/" target="_blank"&gt;here&lt;/a&gt;.   &lt;p&gt;The new KB was called UK Counties. A single domain value was used and it was called UK County (Full Name). &lt;/p&gt;  &lt;p&gt;Using the Knowledge Discovery feature we first trained our empty KB with a unique list of UK Counties. The Domain Management feature could also have been used by entering domain values or importing them from an excel file. &lt;/p&gt;  &lt;p&gt;Training the KB doesn&amp;#39;t stop there, further training is required to expand the KB knowledge. Interactively we could add new domain values or synonyms to the already existing values such as Bucks for Buckinghamshire if we knew this was a potential synonym. For this example we will be using the knowledge gained from our cleansing project to retrain our KB.&lt;/p&gt;  &lt;p&gt;Below is a screen shot of some of the domain values prior to retraining and being published to the DQS server.&lt;/p&gt; &lt;a title="graphic2F" name="graphic2F"&gt;&lt;/a&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/A90_NewKB_0645277C.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="A90_NewKB" border="0" alt="A90_NewKB" src="http://blogs.adatis.co.uk/blogs/victormendes/A90_NewKB_thumb_625C5021.png" width="501" height="354" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Configuring Cleansing Projects&lt;/h3&gt;  &lt;p&gt;During cleansing a computer-assisted process will analyse how the source data conforms to the knowledge in the KB and a confidence level is determined. There are two confidence level thresholds: suggestions and auto corrections. Suggestions can be approved or rejected. Auto corrections are already approved, but it is possible to reject them as well.&lt;/p&gt;  &lt;p&gt;These thresholds can be set in the general settings for a cleansing project from the DQS configuration area. &lt;/p&gt;  &lt;p&gt;By default 0.6 (60%) and 0.8 (80%) are set respectively for suggestions and auto corrections. &lt;/p&gt;  &lt;p&gt;As the KB is still young we need to retrain it with some samples of our real data and therefore make more suggestions. Hence we will reduce the confidence level percentage for suggestions down to 0.4 (40%). &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/B02_Config_6BF9A1FC.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="B02_Config" border="0" alt="B02_Config" src="http://blogs.adatis.co.uk/blogs/victormendes/B02_Config_thumb_1F556559.png" width="292" height="140" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;N.B. This can go the other way where too many suggestions are given or a source value could be mapped to a completely incorrect domain value. As the knowledge of KB increases the confidence level for suggestions should also be increased to isolate new values and minimise interactive cleaning.&lt;/em&gt;&lt;/p&gt;  &lt;h3&gt;Training the KB&lt;/h3&gt;  &lt;p&gt;There are a number of ways to train the KB&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Knowledge Discovery,&amp;nbsp; or &lt;/li&gt;    &lt;li&gt;Domain Management by either      &lt;ol&gt;       &lt;li&gt;Interactively entering or editing domain values, &lt;/li&gt;        &lt;li&gt;Importing domain values from an excel file, or &lt;/li&gt;        &lt;li&gt;Using the completed output of a cleansing project. &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The final option is the new feature added to RC0 which makes managing knowledge within the KB simpler.&lt;/p&gt;  &lt;p&gt;Let’s look at our first sample of data.&lt;/p&gt;  &lt;p&gt;&lt;a title="graphic32" name="graphic32"&gt;&lt;/a&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/B03_Config_64F9EF77.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="B03_Config" border="0" alt="B03_Config" src="http://blogs.adatis.co.uk/blogs/victormendes/B03_Config_thumb_7D1D59D2.png" width="156" height="218" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You will notice a number of data quality issues such as postcode and county, town and county or a short county name. Our objective is to clean this data to the County Full Name domain value in the KB.&lt;/p&gt;  &lt;p&gt;If you have not created a data quality project before a step by step guide can be found &lt;a title="Create a Data Quality Project" href="http://technet.microsoft.com/en-us/library/hh510393(SQL.110).aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;We will skip to the end of our cleansing project and analyse the results. &lt;/p&gt;  &lt;p&gt;On successful completion we can see from the results that 0 records were corrected and 7 records have suggested domain values. We can now perform an interactive cleanse by which we approve or reject the suggestions made. Where the data confidence level has not been met for suggestions of 40% or auto corrections of 80% it will be considered as a new value. For this particular example we should not be expecting new values as we have a definitive list of counties and therefore we will need to add corrected values manually. &lt;/p&gt;  &lt;p&gt;Let’s start with the suggested values. All are correct and therefore only need to be approved. We approve all values by clicking the check box under the Approve column or we can click the Approve All icon &lt;a title="graphic39" name="graphic39"&gt;&lt;/a&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/C08_DQP_63FE2B93.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="C08_DQP" border="0" alt="C08_DQP" src="http://blogs.adatis.co.uk/blogs/victormendes/C08_DQP_thumb_23C81219.png" width="32" height="37" /&gt;&lt;/a&gt;. All suggested values will move into the Corrected tab area.&lt;/p&gt;  &lt;p&gt;&lt;a title="graphic37" name="graphic37"&gt;&lt;/a&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/C05_DQP_3402CA74.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="C05_DQP" border="0" alt="C05_DQP" src="http://blogs.adatis.co.uk/blogs/victormendes/C05_DQP_thumb_05A944C7.png" width="704" height="219" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now let’s review the new tab below. Three new values in the source data have been found, the analysis could not confidently associate any of the three values with a confidence level greater than or equal to 40% and therefore has presented them as new values. &lt;/p&gt;  &lt;p&gt;&lt;a title="graphic38" name="graphic38"&gt;&lt;/a&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/C06_DQP_53457147.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="C06_DQP" border="0" alt="C06_DQP" src="http://blogs.adatis.co.uk/blogs/victormendes/C06_DQP_thumb_20E19DC8.png" width="704" height="135" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Looking at the values we know the county is Middlesex as is in the KB, hence we manually enter this value into the Correct to column. Now we can approve each value or we can click the Approve All icon.&lt;/p&gt;  &lt;p&gt;&lt;a title="graphic3A" name="graphic3A"&gt;&lt;/a&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/C07_DQP_5A9552F2.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="C07_DQP" border="0" alt="C07_DQP" src="http://blogs.adatis.co.uk/blogs/victormendes/C07_DQP_thumb_6723000E.png" width="704" height="141" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;All values have now moved to the corrected tab.&lt;/p&gt; &lt;a title="graphic3B" name="graphic3B"&gt;&lt;/a&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/C09_DQP_3452F99A.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="C09_DQP" border="0" alt="C09_DQP" src="http://blogs.adatis.co.uk/blogs/victormendes/C09_DQP_thumb_330E60BB.png" width="704" height="217" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Our data cleanse results are now ready for final review before finishing the project. Finishing a project no longer allows the project to be re-run for cleansing purposes as the knowledge gained would be lost, however you will be able to interactively clean to alter the final results. It’s these results and knowledge that is imported back into the KB, but the project must be marked as finished.&lt;/p&gt;  &lt;p&gt;It is the CountyName_Source that we want to feed back to the KB as synonyms for the domain values found or modified in the CountyName_Output. &lt;/p&gt; &lt;a title="graphic3C" name="graphic3C"&gt;&lt;/a&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/C10_DQP_12A324D8.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="C10_DQP" border="0" alt="C10_DQP" src="http://blogs.adatis.co.uk/blogs/victormendes/C10_DQP_thumb_721BE525.png" width="515" height="319" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To feed this new acquired knowledge we open our KB via Domain Management and can now use the new feature Import project values.&lt;/p&gt;  &lt;p&gt;&lt;a title="graphic3D" name="graphic3D"&gt;&lt;/a&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/D01_KBDM_23A752BB.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="D01_KBDM" border="0" alt="D01_KBDM" src="http://blogs.adatis.co.uk/blogs/victormendes/D01_KBDM_thumb_3F4BDEB1.png" width="300" height="174" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We select the finished cleansing project and uncheck Add values from New Tab.&lt;/p&gt; &lt;a title="graphic3E" name="graphic3E"&gt;&lt;/a&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/D02_KBDM_03201309.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="D02_KBDM" border="0" alt="D02_KBDM" src="http://blogs.adatis.co.uk/blogs/victormendes/D02_KBDM_thumb_69B80FCE.png" width="473" height="248" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Only the new knowledge from the project has been added to the KB. The Show Only New check box is checked automatically.&lt;/p&gt; &lt;a title="graphic3F" name="graphic3F"&gt;&lt;/a&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/D03_KBDM_2262B9DC.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="D03_KBDM" border="0" alt="D03_KBDM" src="http://blogs.adatis.co.uk/blogs/victormendes/D03_KBDM_thumb_1DEC3915.png" width="556" height="374" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If we uncheck the Show Only New check box and scroll down to London and Middlesex you will see the synonyms for these counties have been added to the KB. &lt;/p&gt; &lt;a title="graphic40" name="graphic40"&gt;&lt;/a&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/D04_KBDM_41A560AF.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="D04_KBDM" border="0" alt="D04_KBDM" src="http://blogs.adatis.co.uk/blogs/victormendes/D04_KBDM_thumb_48586A32.png" width="360" height="255" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We now publish the KB to the DQS server and are ready to analyse another data sample.&lt;/p&gt; &lt;a title="graphic41" name="graphic41"&gt;&lt;/a&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/E01_DQP_59F8AE96.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="E01_DQP" border="0" alt="E01_DQP" src="http://blogs.adatis.co.uk/blogs/victormendes/E01_DQP_thumb_20096BAA.png" width="161" height="215" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As above we create a new cleansing project and analyse the data. The newly found knowledge from the previous cleansing project has corrected five values with 4 values suggested, leaving one value as new.&lt;/p&gt;  &lt;p&gt;If we view the reason column for the corrected tab, four of the values were associated with the synonyms of domain values within the KB from the knowledge learned. &amp;#39;London.&amp;#39; was cleansed and had a confidence greater than or equal to 80% and therefore auto corrected. &lt;/p&gt;  &lt;p&gt;&lt;a title="graphic43" name="graphic43"&gt;&lt;/a&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/E03_DQP_680743FA.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="E03_DQP" border="0" alt="E03_DQP" src="http://blogs.adatis.co.uk/blogs/victormendes/E03_DQP_thumb_4E9F40C0.png" width="746" height="177" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In the suggested tab the correct to values are all correct and only need approving.&lt;/p&gt; &lt;a title="graphic44" name="graphic44"&gt;&lt;/a&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/E04_DQP_4B9B0011.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="E04_DQP" border="0" alt="E04_DQP" src="http://blogs.adatis.co.uk/blogs/victormendes/E04_DQP_thumb_1D417A64.png" width="745" height="147" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The new value failed the confidence level of 40%, however it could have been found and a suggestion made if the threshold was reduced further. This is not a problem as the correct value was entered and approved.&lt;/p&gt;  &lt;p&gt;&lt;a title="graphic45" name="graphic45"&gt;&lt;/a&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/E06_DQP_1C3B6D41.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="E06_DQP" border="0" alt="E06_DQP" src="http://blogs.adatis.co.uk/blogs/victormendes/E06_DQP_thumb_3BEA4709.png" width="748" height="116" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Finally we review our results and finish the project.&lt;/p&gt; &lt;a title="graphic46" name="graphic46"&gt;&lt;/a&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/E07_DQP_46A79E5E.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="E07_DQP" border="0" alt="E07_DQP" src="http://blogs.adatis.co.uk/blogs/victormendes/E07_DQP_thumb_1443CADF.png" width="500" height="238" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We now feed this new knowledge back into the KB via Domain Management.&lt;/p&gt;  &lt;p&gt;&lt;a title="graphic47" name="graphic47"&gt;&lt;/a&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/E08_DQP_7ADBC7A4.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="E08_DQP" border="0" alt="E08_DQP" src="http://blogs.adatis.co.uk/blogs/victormendes/E08_DQP_thumb_1E94EF3F.png" width="494" height="260" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The new synonyms will now be added to the existing KB domain values.&lt;/p&gt; &lt;a title="graphic48" name="graphic48"&gt;&lt;/a&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/victormendes/E09_DQP_6C311BBF.png"&gt;&lt;img style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" title="E09_DQP" border="0" alt="E09_DQP" src="http://blogs.adatis.co.uk/blogs/victormendes/E09_DQP_thumb_5DF2A2CF.png" width="473" height="309" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This has been a simple example on how to train and retrain a new KB. By having a definitive list of counties the need to analyse our data prior to creating the KB is somewhat reduced. &lt;/p&gt;  &lt;p&gt;When building a KB it is important to acquire knowledge from samples of source data using any of the features available. From this example the output of a cleansing project provides a simpler method where the confidence level for suggested values is much lower. Once the KB contains sufficient knowledge for cleansing the confidence level can be increased and larger sets of data can be cleansed.&lt;/p&gt;  &lt;p&gt;DQS is a great tool for the power user to maintain content with little input from IT. In posts to follow I will also review Matching projects and the SSIS DQS component.&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=10133" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/victormendes/archive/tags/DQS/default.aspx">DQS</category><category domain="http://blogs.adatis.co.uk/blogs/victormendes/archive/tags/Data+Quality+Services/default.aspx">Data Quality Services</category><category domain="http://blogs.adatis.co.uk/blogs/victormendes/archive/tags/SQL+Server+2012/default.aspx">SQL Server 2012</category></item><item><title>Master Data Services in SQL Server 2012 RC0</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2011/11/30/master-data-services-in-sql-server-2012-rc0.aspx</link><pubDate>Wed, 30 Nov 2011 13:31:34 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:10075</guid><dc:creator>Jeremy Kashel</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;There’s been a whole host of changes to MDS in the &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=28145&amp;amp;WT.mc_id=rss_alldownloads_all" target="_blank"&gt;SQL Server 2012 RC (Release Candidate) 0&lt;/a&gt; that came out the other week. This blog post gives an overview of the changes, before diving into detail on a few of them. At a high level, the following changes have been made to MDS:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Improved Master Data Manager front screen UI and navigation paths &lt;/li&gt;    &lt;li&gt;Collections interface updated to Silverlight &lt;/li&gt;    &lt;li&gt;Improved Excel user interface &amp;amp; functionality &lt;/li&gt;    &lt;li&gt;Auto generation of entity code values, without using business rules &lt;/li&gt;    &lt;li&gt;New deployment tool &lt;/li&gt;    &lt;li&gt;SharePoint integration &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Let’s take a look at each of these changes:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Improved Master Data Manager UI&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Although the UI improvement (shown below) is good, the best thing about the Master Data Manager changes, in my opinion, is that clicking on the Explorer feature no longer takes you into the Model View, but instead takes you straight into your master data for your core entity (e.g. in a Customer model this entity would be Customer). I’m not sure if this would get a bit frustrating if you didn’t want the core entity, but then again everything seems very quick in RC0, so I don’t think it’s really going to matter.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/Front-screen_72D8B875.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Front screen" border="0" alt="Front screen" src="http://blogs.adatis.co.uk/blogs/jeremykashel/Front-screen_thumb_17F602E2.png" width="355" height="359" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There’s also a new button next to a domain-based attribute that apparently has been designed to &lt;a href="http://social.technet.microsoft.com/wiki/contents/articles/5648.aspx" target="_blank"&gt;help with Many-to-Many relationships&lt;/a&gt;. I can definitely see that working, but it’s useful to have anyway to jump to the member details for the domain based attribute that you are viewing, many-to-many or not:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_0AAF79CF.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_03240A62.png" width="352" height="90" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Collections Interface Updated to Silverlight&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The collections interface is now much slicker, getting the Silverlight makeover seen in other areas of Master Data Manager. Switching between collections, for example, which could take a while in R2, now happens very quickly, making collections far more useable. The screen shot below shows how you edit collection members by picking members from one of the entities and adding those over into the collection by clicking the Add button:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_1B4774BD.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_32FEAC23.png" width="703" height="226" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Collections now have the concept of a Weight, meaning that you can alter the weighting value associated with the collection members, which could be useful for reporting purposes. The idea is that you extract the collection members and the weight values in a subscription view. A Weight column is actually included in the 2008 R2 collection subscription views, but there was no front end to modify the weight value, which has of course now changed:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_09A76425.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_170D772B.png" width="340" height="75" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Improved Excel User Interface and Functionality&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The MDS Excel Ribbon has been given a makeover, meaning that you now see the following in the ribbon:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/Excel-toolbar_5D1E343E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Excel toolbar" border="0" alt="Excel toolbar" src="http://blogs.adatis.co.uk/blogs/jeremykashel/Excel-toolbar_thumb_5B013575.png" width="721" height="121" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It’s interesting to see that the Favourites section has been replaced with the concept of ‘queries’. The idea is that you can send a query file via email to another user, providing that user has the Excel add-in. When the user double clicks on the query file (extension *.mdsqx), Excel will open and make a connection to MDS, using the connection and filter information provided in the file. This will result in Excel opening, with the user prompted if they would like to connect to MDS:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/confirm-connection_55EED1F9.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="confirm connection" border="0" alt="confirm connection" src="http://blogs.adatis.co.uk/blogs/jeremykashel/confirm-connection_thumb_6E123C54.png" width="266" height="143" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It’s also good to see that a few of the domain-based attribute issues have been addressed, namely the display of domain-based attribute names when you filter an entity and also the display of the names and the codes together in the Excel sheet. Here’s a screen shot of the how the attribute names are now visible when filtering the Country domain-based attribute that exists in the Customer model:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_5A84DCB3.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_4BDA30CE.png" width="403" height="197" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Auto Generation of Entity Code Values&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you wanted the code to be auto-generated in 2008 R2, you had to use a business rule. You can still do that if you want, but the create entity admin screen has changed slightly to include an option to auto generate the code. This works slightly better than business rules in my opinion, at least as far as the Excel add-in is concerned, as the code is returned to the user immediately after publishing, whereas the business rules require you to do a refresh in Excel and of course need more development! Here’s a screenshot of the add entity screen:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_7163AE2F.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_49BD3205.png" width="267" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;New Deployment Tool&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Deployment has been altered in SQL 2012, with the addition of a &lt;a href="http://msdn.microsoft.com/en-us/library/ff486956(v=SQL.110).aspx" target="_blank"&gt;new deployment tool&lt;/a&gt;, plus the fact that subscription views now get deployed. It seems that the current R2 deployment method (in the Administration section of Master Data Manager) is still included but now will not deploy data. To do that you need to use MDSModelDeploy.exe, as explained &lt;a href="http://msdn.microsoft.com/en-us/library/hh479646(v=SQL.110).aspx" target="_blank"&gt;here&lt;/a&gt;. As an example, here’s how you can deploy the sample Customer model using MDSModelDeploy.exe, for default installations:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;MDSModelDeploy deploynew –package “C:\Program Files\Microsoft SQL Server\110\Master Data Services\Samples\customer_en.pkg” –model “Customer” –service “MDS1”&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;SharePoint Integration and Further Details&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Master Data Manager now supports a set of parameters that allow the MDS UI to be displayed without the header, menu bar and padding area. This means that MDS can now be incorporated into SharePoint or other websites. For the details on this, as well as more details on the above points, take a look at the following &lt;a href="http://social.technet.microsoft.com/wiki/contents/articles/5648.aspx" target="_blank"&gt;Technet article&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=10075" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/MDM/default.aspx">MDM</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Master+Data+Services/default.aspx">Master Data Services</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/MDS/default.aspx">MDS</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Master+Data+Management/default.aspx">Master Data Management</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/SQL+Server+2012/default.aspx">SQL Server 2012</category></item><item><title>Working with Images in Power View</title><link>http://blogs.adatis.co.uk/blogs/jeremykashel/archive/2011/11/29/working-with-images-in-power-view.aspx</link><pubDate>Tue, 29 Nov 2011 13:04:31 GMT</pubDate><guid isPermaLink="false">8d7d37f8-4a66-4c95-9fba-293fa87607dc:10068</guid><dc:creator>Jeremy Kashel</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;Power View includes several ways to create visualisations with images, ranging from a simple table, to the scrollable tile visualisation. In this post I’m going to explain a bit about the tile visualisation, showing how it can be used in Power View, before showing a couple of tips for working with images in both PowerPivot and Analysis Services Tabular models.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Power View Tiles&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The Power View Tiles visualisation allows you to display a scrollable series of images, which, when clicked on, will display data of your choosing. The report below is an example of this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_41F4FB4E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_3AD5BED6.png" width="592" height="372" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;What’s nice about the View above is that the names of the products are automatically displayed underneath the images. This is a sensible place to display the product names, as it means the area below can focus on whatever product level data you want, in this case Revenue by Month for the selected product.&lt;/p&gt;  &lt;p&gt;This works fine in the sample models (in my case the Tailspin Toys model that I think came with CTP3) but it wont work in vanilla PowerPivot / Tabular models unless you configure a few model settings. Trying to reproduce the report above without these settings will give the following tile visualisation, minus the product names:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_16B06447.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_2FAC348C.png" width="362" height="132" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;PowerPivot Advanced Settings&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To address this in PowerPivot, you first of all need to switch to Advanced Mode, which you can do by selecting this option from the File menu in PowerPivot:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_1ABAB219.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_48A804D1.png" width="244" height="193" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This gives you the following advanced tab:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_61A3D516.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_0F9127CF.png" width="311" height="88" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Clicking on the highlighted Table Behaviour button in the ribbon gives you the following Table Behaviour window:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_7A9FA55B.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_288CF814.png" width="429" height="306" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here you can “change the default behaviour for different visualisation types and default grouping behaviour in client tools for this table”. The following properties should be set in order to get the tiles working correctly:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Row Identifier&lt;/strong&gt; – Specifies a column that only contains unique values, which allows the column to be used as an internal grouping key in client tools. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Default Label &lt;/strong&gt;– Specifies which column gives a row level display name, e.g. the product name in a Product table. This is key, as when a row level image is used, this property specifies which value to display alongside the image in tiles and other image-based visualisation. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Default Image&lt;/strong&gt; – Specifies which column contains images representing the row level data, e.g. pictures of products. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The full details for all these properties can be found &lt;a href="http://msdn.microsoft.com/en-us/library/hh560542(v=SQL.110).aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Tabular Models&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Tabular Models contain the same properties, which can be edited when you open a tabular project in the new SQL Server Data Tools. The image below shows how the properties have been configured for the column in my model called Image:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_4188C859.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_6F761B11.png" width="202" height="289" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Back to Power View&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If we now build a tile visualisation using the image column, we will see that we get the names of the products returned along with the image. It’s also worth noting that the Image and Product Name columns have now have an icon next to them, indicating that the field exhibits &lt;a href="http://technet.microsoft.com/en-us/library/hh231518(SQL.110).aspx" target="_blank"&gt;“row level” behaviour&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.adatis.co.uk/blogs/jeremykashel/image_365F3E0F.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.adatis.co.uk/blogs/jeremykashel/image_thumb_216DBB9C.png" width="483" height="185" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Finally, for some examples of what’s new in Power View SQL 2012 RC0 take a look at &lt;a href="http://blogs.msdn.com/b/sqlrsteamblog/archive/2011/11/17/what-s-new-in-power-view.aspx" target="_blank"&gt;this post&lt;/a&gt; on the Reporting Services Team Blog.&lt;/p&gt;&lt;img src="http://blogs.adatis.co.uk/aggbug.aspx?PostID=10068" width="1" height="1"&gt;</description><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Analysis+Services/default.aspx">Analysis Services</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/PowerPivot/default.aspx">PowerPivot</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/BISM/default.aspx">BISM</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Tabular/default.aspx">Tabular</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/SQL+Server+2012/default.aspx">SQL Server 2012</category><category domain="http://blogs.adatis.co.uk/blogs/jeremykashel/archive/tags/Power+View/default.aspx">Power View</category></item></channel></rss>