<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Chris Webb&#039;s BI Blog</title>
	<atom:link href="http://cwebbbi.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://cwebbbi.wordpress.com</link>
	<description>Analysis Services, MDX, PowerPivot, DAX and anything BI-related</description>
	<lastBuildDate>Fri, 24 Feb 2012 22:15:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='cwebbbi.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/14ea7107002d0f37386f8abd4c507070?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Chris Webb&#039;s BI Blog</title>
		<link>http://cwebbbi.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://cwebbbi.wordpress.com/osd.xml" title="Chris Webb&#039;s BI Blog" />
	<atom:link rel='hub' href='http://cwebbbi.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Using the MDX Script Debugger in BIDS</title>
		<link>http://cwebbbi.wordpress.com/2012/02/21/using-the-mdx-script-debugger-in-bids/</link>
		<comments>http://cwebbbi.wordpress.com/2012/02/21/using-the-mdx-script-debugger-in-bids/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 21:56:45 +0000</pubDate>
		<dc:creator>Chris Webb</dc:creator>
				<category><![CDATA[MDX]]></category>

		<guid isPermaLink="false">https://cwebbbi.wordpress.com/?p=1393</guid>
		<description><![CDATA[Almost every time I write MDX calculations, I end up using scoped assignments – it’s by far the easiest way to control where your calculations work inside a cube. However making sure that your scoped assignments work in the places that they’re meant to work and don’t overwrite each other can be very tricky indeed [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1393&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Almost every time I write MDX calculations, I end up using scoped assignments – it’s by far the easiest way to control where your calculations work inside a cube. However making sure that your scoped assignments work in the places that they’re meant to work and don’t overwrite each other can be very tricky indeed (for a brief introduction to the subject and these problems, see <a href="http://sqlbits.com/Sessions/Event8/Fun_with_Scoped_Assignments_in_MDX">this session</a> I gave at SQLBits a year or so ago), so in this post I’m going to show you how you can use the MDX Script Debugger in BIDS to help you do this.</p>
<p>Despite its name the MDX Script Debugger doesn’t actually help you to debug individual MDX expressions or calculations. What it does is clear the MDX Script of the cube then allow you to step through each statement in the MDX Script, applying them one after the other, so you can see the cumulative effect on a query. This is only really useful when you’re working with scoped assignments because it allows you to see which cells in your query are changed with each successive assignment.</p>
<p>To illustrate, let’s use the Adventure Works cube. Comment out everything on the MDX Script (ie what’s on the Calculations tab) <strong>except</strong> the Calculate statement and add the following code to the bottom:</p>
<p>CREATE MEMBER CURRENTCUBE.MEASURES.DEMO AS 1;</p>
<p>SCOPE(MEASURES.DEMO);    <br />&#160;&#160;&#160; SCOPE([Date].[Date].MEMBERS, [Date].[Calendar Quarter].[Calendar Quarter].MEMBERS);     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; THIS=2;     <br />&#160;&#160;&#160; END SCOPE;     <br />&#160;&#160;&#160; SCOPE([Date].[Calendar Year].[Calendar Year].MEMBERS);     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; THIS=3;     <br />&#160;&#160;&#160; END SCOPE;     <br />END SCOPE;</p>
<p>SCOPE([Measures].[Internet Sales Amount]);    <br />&#160;&#160;&#160; SCOPE([Date].[Date].MEMBERS, [Date].[Calendar Quarter].[Calendar Quarter].MEMBERS);     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; THIS=2;     <br />&#160;&#160;&#160; END SCOPE;     <br />&#160;&#160;&#160; SCOPE([Date].[Calendar Year].[Calendar Year].MEMBERS);     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; THIS=3;     <br />&#160;&#160;&#160; END SCOPE;     <br />END SCOPE;</p>
<p>Then deploy your database and go to Debug menu in BIDS and click Start Debugging:</p>
<p><a href="http://cwebbbi.files.wordpress.com/2012/02/image2.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="image" border="0" alt="image" src="http://cwebbbi.files.wordpress.com/2012/02/image_thumb2.png?w=485&#038;h=220" width="485" height="220" /></a></p>
<p>The MDX Debugger screen will then be displayed:</p>
<p><a href="http://cwebbbi.files.wordpress.com/2012/02/image3.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://cwebbbi.files.wordpress.com/2012/02/image_thumb3.png?w=589&#038;h=341" width="589" height="341" /></a></p>
<p>In the top pane you can see the Calculate statement highlighted – this is the point in the script that has been reached as you step through the code. In the bottom pane you have a browser control where you can construct a query plus four panes where you can enter your own hand-written MDX queries.</p>
<p>In the browser control, drag the Internet Sales Amount measure onto columns and the Calendar hierarchy from the Date dimension onto rows, until you see something like this:</p>
<p><a href="http://cwebbbi.files.wordpress.com/2012/02/image4.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://cwebbbi.files.wordpress.com/2012/02/image_thumb4.png?w=591&#038;h=251" width="591" height="251" /></a></p>
<p>You don’t see any data at the moment because the Calculate statement hasn’t been executed yet (see <a href="http://cwebbbi.wordpress.com/2011/10/20/why-has-all-the-data-in-my-cube-disappeared/">here</a> for more details on what the Calculate statement does). If you hit F10 to step to the next statement in the MDX Script you’ll see the values for Internet Sales Amount appear because the Calculate statement has now been executed:</p>
<p><a href="http://cwebbbi.files.wordpress.com/2012/02/image5.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://cwebbbi.files.wordpress.com/2012/02/image_thumb5.png?w=581&#038;h=416" width="581" height="416" /></a></p>
<p>If you hit F10 again, the calculated member DEMO will be created and you can now drag it into the browser; at this point you’ll see it always returns the value 1 because none of the scoped assignments have been executed yet:</p>
<p><a href="http://cwebbbi.files.wordpress.com/2012/02/image6.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://cwebbbi.files.wordpress.com/2012/02/image_thumb6.png?w=583&#038;h=412" width="583" height="412" /></a></p>
<p>Hit F10 again until you reach the first END SCOPE statement and you’ll see the following:</p>
<p><a href="http://cwebbbi.files.wordpress.com/2012/02/image7.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://cwebbbi.files.wordpress.com/2012/02/image_thumb7.png?w=584&#038;h=414" width="584" height="414" /></a></p>
<p>You can see that MEASURES.DEMO now returns 2 for the Date, Month and Quarter level as a result of this first assignment; you can also see that only the values that have been affected by this assignment have been changed. Hit F10 some more to execute the second assignment and you’ll see that DEMO returns 3 at the Year level and the affected cells are again highlighted:</p>
<p><a href="http://cwebbbi.files.wordpress.com/2012/02/image8.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://cwebbbi.files.wordpress.com/2012/02/image_thumb8.png?w=575&#038;h=408" width="575" height="408" /></a></p>
<p>Notice how, in this case, because you’re scoping on a calculated measure only the cells you scoped on have their values changed. This is in contrast with scoped assignments on regular measures: because regular measures aggregate up, scoping on a regular measure not only affects the values in the cells you scoped on, but those values will then also be aggregated up though the cube. </p>
<p>To show what does happen when you scope on a regular measure, look at the next set of scoped assignments on the Internet Sales Amount measure. The first assignment scopes on the Date, Month and Quarter levels and sets their values to 2; however the Year level values now show the aggregated totals of all the quarters in the year, so if there are four quarters in a year then the year will show 4 * 2 = 8. The All level total is also similarly affected.</p>
<p><a href="http://cwebbbi.files.wordpress.com/2012/02/image9.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://cwebbbi.files.wordpress.com/2012/02/image_thumb9.png?w=567&#038;h=396" width="567" height="396" /></a></p>
<p>The final assignment sets the Year totals to 3 for the Year level; this overwrites the values that have been previously aggregated up from the Quarter level, and the Year level values are again aggregated up to the All level:</p>
<p><a href="http://cwebbbi.files.wordpress.com/2012/02/image10.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://cwebbbi.files.wordpress.com/2012/02/image_thumb10.png?w=569&#038;h=400" width="569" height="400" /></a></p>
<p>Hit F10 some more and you’ll reach the end of the MDX Script, whereupon you’ll go back to the beginning and can start all this again. Go to the Debug menu and click Stop Debugging to finish. Useful bit of functionality, isn’t it? Certainly one of the least-known features of BIDS too.</p>
<p>One last point &#8211; if you try to use the Debugger and hit the infamous SSAS Locale Identifier bug, check out Boyan Penev’s post <a href="http://www.bp-msbi.com/2012/01/ssas-locale-identifier-bug/">here</a> on how to solve this issue.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cwebbbi.wordpress.com/1393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cwebbbi.wordpress.com/1393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cwebbbi.wordpress.com/1393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cwebbbi.wordpress.com/1393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cwebbbi.wordpress.com/1393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cwebbbi.wordpress.com/1393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cwebbbi.wordpress.com/1393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cwebbbi.wordpress.com/1393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cwebbbi.wordpress.com/1393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cwebbbi.wordpress.com/1393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cwebbbi.wordpress.com/1393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cwebbbi.wordpress.com/1393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cwebbbi.wordpress.com/1393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cwebbbi.wordpress.com/1393/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1393&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cwebbbi.wordpress.com/2012/02/21/using-the-mdx-script-debugger-in-bids/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5bf71b793308b6b2992dce78faa85524?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cwebbbi</media:title>
		</media:content>

		<media:content url="http://cwebbbi.files.wordpress.com/2012/02/image_thumb2.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://cwebbbi.files.wordpress.com/2012/02/image_thumb3.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://cwebbbi.files.wordpress.com/2012/02/image_thumb4.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://cwebbbi.files.wordpress.com/2012/02/image_thumb5.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://cwebbbi.files.wordpress.com/2012/02/image_thumb6.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://cwebbbi.files.wordpress.com/2012/02/image_thumb7.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://cwebbbi.files.wordpress.com/2012/02/image_thumb8.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://cwebbbi.files.wordpress.com/2012/02/image_thumb9.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://cwebbbi.files.wordpress.com/2012/02/image_thumb10.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>So, what is the BI Semantic Model?</title>
		<link>http://cwebbbi.wordpress.com/2012/02/14/so-what-is-the-bi-semantic-model/</link>
		<comments>http://cwebbbi.wordpress.com/2012/02/14/so-what-is-the-bi-semantic-model/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 20:22:06 +0000</pubDate>
		<dc:creator>Chris Webb</dc:creator>
				<category><![CDATA[Analysis Services]]></category>
		<category><![CDATA[BISM]]></category>

		<guid isPermaLink="false">https://cwebbbi.wordpress.com/?p=1373</guid>
		<description><![CDATA[Over six years ago now I wrote what proved to be a very popular post here on my blog called “So, what is the UDM?”. It was written in response to the widespread confusion around the time of the release of Analysis Services 2005 about what the term “UDM” actually meant. In a sense “UDM” [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1373&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Over six years ago now I wrote what proved to be a very popular post here on my blog called <a href="http://cwebbbi.wordpress.com/2005/10/14/so-what-is-the-udm/">“So, what is the UDM?”</a>. It was written in response to the widespread confusion around the time of the release of Analysis Services 2005 about what the term “UDM” actually meant. In a sense “UDM” was just another name for an Analysis Services cube, but it also represented the nebulous concept of Analysis Services being a semantic layer suitable for all your reporting needs; however people often thought it was a new product that somehow replaced Analysis Services cubes and got themselves tied in all sorts of knots as a result. Thankfully, use of the term died out pretty quickly as everyone started referring to Analysis Services as, well, Analysis Services.</p>
<p>Fast forward to the present day and I can see a similar amount of confusion about the term “BI Semantic Model” or BISM for many of the same reasons. What is the BI Semantic Model exactly? It is… Analysis Services 2012 plus PowerPivot. Let’s be clear though: it is <strong>not</strong> just the new Analysis Services Tabular Model, although the term BISM is all too often used as if it did mean that. It’s not even a specific bit of software. Analysis Services 2012 consists of two parts, the Multidimensional Model which is the Analysis Services of cubes and dimensions that we already had in 2008 R2 and earlier versions, and the new Tabular model which is the Analysis Services of tables, relationships, in-memory storage and column store. BISM refers to <strong>both</strong> models plus PowerPivot, or rather it refers to the way that Analysis Services and PowerPivot can be used as a semantic layer on top of other data for reporting purposes.</p>
<p>So what’s the point of a term like BISM then if it doesn’t refer to something tangible? Why not just call Analysis Services “Analysis Services” and PowerPivot “PowerPivot”? Well there’s certainly some conceptual stuff going on here (as outlined in the <a href="http://blogs.msdn.com/b/analysisservices/archive/2011/05/16/analysis-services-vision-amp-roadmap-update.aspx">Vision and Roadmap</a> blog post) but just as we had with the term UDM I’d say there’s also some marketing-led obfuscation here as well, for three reasons:</p>
<ul>
<li>A single term like BISM suggests that Analysis Services 2012 and PowerPivot are a single, cohesive product, whereas the Tabular and Multidimensional models are actually very different beasts. If you’re going to be working with Analysis Services 2012 on a project the first decision you’ll have to make is which type of model to use, and if you change your mind later you’ll have to start development again from scratch and learn a lot of new skills. I hope one day that the two models will merge again but it won’t happen soon. </li>
<li>Microsoft has correctly identified that many people want to do BI but were put off by the complexity of building Multidimensional models in previous versions of Analysis Services. The simplicity of the Tabular model goes a long way to solving this problem; Tabular also replaces Report Builder models which were really a just a simple semantic layer for people who didn’t like SSAS or had valid reasons to stay with relational reporting. In order not to scare off this market a new name is necessary to avoid the negative connotations that come with “Analysis Services” and “cubes”. </li>
<li>Calling something a “semantic model” suggests that it’s a nice, light, thin, easy-to implement layer on top of your relational data warehouse, with no data duplication (which is often seen as a Bad Thing) involved. In actual fact anyone who has used the Multidimensional model will know you almost always use MOLAP storage which involves all the data being copied in Analysis Services; and I suspect when people start using the Tabular model they will be using it in Vertipaq mode (where again all the data gets copied into Analysis Services) rather than in DirectQuery mode (where all queries are translated to SQL which is then run against SQL Server). </li>
</ul>
<p>Now I’m not going to suggest that there’s anything wrong with these marketing objectives – anything that sells more Analysis Services is good for me &#8211; or that the Tabular model is bad, or anything like that. All I want to do is suggest that in the SQL Server technical community we stop using the term BISM and instead refer to Analysis Services Multidimensional, Analysis Services Tabular and PowerPivot so we’re always clear about what we’re talking about in blog posts, articles, books and so on. I don’t think using the term BISM is useful in any technical context, just as the term UDM wasn’t in the past, because it is a blanket term for several different things. I also think that so many people are confused about what the term BISM actually means that it is becoming counter-productive to use it: people will not buy into the MS BI stack if they’re not really sure what it consists of.</p>
<p>What does everyone think about this?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cwebbbi.wordpress.com/1373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cwebbbi.wordpress.com/1373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cwebbbi.wordpress.com/1373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cwebbbi.wordpress.com/1373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cwebbbi.wordpress.com/1373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cwebbbi.wordpress.com/1373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cwebbbi.wordpress.com/1373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cwebbbi.wordpress.com/1373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cwebbbi.wordpress.com/1373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cwebbbi.wordpress.com/1373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cwebbbi.wordpress.com/1373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cwebbbi.wordpress.com/1373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cwebbbi.wordpress.com/1373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cwebbbi.wordpress.com/1373/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1373&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cwebbbi.wordpress.com/2012/02/14/so-what-is-the-bi-semantic-model/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5bf71b793308b6b2992dce78faa85524?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cwebbbi</media:title>
		</media:content>
	</item>
		<item>
		<title>DAX Measures, MDX Measures and Type</title>
		<link>http://cwebbbi.wordpress.com/2012/02/08/dax-measures-mdx-measures-and-type/</link>
		<comments>http://cwebbbi.wordpress.com/2012/02/08/dax-measures-mdx-measures-and-type/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 21:39:15 +0000</pubDate>
		<dc:creator>Chris Webb</dc:creator>
				<category><![CDATA[DAX]]></category>
		<category><![CDATA[MDX]]></category>

		<guid isPermaLink="false">https://cwebbbi.wordpress.com/?p=1369</guid>
		<description><![CDATA[One of the strengths of MDX is the fact that calculated measures in MDX are not strongly typed: they return variants. This means that it’s possible to create calculations that return values of several different types, such as the example below that returns text in some cases and integers in others: WITH MEMBER MEASURES.DEMO AS [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1369&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One of the strengths of MDX is the fact that calculated measures in MDX are not strongly typed: they return variants. This means that it’s possible to create calculations that return values of several different types, such as the example below that returns text in some cases and integers in others:</p>
<p>WITH   <br />MEMBER MEASURES.DEMO AS    <br />IIF(    <br />[Measures].[Internet Sales Amount]&gt;7000000    <br />, &quot;TOO HIGH!&quot;    <br />, [Measures].[Internet Sales Amount])</p>
<p>SELECT    <br />{[Measures].[Internet Sales Amount], MEASURES.DEMO}     <br />ON 0,    <br />[Date].[Calendar Year].[Calendar Year].MEMBERS ON 1    <br />FROM [Adventure Works]</p>
<p><a href="http://cwebbbi.files.wordpress.com/2012/02/image.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0;" title="image" border="0" alt="image" src="http://cwebbbi.files.wordpress.com/2012/02/image_thumb.png?w=244&#038;h=148" width="244" height="148" /></a></p>
<p>This gives you a lot of flexibility when writing calculations but it also can be a big problem when you want to extract data from a cube into another system, as anyone who has tried to do this will know.</p>
<p>In DAX and the Tabular model, on the other hand measures, like columns (calculated or otherwise) are strongly typed. Although you can’t see the type of a measure in SQL Server Data Tools when you create it, the automatically inferred type can be found in the <a href="http://technet.microsoft.com/en-gb/library/ms126250(SQL.110).aspx">MDSCHEMA_MEASURES</a> schema rowset and which be queried as follows:</p>
<p>select *    <br />from $system.mdschema_measures</p>
<p><a href="http://cwebbbi.files.wordpress.com/2012/02/image1.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://cwebbbi.files.wordpress.com/2012/02/image_thumb1.png?w=533&#038;h=282" width="533" height="282" /></a></p>
<p>If you try to use an expression for a measure like this that, as in my first example, could return text or an integer:</p>
<p>testtype:=IF(SUM(&#8216;Internet Sales&#8217;[Sales Amount Value])&gt;1000, 1, &quot;test&quot;)   <br />&#160; <br />Then you get the error:    <br />&#160; <br /><em>Measure &#8216;Internet Sales&#8217;[testtype] : The second and third arguments of function IF have different data types. This is not supported.</em></p>
<p>On balance I think I prefer having measures strongly typed, and for one thing it opens up the possibility of using the Tabular model for certain forms of ETL. I’ve already seen one customer of mine replace a CTE in TSQL by loading their data into Tabular and using the <a href="http://www.powerpivotblog.nl/powerpivot-denali-parent-child-using-dax">PATH functions</a> instead, getting some significant performance benefits as a result, and I’m sure there will be plenty of other scenarios where ETL requires complex calculations to take place that the incredible performance of DAX will make loading all the data into a Tabular model (even if the final destination of the data is a relational data warehouse) a serious option.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cwebbbi.wordpress.com/1369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cwebbbi.wordpress.com/1369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cwebbbi.wordpress.com/1369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cwebbbi.wordpress.com/1369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cwebbbi.wordpress.com/1369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cwebbbi.wordpress.com/1369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cwebbbi.wordpress.com/1369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cwebbbi.wordpress.com/1369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cwebbbi.wordpress.com/1369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cwebbbi.wordpress.com/1369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cwebbbi.wordpress.com/1369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cwebbbi.wordpress.com/1369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cwebbbi.wordpress.com/1369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cwebbbi.wordpress.com/1369/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1369&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cwebbbi.wordpress.com/2012/02/08/dax-measures-mdx-measures-and-type/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5bf71b793308b6b2992dce78faa85524?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cwebbbi</media:title>
		</media:content>

		<media:content url="http://cwebbbi.files.wordpress.com/2012/02/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://cwebbbi.files.wordpress.com/2012/02/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>DependsOnDimension</title>
		<link>http://cwebbbi.wordpress.com/2012/02/02/dependsondimension/</link>
		<comments>http://cwebbbi.wordpress.com/2012/02/02/dependsondimension/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 23:30:30 +0000</pubDate>
		<dc:creator>Chris Webb</dc:creator>
				<category><![CDATA[Analysis Services]]></category>
		<category><![CDATA[Aggregations]]></category>

		<guid isPermaLink="false">https://cwebbbi.wordpress.com/?p=1363</guid>
		<description><![CDATA[There are lots of properties in SSAS that have no useful purpose, or whose purpose is somewhat obscure, and one property I’ve always wondered about is the DependsOnDimension property of a dimension. You can find it in the Dimension Editor in BIDS but there’s no indication in the description as to what it does, so [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1363&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There are lots of properties in SSAS that have no useful purpose, or whose purpose is somewhat obscure, and one property I’ve always wondered about is the DependsOnDimension property of a dimension. You can find it in the Dimension Editor in BIDS but there’s no indication in the description as to what it does, so in a moment of idle curiosity I <strike>Googled</strike> Binged it; the best information I found was this forums answer from 2007 from Matt Carroll:</p>
<p><a href="http://social.msdn.microsoft.com/forums/en-US/sqlanalysisservices/thread/bd289ca5-0cb0-4279-8947-ffa2690bcd1e/">http://social.msdn.microsoft.com/forums/en-US/sqlanalysisservices/thread/bd289ca5-0cb0-4279-8947-ffa2690bcd1e/</a></p>
<p><em>DependsOnDimension is really just a hint for use when designing aggregations using the Aggregation Design Wizard or the Usage Based Optimization Wizard.&#160; Normally the aggregation design algorithm estimates the size of aggregations assuming dimesions are independent, but this property lets it know that one dimension is strongly determined by another dimension.&#160; This should not affect your browsing experience in any way.</em></p>
<p><em>In Analysis Services 2000, DependsOnDimension was also used as part of the definition of virtual dimensions as a way of specifying the source for virtual dimension&#8217;s levels.</em></p>
<p>I did some quick experiments in BIDS and couldn’t see any evidence that setting this property affected what aggregations were designed by the Aggregation Design Wizard, but they weren’t exhaustive tests by any means. If you’re taking the trouble to enter row counts and set the AggregationUsage property you should probably try setting it if you have any dimensions that are very closely linked, just in case it does have an impact.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cwebbbi.wordpress.com/1363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cwebbbi.wordpress.com/1363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cwebbbi.wordpress.com/1363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cwebbbi.wordpress.com/1363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cwebbbi.wordpress.com/1363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cwebbbi.wordpress.com/1363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cwebbbi.wordpress.com/1363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cwebbbi.wordpress.com/1363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cwebbbi.wordpress.com/1363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cwebbbi.wordpress.com/1363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cwebbbi.wordpress.com/1363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cwebbbi.wordpress.com/1363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cwebbbi.wordpress.com/1363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cwebbbi.wordpress.com/1363/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1363&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cwebbbi.wordpress.com/2012/02/02/dependsondimension/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5bf71b793308b6b2992dce78faa85524?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cwebbbi</media:title>
		</media:content>
	</item>
		<item>
		<title>Many-to-Many Relationships and Partition Slices</title>
		<link>http://cwebbbi.wordpress.com/2012/01/24/many-to-many-relationships-and-partition-slices/</link>
		<comments>http://cwebbbi.wordpress.com/2012/01/24/many-to-many-relationships-and-partition-slices/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 20:46:50 +0000</pubDate>
		<dc:creator>Chris Webb</dc:creator>
				<category><![CDATA[Analysis Services]]></category>

		<guid isPermaLink="false">https://cwebbbi.wordpress.com/?p=1360</guid>
		<description><![CDATA[As you’re probably aware one of the benefits of partitioning a measure group is that it can improve query performance: for example, if you have partitioned your measure group by year and you run a query that only requests data for a particular year, then SSAS should only query the partition that holds the data [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1360&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As you’re probably aware one of the benefits of partitioning a measure group is that it can improve query performance: for example, if you have partitioned your measure group by year and you run a query that only requests data for a particular year, then SSAS should only query the partition that holds the data for the year you’ve requested. There are however several scenarios where SSAS will scan partitions you would not expect it to scan &#8211; the ones I knew about up to now are all listed in the <a href="http://www.packtpub.com/article/query-performance-tuning-microsoft-analysis-services-part1">“Unexpected Partition Scans” section</a> in this excerpt from “<a href="http://www.amazon.co.uk/gp/product/1847197221/ref=as_li_ss_tl?ie=UTF8&amp;tag=chriswebbsbib-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=1847197221">Expert Cube Development</a>” &#8211; and I’ve just come across another scenario where this happens.</p>
<p>I was working with a customer the other week that had implemented Dave Fackler’s approach to handling multiple calendars using many-to-many relationships, as detailed in these two blog posts:    <br /><a href="http://davefackler.blogspot.com/2008/05/handling-multiple-calendars-with-m2m.html">http://davefackler.blogspot.com/2008/05/handling-multiple-calendars-with-m2m.html</a>     <br /><a href="http://davefackler.blogspot.com/2008/06/handling-multiple-calendars-with-m2m.html">http://davefackler.blogspot.com/2008/06/handling-multiple-calendars-with-m2m.html</a></p>
<p>Now there’s absolutely nothing wrong with the design that Dave describes here – it’s a classic application for many-to-many relationships &#8211; and there aren’t any better ways of meeting this requirement. However, what I noticed when looking in Profiler at the customer’s cube was that all of the queries I was writing were resulting in reads on all of the partitions in the main measure group, even when I expected only one partition should be hit, and this was slowing the queries down a lot. </p>
<p>You can recreate the same problem in the version of the Adventure Works that Dave posts on his blog. Take the following query that uses the regular Adventure Works Date dimension and does not use the m2m relationship:</p>
<p>select {[Measures].[Reseller Sales Amount]} on 0,   <br />{[Date].[Calendar].[Month].&amp;[2004]&amp;[3]}     <br />on 1    <br />from [Adventure Works]</p>
<p>When run on a cold cache, in Profiler you can see that it only results in the Reseller Sales 2004 partition being hit in the Reseller Sales measure group:</p>
<p><a href="http://cwebbbi.files.wordpress.com/2012/01/image4.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://cwebbbi.files.wordpress.com/2012/01/image_thumb4.png?w=346&#038;h=211" width="346" height="211" /></a></p>
<p>This is exactly as you’d expect. However if you request the same month (March 2004) via the Calendar dimension, which is connected to the Reseller Sales measure group via a m2m relationship and the Date dimension, you see all the partitions on Reseller Sales are hit:</p>
<p>select {[Measures].[Reseller Sales Amount]} on 0,   <br />{[Calendar].[Year-Quarter-Month].[Month].&amp;[2000200409]}    <br />on 1    <br />from [Adventure Works]</p>
<p><a href="http://cwebbbi.files.wordpress.com/2012/01/image5.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://cwebbbi.files.wordpress.com/2012/01/image_thumb5.png?w=339&#038;h=318" width="339" height="318" /></a></p>
<p>Not so good. But it turns out that this is an unavoidable side-effect of using many-to-many relationships: a filter on a many-to-many dimension (in this case the Calendar dimension) does not result in a filter being applied on the intermediate dimension (the Date dimension) to the measure group (Reseller Sales). <a href="http://www.artisconsulting.com/blogs/greggalloway/default.aspx">Greg Galloway</a> came across this some time ago and filed an issue on <a href="https://connect.microsoft.com/SQLServer/feedback/details/636981/many-to-many-dimensions-should-cause-storage-engine-filtering-on-the-data-measure-group">Connect</a> which confirms that this is by design.</p>
<p>Given that I doubt this behaviour will be changed any time soon, the takeaway is that when you’re planning your partitioning strategy you should think twice about partitioning using a dimension that is used as an intermediate dimension in a many-to-many relationship. Otherwise you will lose all of the performance benefits of partitioning when your queries use that many-to-many relationship…</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cwebbbi.wordpress.com/1360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cwebbbi.wordpress.com/1360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cwebbbi.wordpress.com/1360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cwebbbi.wordpress.com/1360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cwebbbi.wordpress.com/1360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cwebbbi.wordpress.com/1360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cwebbbi.wordpress.com/1360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cwebbbi.wordpress.com/1360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cwebbbi.wordpress.com/1360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cwebbbi.wordpress.com/1360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cwebbbi.wordpress.com/1360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cwebbbi.wordpress.com/1360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cwebbbi.wordpress.com/1360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cwebbbi.wordpress.com/1360/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1360&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cwebbbi.wordpress.com/2012/01/24/many-to-many-relationships-and-partition-slices/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5bf71b793308b6b2992dce78faa85524?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cwebbbi</media:title>
		</media:content>

		<media:content url="http://cwebbbi.files.wordpress.com/2012/01/image_thumb4.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://cwebbbi.files.wordpress.com/2012/01/image_thumb5.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>SQLBits X Agenda Published</title>
		<link>http://cwebbbi.wordpress.com/2012/01/17/sqlbits-x-agenda-published/</link>
		<comments>http://cwebbbi.wordpress.com/2012/01/17/sqlbits-x-agenda-published/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 20:38:25 +0000</pubDate>
		<dc:creator>Chris Webb</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[SQLBits]]></category>

		<guid isPermaLink="false">https://cwebbbi.wordpress.com/?p=1354</guid>
		<description><![CDATA[The agenda for the Friday and Saturday of SQLBits X is now published, and you can see it here: http://sqlbits.com/information/Agenda.aspx?20120330 http://sqlbits.com/information/Agenda.aspx?20120331 If you were wondering whether to come hopefully this will make up your mind – but given that almost 1000 SQL Server professionals from all round the world have already registered, so you’d better [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1354&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The agenda for the Friday and Saturday of SQLBits X is now published, and you can see it here:   <br /><a href="http://sqlbits.com/information/Agenda.aspx?20120330">http://sqlbits.com/information/Agenda.aspx?20120330</a>    <br /><a href="http://sqlbits.com/information/Agenda.aspx?20120331">http://sqlbits.com/information/Agenda.aspx?20120331</a></p>
<p>If you were wondering whether to come hopefully this will make up your mind – but given that almost 1000 SQL Server professionals from all round the world have already registered, so you’d better book fast if you want to be sure of a space. There are loads of SSAS-related sessions to choose from, including ones from Cathy Dumas, Marco Russo, Alberto Ferrari, John Tunnicliffe, Erika Bakse, Akshai Mirchandani, Stephan Stolze, Bob Duffy and, errr, me. Trust me, it’s going to be great!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cwebbbi.wordpress.com/1354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cwebbbi.wordpress.com/1354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cwebbbi.wordpress.com/1354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cwebbbi.wordpress.com/1354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cwebbbi.wordpress.com/1354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cwebbbi.wordpress.com/1354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cwebbbi.wordpress.com/1354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cwebbbi.wordpress.com/1354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cwebbbi.wordpress.com/1354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cwebbbi.wordpress.com/1354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cwebbbi.wordpress.com/1354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cwebbbi.wordpress.com/1354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cwebbbi.wordpress.com/1354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cwebbbi.wordpress.com/1354/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1354&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cwebbbi.wordpress.com/2012/01/17/sqlbits-x-agenda-published/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5bf71b793308b6b2992dce78faa85524?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cwebbbi</media:title>
		</media:content>
	</item>
		<item>
		<title>PASS: Time to do a lot more than change the by-laws</title>
		<link>http://cwebbbi.wordpress.com/2012/01/14/pass-time-to-do-a-lot-more-than-change-the-by-laws/</link>
		<comments>http://cwebbbi.wordpress.com/2012/01/14/pass-time-to-do-a-lot-more-than-change-the-by-laws/#comments</comments>
		<pubDate>Sat, 14 Jan 2012 23:36:06 +0000</pubDate>
		<dc:creator>Chris Webb</dc:creator>
				<category><![CDATA[PASS]]></category>

		<guid isPermaLink="false">https://cwebbbi.wordpress.com/?p=1352</guid>
		<description><![CDATA[I read the following posts by Andy Warren and Steve Jones today, and before you hear what my thoughts on the subjects they discuss you should probably read them too: http://www.sqlandy.com/index.php/2012/01/pass-time-to-change-the-by-laws/ http://voiceofthedba.wordpress.com/2012/01/13/ethics-and-power (In the interests of full disclosure let me state that I know James Rowland-Jones pretty well because we’re both involved in running SQLBits, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1352&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I read the following posts by Andy Warren and Steve Jones today, and before you hear what my thoughts on the subjects they discuss you should probably read them too:   <br /><a href="http://www.sqlandy.com/index.php/2012/01/pass-time-to-change-the-by-laws/">http://www.sqlandy.com/index.php/2012/01/pass-time-to-change-the-by-laws/</a>    <br /><a href="http://voiceofthedba.wordpress.com/2012/01/13/ethics-and-power">http://voiceofthedba.wordpress.com/2012/01/13/ethics-and-power</a></p>
<p>(In the interests of full disclosure let me state that I know James Rowland-Jones pretty well because we’re both involved in running <a href="http://sqlbits.com/">SQLBits</a>, but the first I knew about his being appointed to a voting position on the PASS board were the above posts. What follows are my opinions alone, written without consultation with James or anyone else).</p>
<p>I completely understand why Andy and Steve are upset. I have an awful lot of respect for them and their views. From their – perfectly valid – perspective, what has happened is unfair and undemocratic. However I suspect there’s a reason for what has happened, and that reason can be found <a href="http://www.sqlandy.com/index.php/2011/12/sqlsaturday-goes-international/">elsewhere</a> on Andy’s blog:</p>
<p><em>For too long PASS (and SQLSaturday) have been US centric.</em></p>
<p>In my opinion the big problem with PASS is that on one hand it’s a self-described international organisation (number #3 on its list of <a href="http://www.sqlpass.org/AboutPASS.aspx">current and future strategic objectives</a> is to “Focus on International Growth and Consolidation”) but it is, in effect a North American user group with a North American focus, run by North Americans. As far as I know the vast majority the membership of PASS is in North America and therefore it’s not surprising that North Americans dominate the board: PASS members vote for candidates they know and can relate to, and who address their concerns. And that also, to me, explains why despite its good intentions PASS has had such problems with its international role: the only way it can be successful internationally will be if it has a genuinely international element in its leadership, but that’s clearly never going to happen while membership is so skewed towards North America. It’s a vicious circle. </p>
<p>You could argue that as PASS, and especially SQL Saturday, expands internationally it will attract more members from outside the US then more international candidates will make it onto the board through democratic means. Indeed, Rob Farley’s success in the recent elections could be a sign that this is happening. I certainly voted for Rob not only because I know, like and respect him but because of <a href="http://sqlblog.com/blogs/andy_leonard/archive/2011/11/02/2011-pass-board-applicants-rob-farley.aspx">his stance on international issues</a>. The problem is that even if the level of participation in PASS elections everywhere in the world reached the same level as it has reached in the US today (and even an optimist would accept that we’re still a long time away from this happening) the PASS board would still be dominated by North Americans simply because it’s the biggest single market for SQL Server. Moreover some countries and territories would never have any effective representation because they would be simply too small. The world isn’t divided into the US and ‘everywhere else’ but each SQL community has its own identity and its own challenges and deserves representation. Not every community is as lucky as Australia to have someone like Rob who is a native English speaker, has an impressive technical reputation and can spend the time and yes the money (those plane tickets to the PASS conference aren’t cheap) to become sufficiently well-known in the North American community to win a PASS election.</p>
<p>So why should, say, the UK SQL Server community get a voice on the board that is out of proportion with its relative size? That is what I’m arguing for and it might seem fundamentally undemocratic. However the challenge of effectively representing different, geographically distributed subcommunities inside a larger community is one that all large, diverse democracies have to deal with. Why should Rhode Island have the same number of seats in the US Senate as California? The answer is that this has to happen for the larger community to gain democratic legitimacy within the smaller subcommunities. If this doesn’t happen in PASS it risks disinterest, disengagement and at worse resentment in its non-US chapters – the smaller communities will quite rightly realise they are better off on their own because their interests are not being considered. Unfortunately I’ve already encountered a certain amount of resentment towards PASS for exactly this reason over the years I’ve been involved in the SQL community in Europe and I would hate to see that grow; it’s certainly the reason for the historic weakness of PASS in the UK. </p>
<p>The appointment of James and Raoul Illyés as international advisers to the <a href="http://www.sqlpass.org/AboutPASS/BoardofDirectors.aspx#Board_Advisors">PASS Board of Directors</a> was clearly an attempt to address the problems of international engagement and break the vicious circle I describe above, and I’m sure the same motives were behind James’s appointment to a voting position. I strongly believe that this move was the only way that any traction on the international issue could be gained. But as I said I can understand why Steve and Andy are upset and that’s not acceptable either. What can be done? I suggest that if PASS is serious about becoming an international organisation then wholesale constitutional reform is necessary to ensure that international chapters have a voice and a vote. To use a US-friendly analogy, PASS needs its own <a href="http://en.wikipedia.org/wiki/Connecticut_Compromise">Connecticut Compromise</a>: alongside the board we need another, parallel body with equal representation for each chapter in the world. I would like to see discussion on how such reforms could take place as soon as possible, otherwise there’s a risk each SQL community in each country will end up going its own separate way and that won’t be good for anyone. Whatever our nationalities and whatever our cultural differences we all have SQL Server in common and working together will bring benefits to all of us.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cwebbbi.wordpress.com/1352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cwebbbi.wordpress.com/1352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cwebbbi.wordpress.com/1352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cwebbbi.wordpress.com/1352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cwebbbi.wordpress.com/1352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cwebbbi.wordpress.com/1352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cwebbbi.wordpress.com/1352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cwebbbi.wordpress.com/1352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cwebbbi.wordpress.com/1352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cwebbbi.wordpress.com/1352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cwebbbi.wordpress.com/1352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cwebbbi.wordpress.com/1352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cwebbbi.wordpress.com/1352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cwebbbi.wordpress.com/1352/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1352&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cwebbbi.wordpress.com/2012/01/14/pass-time-to-do-a-lot-more-than-change-the-by-laws/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5bf71b793308b6b2992dce78faa85524?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cwebbbi</media:title>
		</media:content>
	</item>
		<item>
		<title>Aliasing Columns in DAX</title>
		<link>http://cwebbbi.wordpress.com/2012/01/12/aliasing-columns-in-dax/</link>
		<comments>http://cwebbbi.wordpress.com/2012/01/12/aliasing-columns-in-dax/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 12:01:03 +0000</pubDate>
		<dc:creator>Chris Webb</dc:creator>
				<category><![CDATA[DAX]]></category>

		<guid isPermaLink="false">https://cwebbbi.wordpress.com/?p=1350</guid>
		<description><![CDATA[Creating a copy of a column with a new name is pretty simple in DAX: you can just use the AddColumns() function. For example if we take a model with the DimProductCategory table from Adventure Works in, we could create a copy of the EnglishProductCategoryName column like so: evaluate addcolumns( DimProductCategory , &#34;Copy of Category [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1350&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Creating a copy of a column with a new name is pretty simple in DAX: you can just use the AddColumns() function. For example if we take a model with the DimProductCategory table from Adventure Works in, we could create a copy of the EnglishProductCategoryName column like so:</p>
<p>evaluate    <br />addcolumns(    <br />DimProductCategory    <br />, &quot;Copy of Category Name&quot;    <br />, DimProductCategory[EnglishProductCategoryName])</p>
<p><a href="http://cwebbbi.files.wordpress.com/2012/01/image2.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://cwebbbi.files.wordpress.com/2012/01/image_thumb2.png?w=666&#038;h=92" width="666" height="92" /></a></p>
<p>However, in some calculations and queries I’ve been playing around with, this isn’t enough: I’ve not only needed to create a copy of the column but also to remove the original. So for example to crossjoin the DimProductCategory table with itself and get a cartesian product of all the possible combinations of Category name you can’t just do this:</p>
<p>evaluate    <br />crossjoin(    <br />summarize(    <br />DimProductCategory    <br />, DimProductCategory[EnglishProductCategoryName])    <br />,    <br />summarize(    <br />DimProductCategory    <br />, DimProductCategory[EnglishProductCategoryName])    <br />)</p>
<p>Because you’ll get the following error:</p>
<p>&#160;<em>Function CROSSJOIN does not allow two columns with the same name &#8216;DimProductCategory&#8217;[EnglishProductCategoryName].</em></p>
<p>What you need to do is add the new column with AddColumns() and then use Summarize() to get a new table that only contains the values in this new column, like so:</p>
<p>evaluate    <br />crossjoin(    <br />summarize(    <br />DimProductCategory    <br />, DimProductCategory[EnglishProductCategoryName])    <br />,    <br />summarize(    <br />addcolumns(    <br />DimProductCategory    <br />, &quot;Copy of Category Name&quot;    <br />, DimProductCategory[EnglishProductCategoryName])    <br />, [Copy of Category Name])    <br />)</p>
<p><a href="http://cwebbbi.files.wordpress.com/2012/01/image3.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://cwebbbi.files.wordpress.com/2012/01/image_thumb3.png?w=368&#038;h=295" width="368" height="295" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cwebbbi.wordpress.com/1350/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cwebbbi.wordpress.com/1350/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cwebbbi.wordpress.com/1350/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cwebbbi.wordpress.com/1350/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cwebbbi.wordpress.com/1350/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cwebbbi.wordpress.com/1350/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cwebbbi.wordpress.com/1350/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cwebbbi.wordpress.com/1350/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cwebbbi.wordpress.com/1350/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cwebbbi.wordpress.com/1350/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cwebbbi.wordpress.com/1350/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cwebbbi.wordpress.com/1350/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cwebbbi.wordpress.com/1350/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cwebbbi.wordpress.com/1350/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1350&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cwebbbi.wordpress.com/2012/01/12/aliasing-columns-in-dax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5bf71b793308b6b2992dce78faa85524?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cwebbbi</media:title>
		</media:content>

		<media:content url="http://cwebbbi.files.wordpress.com/2012/01/image_thumb2.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://cwebbbi.files.wordpress.com/2012/01/image_thumb3.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>The DAX DateAdd function and missing dates</title>
		<link>http://cwebbbi.wordpress.com/2012/01/06/the-dax-dateadd-function-and-missing-dates/</link>
		<comments>http://cwebbbi.wordpress.com/2012/01/06/the-dax-dateadd-function-and-missing-dates/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 12:05:44 +0000</pubDate>
		<dc:creator>Chris Webb</dc:creator>
				<category><![CDATA[DAX]]></category>

		<guid isPermaLink="false">https://cwebbbi.wordpress.com/?p=1344</guid>
		<description><![CDATA[A little while ago I was working with a date column in a Tabular model and wanted to create a calculated column that returned a date 100 days after the original date. Without thinking too much about it, I started off by using the DAX DateAdd() function – after all, I wanted to add some [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1344&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A little while ago I was working with a date column in a Tabular model and wanted to create a calculated column that returned a date 100 days after the original date. Without thinking too much about it, I started off by using the DAX DateAdd() function – after all, I wanted to add some days to a date so it seemed like the obvious function to use. You can recreate this scenario in Adventure Works by importing the DimDate table into a new model in SSDT (SQL Server Data Tools, not BIDS – don’t forget to use the new name!) and then adding a new calculated column with the following expression:</p>
<p>=DATEADD(DimDate[FullDateAlternateKey], 100, day)</p>
<p><a href="http://cwebbbi.files.wordpress.com/2012/01/image.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://cwebbbi.files.wordpress.com/2012/01/image_thumb.png?w=484&#038;h=362" width="484" height="362" /></a></p>
<p>What I noticed was that it only worked for some dates and not all; for example, in the screenshot above it works up to September 22nd and not afterwards. This threw me for a few minutes, and then I realised what the problem was. In fact, the reason is mentioned (though maybe not explained as well as it should be) in the <a href="http://technet.microsoft.com/en-us/library/ee634905.aspx">documentation for the DateAdd function</a>:</p>
<p><em>The result table includes only dates that exist in the dates column.</em></p>
<p>The reason why DateAdd was returning a value for September 22nd 2006 was that the value December 31st 2006 existed in the FullDateAlternateKey column; it was not returning anything for September 23rd 2006 because the date January 1st 2007 did not exist in FullDateAlternateKey.</p>
<p>In fact there was an even easier way to do what I wanted to do, since the DAX date type is really a decimal value where the integer portion is the number of days – I could just add 100 to the date, as follows:</p>
<p>=DimDate[FullDateAlternateKey]+100</p>
<p><a href="http://cwebbbi.files.wordpress.com/2012/01/image1.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:0 5px;" title="image" border="0" alt="image" src="http://cwebbbi.files.wordpress.com/2012/01/image_thumb1.png?w=495&#038;h=310" width="495" height="310" /></a></p>
<p>So, not a great discovery and certainly nothing that wasn’t known about before, but I thought it was worth mentioning because I’m sure other people (as <a href="http://connect.microsoft.com/SQLServer/feedback/details/538648/kjtap-mediterranean-shipping-company-dax-dateadd-does-not-return-values-for-some-dates">here</a>, for example) will fall into the same trap as me.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cwebbbi.wordpress.com/1344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cwebbbi.wordpress.com/1344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cwebbbi.wordpress.com/1344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cwebbbi.wordpress.com/1344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cwebbbi.wordpress.com/1344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cwebbbi.wordpress.com/1344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cwebbbi.wordpress.com/1344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cwebbbi.wordpress.com/1344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cwebbbi.wordpress.com/1344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cwebbbi.wordpress.com/1344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cwebbbi.wordpress.com/1344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cwebbbi.wordpress.com/1344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cwebbbi.wordpress.com/1344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cwebbbi.wordpress.com/1344/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1344&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cwebbbi.wordpress.com/2012/01/06/the-dax-dateadd-function-and-missing-dates/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5bf71b793308b6b2992dce78faa85524?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cwebbbi</media:title>
		</media:content>

		<media:content url="http://cwebbbi.files.wordpress.com/2012/01/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://cwebbbi.files.wordpress.com/2012/01/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Seventh Blog Birthday</title>
		<link>http://cwebbbi.wordpress.com/2011/12/30/seventh-blog-birthday/</link>
		<comments>http://cwebbbi.wordpress.com/2011/12/30/seventh-blog-birthday/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 11:32:31 +0000</pubDate>
		<dc:creator>Chris Webb</dc:creator>
				<category><![CDATA[Off-topic]]></category>

		<guid isPermaLink="false">https://cwebbbi.wordpress.com/?p=1338</guid>
		<description><![CDATA[So here we are again, yet another blog birthday – the seventh anniversary of my first ever post on this blog and a chance to review 2011. From a technical point of view this year has been dominated by learning SSAS 2012 Tabular. I’m right in the middle of writing a book about it with [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1338&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So here we are again, yet another blog birthday – the seventh anniversary of my first ever post on this blog and a chance to review 2011.</p>
<p>From a technical point of view this year has been dominated by learning SSAS 2012 Tabular. I’m right in the middle of writing a book about it with <a href="http://sqlblog.com/blogs/marco_russo/default.aspx">Marco</a> and <a href="http://sqlblog.com/blogs/alberto_ferrari/default.aspx">Alberto</a>, and it’ll be published sometime in the first half of next year. As usual writing a book turns out to be ten times more effort than I’d originally planned but it is undoubtedly the best way of learning a new technology: however well you think you know a product, you always find gaps in your knowledge when you have to write about it. My opinion of Tabular continues to grow the more I use it and DAX so I’m feeling very positive about the future and I’m interested to see what the uptake of it will be like after RTM. I’m also very excited to see how Microsoft’s cloud-BI strategy pans out in the next year: products like <a href="http://cwebbbi.wordpress.com/2011/12/07/using-google-docs-data-explorer-and-powerpivot-for-questionnaires/">Data Explorer</a> suggest that Microsoft is serious about this area and, more importantly, coming up with innovative new solutions to its challenges rather than just producing cloud-hosted versions of the software we’ve already got. There are going to be a lot of cool blog posts to write in 2012…</p>
<p>Business-wise I’ve continued to spend more and more time running training courses and a few months ago launched my new training website <a href="http://technitrain.com/?trackingcode=CWB">Technitrain</a> to market not only my <a href="http://www.technitrain.com/coursedetail.php?c=7&amp;trackingcode=CWB">SSAS</a> and <a href="http://technitrain.com/coursedetail.php?c=9&amp;trackingcode=CWB">MDX</a> courses but those run by other well-known SQL Server pros. Our first third-party course with <a href="http://sqlblogcasts.com/blogs/christian/">Christian Bolton</a> went well, and next year we’ve got several others booked in. You can see the full course catalogue <a href="http://technitrain.com/courses.php?trackingcode=CWB">here</a>; I’d also like to point out the new, lower prices on <a href="http://www.technitrain.com/coursedetail.php?c=6&amp;trackingcode=CWB">Jeremy Kashel’s Master Data Services course</a> and <a href="http://technitrain.com/coursedetail.php?c=8&amp;trackingcode=CWB">Andy Leonard’s SSIS course</a>. Frankly £1248 for a full week of training, let alone from someone of the calibre of <a href="http://sqlblog.com/blogs/andy_leonard/">Andy Leonard</a>, is a bargain… although I’d argue it only looks that way because we’re too used to the inflated prices of most traditional training companies. More course dates will be announced very soon.</p>
<p>As far as the SQL community goes, I’m very busy speaking at user groups and helping to run <a href="http://sqlbits.com/">SQLBits</a>. The two SQLBits conferences last year in Brighton and Liverpool were great successes, and I still can’t believe we had Steve Wozniak turn up to speak at Brighton; SQLBits 10, which will be running from the 29th-31st of March next year, is already looking like it will beat all previous records for attendance (we’ve got 582 registrations at the time of writing) and will be the biggest and best yet. Next month I’ll be speaking in the UK at the <a href="http://sqlserverfaq.com/events/336/Chris-Webb-and-John-Q-Martin-presenting.aspx">Southampton SQL Server User Group</a> on January 11th, and on January 12th I’ll be speaking at the <a href="http://bi.sqlpass.org/">PASS BI Virtual Chapter</a> so I hope to see some of you there.</p>
<p>Anyway, that’s enough of me going on – it’s time to get back to my writing. Happy New Year everyone!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cwebbbi.wordpress.com/1338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cwebbbi.wordpress.com/1338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cwebbbi.wordpress.com/1338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cwebbbi.wordpress.com/1338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cwebbbi.wordpress.com/1338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cwebbbi.wordpress.com/1338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cwebbbi.wordpress.com/1338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cwebbbi.wordpress.com/1338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cwebbbi.wordpress.com/1338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cwebbbi.wordpress.com/1338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cwebbbi.wordpress.com/1338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cwebbbi.wordpress.com/1338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cwebbbi.wordpress.com/1338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cwebbbi.wordpress.com/1338/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cwebbbi.wordpress.com&amp;blog=16411407&amp;post=1338&amp;subd=cwebbbi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cwebbbi.wordpress.com/2011/12/30/seventh-blog-birthday/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5bf71b793308b6b2992dce78faa85524?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cwebbbi</media:title>
		</media:content>
	</item>
	</channel>
</rss>
