<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Data Inspirations &#187; SSAS</title>
	<atom:link href="http://blog.datainspirations.com/tag/ssas/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.datainspirations.com</link>
	<description>Inspiring Intelligence from Information</description>
	<lastBuildDate>Thu, 02 Feb 2012 01:12:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>SQL Community, Twitter, and Hashtags</title>
		<link>http://blog.datainspirations.com/2011/10/20/sql-community-twitter-and-hashtags/</link>
		<comments>http://blog.datainspirations.com/2011/10/20/sql-community-twitter-and-hashtags/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 16:11:23 +0000</pubDate>
		<dc:creator>Stacia Misner</dc:creator>
				<category><![CDATA[BI]]></category>
		<category><![CDATA[SSAS]]></category>

		<guid isPermaLink="false">http://blog.datainspirations.com/2011/10/20/sql-community-twitter-and-hashtags/</guid>
		<description><![CDATA[I’ve been working with the Microsoft SQL Server BI stack since late 2000. When I started with SQL Server, my “community” consisted of my co-workers, my clients, and me. As communities go, it was a great community to be in. In 2001, our small boutique consulting company EssPro, founded by Mike Luckevitch, merged with another [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been working with the Microsoft SQL Server BI stack since late 2000. When I started with SQL Server, my “community” consisted of my co-workers, my clients, and me. As communities go, it was a great community to be in. In 2001, our small boutique consulting company EssPro, founded by Mike Luckevitch, merged with another small boutique consulting company called Aspirity to create…Aspirity (which we lovingly referred to for a while as Aspirity 2 internally). Aspirity was the company who wrote the Microsoft Official Curriculum for the SQL Server 2000 BI stack – the DTS, OLAP, and MDX courses. I learned a lot about these products from the likes of Hilary Feier, Liz Vitt, Reed Jacobson, and Tom Chester. I even learned enough that they let me teach those courses, and thus my career as a BI trainer was launched. Eventually, they even let me write new courses and help co-author a book with Mike and Liz, <a href="http://www.amazon.com/Business-Intelligence-Making-Better-Decisions/dp/0735616272/ref=sr_1_1?ie=UTF8&amp;qid=1319125519&amp;sr=8-1" target="_blank">Business Intelligence: Making Better Decisions Faster</a>, thus launching my career as an author. Now that’s a great community!</p>
<p>But as great as that community was, it was only a microcosm of all the people working day in and day out with the Microsoft BI stack. I met many of them over the years at various Microsoft events, including my first PASS Summit in 2002. But in the early years of the past decade, I was one of many in an organization (even if it was small) that couldn’t send everyone to PASS, so it wasn’t until 2006 when I went independent that I could start going to PASS regularly. My community circle widened and PASS became a reunion for community. But even of all the people who were attending PASS, they still represented only a fraction of the community at large.</p>
<p>Somewhere along the line, Twitter became a phenomenon with the SQL Server community. When I first learned about Twitter, I didn’t understand the big deal. But now that I’ve been tweeting for a while, I’ve really come to appreciate the power of this medium for building relationships, sharing knowledge, and helping one another. I appreciate Twitter for its ability to create and foster community. And for a good laugh from time to time. So no matter where in the world that we find ourselves, our community is only a tweet away. We don’t need to meet face to face to be part of community. We simply need to engage.</p>
<p>One of the ways that the SQL Community engages to help one another by using Twitter is to use the #sqlhelp hashtag. (If you’re new to Twitter, a hashtag is a string of characters preceded by the # symbol and used to filter tweets so that you can easily find the tweets related to a particular topic.) But the SQL Server stack is loaded with a variety of technologies, and there’s a lot more traffic related to database engine Q &amp; A than this business intelligence girl can sift through to spot where I can help. </p>
<p>Mark Vaillancourt (<a href="http://markvsql.com" target="_blank">blog</a> | <a href="http://twitter.com/markvsql" target="_blank">twitter</a>) – a thoroughly entertaining fellow that I met last week at PASS Summit 2011 – proposed the idea that the community should separate these Twitter traffic streams and <a href="http://markvsql.com/2011/10/announcing-the-ssrshelp-twitter-hashtag/" target="_blank">introduced the #SSRSHelp hashtag</a> earlier this week. Following along on that theme, I asked my fellow SSAS Maestro Council members if they would be willing to help me monitor a new hashtag, #SSASHelp, for questions related to Analysis Services and they agreed. Joining me are:</p>
<ul>
<li>MVP Adam Jorgenson (<a href="http://bidn.com/blogs/AdamJorgensen" target="_blank">blog</a> | <a href="http://twitter.com/adam_jorgensen" target="_blank">twitter</a>) </li>
<li>MVP Marco Russo (<a href="http://sqlblog.com/blogs/marco_russo" target="_blank">blog</a> | <a href="http://twitter.com/marcorus" target="_blank">twitter</a>) </li>
<li>MVP Chris Webb (<a href="http://cwebbbi.wordpress.com/" target="_blank">blog</a> | <a href="http://twitter.com/Technitrain" target="_blank">twitter</a>) </li>
</ul>
<p>Of course, anyone can help us answer questions. Although the four of us are spread out across the US and Europe, covering a variety of time zones, we’re busy folks too (and occasionally sleep), so we can’t promise to be instantly available. The more people involved in helping, the more people we can help. And that’s what makes this community so awesome!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.datainspirations.com/2011/10/20/sql-community-twitter-and-hashtags/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SQLU SSAS Week: Cube Deployment 101</title>
		<link>http://blog.datainspirations.com/2011/05/17/sqlu-ssas-week-cube-deployment-101/</link>
		<comments>http://blog.datainspirations.com/2011/05/17/sqlu-ssas-week-cube-deployment-101/#comments</comments>
		<pubDate>Tue, 17 May 2011 22:50:03 +0000</pubDate>
		<dc:creator>Stacia Misner</dc:creator>
				<category><![CDATA[Analysis Services]]></category>
		<category><![CDATA[SQL University]]></category>
		<category><![CDATA[SSAS]]></category>

		<guid isPermaLink="false">http://blog.datainspirations.com/2011/05/17/sqlu-ssas-week-cube-deployment-101/</guid>
		<description><![CDATA[This is the fifth and final post for SSAS week at SQL University. If you’re just joining the class, you should review the previous lessons first: Why Do I Need a Cube &#38; How Do I Get Started Dimension Design 101 Cube Construction 101 Cube Enhancements 101 Today, I’ll show you how to secure access [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sqlchicken.com/sql-university" target="_blank"><img class="size-full wp-image-428 alignleft" title="SQL University" src="http://blog.datainspirations.com/wp-content/uploads/2011/05/SQL_University.png" alt="" width="175" height="200" /></a>This is the fifth and final post for SSAS week at <a href="http://sqlchicken.com/sql-university/" target="_blank">SQL University</a>. If you’re just joining the class, you should review the previous lessons first:</p>
<ul>
<li><a title="SQLU SSAS Week: Why Do I Need a Cube &amp; How Do I Get Started?" href="http://blog.datainspirations.com/2011/05/11/sqlu-ssas-week-why-do-i-need-a-cube-how-do-i-get-started/">Why Do I Need a Cube &amp; How Do I Get Started</a></li>
<li><a href="http://blog.datainspirations.com/2011/05/11/sqlu-ssas-week-dimension-design-101-2/">Dimension Design 101</a></li>
<li><a href="http://blog.datainspirations.com/2011/05/12/sqlu-ssas-week-cube-construction-101/">Cube Construction 101</a></li>
<li><a href="http://blog.datainspirations.com/2011/05/15/sqlu-ssas-week-cube-enhancements-101/">Cube Enhancements 101</a></li>
</ul>
<p>Today, I’ll show you how to secure access to the cube. I’ll also shed a little light on what happens when you deploy a cube, and I’ll wrap up this week’s lesson by explaining different ways that people might access a cube. There is so much more to learn about cubes when you have advanced analytical needs to support, but at the conclusion of this series you will have a grasp of the important concepts which is enough to get started with simple analytical requirements.</p>
<h3>Security</h3>
<p>Right now, you’re the only person who can browse the cube because you’re the one who created it. Before other people can browse the cube, you need to grant them the necessary permissions. Analysis Services supports only Windows integrated security, so everyone requiring access to the cube must have a Windows account. Rather than assign permissions to individual users, you might consider creating a Windows group and assigning users to that group.</p>
<p>Let’s assume that you have created a Windows group called SSAS and you’re now ready to set up security for your cube. Open your project in BIDS, right-click the <strong>Roles</strong> folder, and select <strong>New Role</strong>. The default name of the role is Role, but you can change that later if you like. Open the second tab in the role designer, <strong>Membership</strong>, and click the <strong>Add</strong> button. Locate the SSAS group to add the group to the role. Then go to the <strong>Cube </strong>tab and select <strong>Read </strong>in the <strong>Access </strong>drop-down list. In most cases, this step is the only one you need to perform. After you deploy the cube, anyone in the group can browse the cube using their tool of choice (which is not BIDS; BIDS is used by developers only).</p>
<p>Analysis Services also allows you to apply more granular permissions. For example, you can prevent users from viewing specific members in a dimension, such as the Mountain Bikes subcategory. You even prevent users from viewing certain cell values, such as the Sales Amount Quota for the AWC Logo Cap in 2008. As you might imagine, the subject of security is pretty deep and beyond the scope of what I can cover in an introductory course in SQL University. So instead, I’ll refer you to <a href="http://msdn.microsoft.com/en-us/library/ms175408.aspx" target="_blank">Granting User Access</a> for an overview of security concepts in Analysis Services. For data-driven security, take a look at <a href="http://gavinrussell.wordpress.com/2010/05/07/analysis-services-%E2%80%93-data-driven-security-model/" target="_blank">Analysis Services—Data Driven Security Model</a>.</p>
<h3>Deployment</h3>
<p>Throughout this course, I have asked you to deploy your project to make it available for browsing. The Deploy command in BIDS actually performs three steps for you that can be performed individually by using alternative means:</p>
<ol>
<li><strong>Build</strong> – In this step, BIDS combines all the files in your project (data source, DSV, cube, dimensions, etc.) and creates a single file that has the <strong>asdatabase</strong> extension. Essentially, it’s one giant XML file that contains all the definitions about database objects that you see as individual files in BIDS. It’s very common in production environments that developers cannot deploy objects themselves, but instead provide files and scripts for administrators to perform the deployment. If necessary, you can use the Build command in BIDS to generate the asdatabase file and deliver it to your administrator.</li>
<li><strong>Deploy</strong> – The administrator copies the asdatabase file to a location on the server hosting Analysis Services. Then, from the Microsoft SQL Server 2008 R2\Analysis Services program group, the administrator launches <strong>Deployment Wizard</strong>. (You can learn more about the wizard at Using the <a href="http://msdn.microsoft.com/en-us/library/ms176121.aspx" target="_blank">Analysis Services Deployment Wizard</a>.) This wizard steps through the process of taking the asdatabase file from its current location, and moving it to the OLAP data folder of the Analysis Services instance where the file gets “unbundled” into separate database object files, just like the ones you had in BIDS.</li>
<li><strong>Process</strong> – The presence of the database object files is not enough to render the cube usable. Processing must take place first. Processing reads the definition files to determine how to get to the source data, how to query the data, and how to load the data into the structures that Analysis Services requires. After processing completes successfully, everyone (with permissions, of course!) can browse the cube.</li>
</ol>
<h3>Processing</h3>
<p>You can connect to Analysis Services by using SQL Server Management Studio (SSMS), and then use Object Explorer to locate a database for processing. You can even access individual measure groups or dimensions for processing. There are different types of processing that you can do. When you’re still learning about Analysis Services, it’s generally best to do a full process of dimensions and then a full process of cubes. When you perform a full process of any dimension, each cube with which it’s associated will also require a full process and the cube will be unavailable to users during this time. As you learn more, you’ll find that you can perform other types of processing that keep the cube available, but require more thought about data preparation. An overview of processing options is available at <a href="http://msdn.microsoft.com/en-us/library/ms175634.aspx" target="_blank">Processing (Analysis Services – Multidimensional Data).</a></p>
<p>Usually, it’s not practical to process manually in SSMS every time that you want to refresh the cube. Most people create an Integration Services package that contains one or more <a href="http://technet.microsoft.com/en-us/library/ms141779.aspx" target="_blank">Analysis Services Processing Tasks</a>, and then schedule the package to run on a periodic basis.</p>
<h3>User Access</h3>
<p>Once a cube is deployed and processed, users with the appropriate permissions can connect to the cube and browse to their hearts’ content. Using what? Whatever Analysis Services client they have available. Most organizations that have Analysis Services in-house also have Microsoft Office. Users can create pivot tables to explore data in a cube. The user experience in Excel 2003 is not so great, but Excel 2007 or Excel 2010 work similarly.</p>
<p>Assuming you are using Excel 2007 or higher, you must create an Office Data Connection (ODC) file – or open an ODC file – first. To create the ODC file, click <strong>From Other Sources </strong>on the <strong>Data </strong>tab of the ribbon, and then select <strong>From Analysis Services</strong>. Provide the server name (or localhost) and click Next. Then select your database—My SSAS DB—and the cube—Sales—and click Next. You can use the Browse button to save the ODC file in a specific place, either a local drive for personal use or a SharePoint Data Connections library for shared use.</p>
<p>When you save an ODC file to SharePoint, it can be used for workbooks accessed using Excel Services, or for status indicators (aka KPIs) or Filter Web Parts in SharePoint. Working with ODC files for Analysis Services sources and configuring SharePoint to authenticate with Analysis Services correctly can be tricky. You can learn more at <a href="http://msdn.microsoft.com/en-us/library/ff604007.aspx" target="_blank">Plan Excel Services data sources and external connections (SharePoint Server 2010).</a> If you’re using SharePoint 2007, refer to <a href="http://technet.microsoft.com/en-us/library/cc262899(office.12).aspx" target="_blank">Plan external data connections for Excel Services</a> instead.</p>
<p>Regardless of where you save the ODC file, you use it as the source for a pivot table. In fact, after following the steps above and right after saving the file, you’re prompted for the location in which a pivot table will be inserted. On the right side, you should see the PivotTable Field list which displays all the measures by measure group, followed by KPIs and dimensions. All you need to do is select checkboxes for items that you want to display in the PivotTable, such as <strong>Internet Sales Amount</strong>, and <strong>Reseller Sales Amount. </strong>Expand the KPIs folder to add the following: <strong>Value, Goal, Status, </strong>and <strong>Trend</strong>. Also add <strong>Date.Calendar</strong>. Click the plus sign next to <strong>2008</strong> and <strong>2008 Q1</strong> to drill down to months. Your pivot table will look like this:</p>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Deployment-101_6C31/image.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Deployment-101_6C31/image_thumb.png" border="0" alt="image" width="509" height="198" /></a></p>
<p>The KPIs aren’t very interesting with this data set because the total sales in the cube always exceeds the goal except when you drill down to months. The goal comes from the FactSalesQuota and is associated with quarters, but those quarters are referenced by the first day of the quarter, such as January 1, 2008, so the goal for January shown here is really a quarterly goal. There are tricks that we can use to either hide that value at the month level or to spread the quarterly amount across months in some way, but that’s beyond the scope of this week’s lessons. Hint for the curious: you have to add expressions to the MDX Script.</p>
<p>The selections you make in the PivotTable Field list appear below the list as objects that you can rearrange as desired. You can move dimensions from row labels to column labels or to the report filter. You can also drag the measures in the Values box to a higher or lower position to re-sequence the measures any way you like.</p>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Deployment-101_6C31/image_3.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Deployment-101_6C31/image_thumb_3.png" border="0" alt="image" width="178" height="156" /></a></p>
<p>Remember in a previous lesson that you added an action to the cube. Let’s see how that works now. Right-click on one of the cells in the pivot table – such as the value <strong>$1,340,244.95</strong> at the intersection of <strong>Jan 2008</strong> and <strong>Internet Sales Amount</strong>, then point to <strong>Additional Actions</strong>, and then click on <strong>Internet Sales Details</strong>.</p>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Deployment-101_6C31/image_4.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Deployment-101_6C31/image_thumb_4.png" border="0" alt="image" width="404" height="220" /></a></p>
<p>The action definition shows only the columns that you defined for the drillthrough action:</p>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Deployment-101_6C31/SNAGHTML73125ae.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SNAGHTML73125ae" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Deployment-101_6C31/SNAGHTML73125ae_thumb.png" border="0" alt="SNAGHTML73125ae" width="578" height="159" /></a></p>
<p>Excel also has a built-in drillthrough functionality that you can launch by just by double-click a cell value—as long as it’s not a calculated measure. The difference between the built-in functionality and the drillthrough action is that you have control over the columns that appear in the drillthrough action. It’s better when there is a specific set of columns that users want to see all the time, and is useful when you have a lot of columns available in a measure group and just want to focus on a subset of columns.</p>
<p>Your cube is also accessible for use with other tools. If you have a Reporting Services instance, users can launch Report Builder, select the Microsoft SQL Server Analysis Services provider type to create a data source, and then create a dataset using a <a href="http://msdn.microsoft.com/en-us/library/dd220489.aspx" target="_blank">designer interface</a> that lets them use drag-and-drop to select the dimensions and measures they want to include in the report. User can also <a href="http://office.microsoft.com/en-us/sharepoint-server-help/getting-started-with-sharepoint-status-indicators-HA010380634.aspx" target="_blank">create status indicators from a cube</a> for use in lists or SharePoint dashboards by using ODC files. If users want to access cube data in PerformancePoint Services scorecards and dashboards, a separate <a href="http://technet.microsoft.com/en-us/library/ff191198.aspx" target="_blank">data connection for Analysis Services</a> must be created.</p>
<h3>Learning More</h3>
<p>By completing the lessons in this introductory course to Analysis Services, you have the basic knowledge necessary to build simple cubes. But there is so much more to learn! Keep an eye on this blog as I’ll post topics related to Analysis Services from time to time, and of course <a href="http://sqlchicken.com/sql-university/" target="_blank">SQL University</a> will offer intermediate and advanced lessons in future semesters.</p>
<p>If your measure group contains fewer than 20 million rows, such as our sample cube from the lessons this past week, then you don’t need to worry about scaling the cube. Most business data these days contains many millions of rows, so enhancing the cube with scalability features is often the next step. The first step towards scaling is the addition of aggregations which you can learn more about by reading <a href="http://www.jenstirrup.com/2009/04/optimising-aggregations-in-analysis.html" target="_blank">Optimising Aggregations in Analysis Services 2008</a>. Another option to use, often hand in hand with aggregations, is the implementation of <a href="http://msdn.microsoft.com/en-us/library/ms175688.aspx" target="_blank">partitions</a>.</p>
<p>A good online resource for all things related to Analysis Services is the <a href="http://ssas-info.com/" target="_blank">Analysis Services Resource Hub</a>. If you like to learn from books, here are several that I recommend:</p>
<ul>
<li><a href="http://www.amazon.com/Microsoft%C2%AE-Server%C2%AE-Analysis-Services-Microsoft/dp/0735626200/ref=sr_1_1?ie=UTF8&amp;qid=1305671816&amp;sr=8-1" target="_blank">Microsoft SQL Server 2008 Analysis Services 2008 Step by Step</a> by Scott Cameron, who started his BI career with me back in 1999.</li>
<li><a href="http://www.amazon.com/Professional-Microsoft-Analysis-Services-Programmer/dp/0470247983/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1305671980&amp;sr=1-1" target="_blank">Professional Microsoft SQL Server Analysis Services 2008 with MDX</a> by a line-up of Microsoft folks: Sivakumar Harinath, Robert Zare, Sethu Meenakshisundaram (who later went to SAP), Matt Carroll, and Denny Guang-Yeu Lee. Denny and I shared an office once upon a time before he joined Microsoft. It was entertaining, to say the least!</li>
<li><a href="http://www.amazon.com/Expert-Development-Microsoft-Analysis-Services/dp/1847197221/ref=sr_1_2?ie=UTF8&amp;qid=1305672210&amp;sr=8-2" target="_blank">Expert Cube Development with Microsoft SQL Server 2008 Analysis Services</a> by SQL Server MVPs and friends Marco Russo, Alberto Ferrari, and Chris Webb.</li>
<li>When you’re ready for advanced (really advanced!) material, tackle <a href="http://www.amazon.com/Microsoft-Server-Analysis-Services-Unleashed/dp/0672330016/ref=sr_1_5?ie=UTF8&amp;qid=1305672210&amp;sr=8-5" target="_blank">Microsoft SQL Server 2008 Analysis Services Unleashed</a> by Microsoft developers who worked on the product, Irina Gorbach, Alexander Berger, and Edward Melomed. This book is required reading if you want to become an <a href="http://sqlcat.com/msdnmirror/archive/2011/05/11/announcing-ssas-maestros-v1-2.aspx" target="_blank">SSAS Maestro</a>!</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.datainspirations.com/2011/05/17/sqlu-ssas-week-cube-deployment-101/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SQLU SSAS Week: Cube Enhancements 101</title>
		<link>http://blog.datainspirations.com/2011/05/15/sqlu-ssas-week-cube-enhancements-101/</link>
		<comments>http://blog.datainspirations.com/2011/05/15/sqlu-ssas-week-cube-enhancements-101/#comments</comments>
		<pubDate>Sun, 15 May 2011 14:07:35 +0000</pubDate>
		<dc:creator>Stacia Misner</dc:creator>
				<category><![CDATA[Analysis Services]]></category>
		<category><![CDATA[SQL University]]></category>
		<category><![CDATA[SSAS]]></category>

		<guid isPermaLink="false">http://blog.datainspirations.com/2011/05/15/sqlu-ssas-week-cube-enhancements-101/</guid>
		<description><![CDATA[This is the fourth post for SSAS week at SQL University. Here’s the coursework so far: Why Do I Need a Cube &#38; How Do I Get Started Dimension Design 101 Cube Construction 101 In today’s post, I will show how you to correct problems that you discover in dimensions after you deploy the database [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sqlchicken.com/sql-university" target="_blank"><img class="size-full wp-image-428 alignleft" title="SQL University" src="http://blog.datainspirations.com/wp-content/uploads/2011/05/SQL_University.png" alt="" width="175" height="200" /></a>This is the fourth post for SSAS week at <a href="http://sqlchicken.com/sql-university/" target="_blank">SQL University</a>. Here’s the coursework so far:</p>
<ul>
<li><a title="SQLU SSAS Week: Why Do I Need a Cube &amp; How Do I Get Started?" href="http://blog.datainspirations.com/2011/05/11/sqlu-ssas-week-why-do-i-need-a-cube-how-do-i-get-started/">Why Do I Need a Cube &amp; How Do I Get Started</a></li>
<li><a href="http://blog.datainspirations.com/2011/05/11/sqlu-ssas-week-dimension-design-101-2/">Dimension Design 101</a></li>
<li><a href="http://blog.datainspirations.com/2011/05/12/sqlu-ssas-week-cube-construction-101/">Cube Construction 101</a></li>
</ul>
<p>In today’s post, I will show how you to correct problems that you discover in dimensions after you deploy the database and how to enhance the cube by adding another measure group as well as adding special features, such as key performance indicators and actions.</p>
<h3><img src="http://blog.datainspirations.com/wp-content/uploads/2010/11/57c69da7747d_3D0F/SNAGHTML23c9eaa_thumb1_thumb.png" alt="" />Step 0: Dimension Cleanup</h3>
<p>In the previous lesson, you deployed the cube and browsed the results. Everything looked good except for category and subcategory attributes, whether individually or as levels in the Products hierarchy of the Product dimension. Your task was to figure out why you the labels didn’t display correctly and to fix it.</p>
<p>Now for the solution. Remember that each attribute has a <strong>KeyColumns</strong> property and a <strong>NameColumn</strong> property. Unless you specify the <strong>NameColumn </strong>explicitly, the dimension will display the value in the <strong>KeyColumns </strong>when you’re browsing that attribute in a metadata list or in the cube. To fix the problem, just set the <strong>NameColumn </strong>property to <strong>EnglishProductCategoryName </strong>for the <strong>Category </strong>attribute and set the same property for the <strong>Subcategory </strong>attribute to <strong>EnglishProductSubcategoryName</strong>.</p>
<p>Deploy the project, and then browse the cube again to check the results. You need to click the <strong>Reconnect</strong> button to see the labels change. You can also use the <strong>Browser </strong>tab in the dimension designer to view labels in each attribute hierarchy or user-defined hierarchy if you prefer.</p>
<h3><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Enhancements-101_B0C5/image.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Enhancements-101_B0C5/image_thumb.png" border="0" alt="image" width="22" height="16" /></a>Step 1: Additional Measure Group</h3>
<p>It’s a common practice to build a cube incrementally. That means you don’t need to have all your measure groups available at the same time before you can design the cube or even to make it available to users. Today you’re going to add a third measure group for Sales Amount Quota so that the cube supports comparisons of actual sales to the quotas.</p>
<p>Nothing makes it into a cube or dimension without coming through the DSV, so open the DSV file in your project. Right-click on the DSV background and select <strong>Add/Remove Tables</strong>. Locate the <strong>FactSalesQuota </strong>table and add it to your DSV. The foreign key relationship to the Date dimension is added automatically. The fact table also has a relationship to the Employee dimension which we’re ignoring in this week’s lesson. After we add the fact table as an additional measure group to the cube, we’ll be able to slice and dice the quota data only by date. Be sure to rename the table to <strong>SalesQuota </strong>before continuing, just like you did for <strong>InternetSales </strong>and <strong>ResellerSales</strong>.</p>
<p>To add the quota data to the cube, you need to open the cube designer. In the Measures pane in the top left corner of the designer, right-click the <strong>Sales</strong> cube, and select <strong>New Measure Group</strong>. Then you can add <strong>SalesQuota</strong>.However, adding the entire measure group adds all the numeric columns as measures, so you can switch to the grid view to multi-select the unneeded columns. When finished, the Sales Quota measure group should have only one measure: <strong>Sales Amount Quota</strong>. Tip: An alternative approach would be to use the New Measure command when you right-click the cube, and then use a dialog box to select the measure that you want to add.</p>
<p>Be sure to set the format string to Currency. Deploy the project, and then browse the cube by adding the following measures to the grid: <strong>Sales Amount</strong> and <strong>Sales Amount Quota</strong>. Then add <strong>Date.Calendar </strong>to rows like this:</p>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Enhancements-101_B0C5/image_3.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Enhancements-101_B0C5/image_thumb_3.png" border="0" alt="image" width="305" height="139" /></a></p>
<p>Notice anything strange here? Such as the repeating values in the Sales Amount columns? Remember from the previous lesson that Sales Amount combines values from the Reseller Sales and Internet Sales measure groups. But, you can’t slice that value by date without making another change to the cube.</p>
<p>You also have some other date dimensions available – Order Date, Due Date, and Ship Date – which allow you to slice by Sales Amount, but not by Sales Amount Quota. In order to calculate the variance between Sales Amount and Sales Amount Quota, you need to be able to slice both measures at once.</p>
<h3><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Enhancements-101_B0C5/SNAGHTML60251e.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="SNAGHTML60251e" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Enhancements-101_B0C5/SNAGHTML60251e_thumb.png" border="0" alt="SNAGHTML60251e" width="20" height="18" /></a> Step 2: Dimension Usage</h3>
<p>The ability to slice and dice a measure by a dimension member is determined by the relationship that exists between measure groups and dimensions. That type of relationship is managed on the Dimension Usage tab of the cube designer. It’s usually inherited from the foreign key relationship found in the DSV when you use the cube wizard, but it’s ignored when you manually add a measure group. The gray box at the intersection of a dimension and measure group indicates a relationship does not exist.</p>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Enhancements-101_B0C5/SNAGHTML70e457.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="SNAGHTML70e457" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Enhancements-101_B0C5/SNAGHTML70e457_thumb.png" border="0" alt="SNAGHTML70e457" width="363" height="118" /></a></p>
<p>To add a missing relationship, click the gray box (such as the one at the intersection of <strong>Internet Sales </strong>and <strong>Date</strong>), and click the ellipsis button that appears there. Most of the time, you define the relationship here as the <strong>Regular </strong>relationship type. The other types are for advanced scenarios that we won’t be covering in this course, but if you’re really curious, you can learn more at <a href="http://msdn.microsoft.com/en-us/library/ms175669.aspx" target="_blank">Dimension Relationships</a>.</p>
<p>Then you specify the level of detail in the dimension that relates to the measure group. For example, the Internet Sales measure group relates to the Date dimension at the Date level. So set Granularity Attribute to <strong>Date</strong> and set Measure Group Columns to <strong>OrderDateKey</strong>. In this cube, once its deployed after adding this relationship, the use of either the Date dimension or the Order Date dimension will yield similar results.</p>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Enhancements-101_B0C5/image_4.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Enhancements-101_B0C5/image_thumb_4.png" border="0" alt="image" width="424" height="281" /></a></p>
<p>Next, repeat the process above to add a relationship between Reseller Sales and Date. Then add a third relationship between Sales Amount Quota and Date (Order Date). (You’ll use DateKey for the Measure Group Columns value in the latter case.) That way, whether users select Date or Order Date for slicing, they can compare values between actual sales and the quotas.</p>
<p>Why not eliminate all the extra dates? Aren’t they confusing? Well, it depends. If users will never analyze data using Ship Dates or Due Dates, then you can safely delete the three <a href="http://en.wikipedia.org/wiki/Dimension_(data_warehouse)#Role-playing_dimensions" target="_blank">role-playing dimensions</a> from the cube on the cube designer page (in the bottom left corner on the Cube Structure tab). You&#8217;ll still have the Date dimension available for time-series analysis and time-based slice-and-dice. On the other hand, you might want to retain Order Date along with Date in the cube if there’s a possibility that you will add another measure group that relies on Date but has no relationship whatsoever to Order Date. (That scenario doesn’t exist in the Adventure Works sample data, incidentally.)</p>
<h3><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Enhancements-101_B0C5/SNAGHTML34c12d.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SNAGHTML34c12d" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Enhancements-101_B0C5/SNAGHTML34c12d_thumb.png" border="0" alt="SNAGHTML34c12d" width="20" height="20" /></a> Step 3: Key Performance Indicator</h3>
<p>Another way to enhance a cube is to add key performance indicators (KPIs). A KPI is a group of calculations that you use to compare a value to a target. Client tools for Analysis Services can display the results of this comparison using different images that are associated with a positive, neutral, or negative status. In addition, the KPI includes a trend calculation used to show whether the value is increasing or decreasing as compared to a previous point in time. For example, you can set up a KPI to compare sales amounts to quotas by adding the expressions on the KPIs tab of the cube designer.</p>
<p>Click the KPIs tab which is the fourth tab from the left. Click the <strong>New KPI </strong>button (the fifth button from the left). In the form that displays, type a name—<strong>Quota</strong>—and then add the following expression in the Value Expression box:</p>
<p><span style="font-family: 'Courier New';">[Measures].[Sales Amount] </span></p>
<p>The Value Expression can also be an MDX expression that resolves to a number, but this is a simple example that relies on values found in the fact tables. Next, add the Goal Expression like this:</p>
<p><span style="font-family: 'Courier New';">[Measures].[Sales Amount Quota] </span></p>
<p>In the Status Indicator drop-down list, you choose an image to represent the current result of comparing Sales Amount to Sales Amount Quota. For this cube, use Shapes. Then enter the Status expression which is used to determine which shape to display. There are three possible shapes, so you need an expression that resolves as one of three possible values which effectively mean “meeting goal”, “progressing towards goal”, and “not meeting goal.” We use 1, 0, and –1 to reflect those three values respectively. For the purposes of this lesson, assume that 1 means the sales are equal to or better than 90% of the target. Otherwise, 60% of the target is represented by a value of 0, and everything else is –1. The expression to produce these results looks like this:</p>
<p><span style="font-family: 'Courier New';">iif([Measures].[Sales Amount] &gt;= [Measures].[Sales Amount Quota] * .9, 1, iif ([Measures].[Sales Amount] &gt;= [Measures].[Sales Amount Quota] * .6, 0, -1))</span></p>
<p>The Trend expression is similar to status because it is used to determine a shape to display, but in this case the shape is an arrow and the expression requires a comparison between one time period and another. The result of the Trend expression determines what direction the arrow points—up (or 1) for upward trends, flat (or 0) for no change in trend, and down (or –1) for downward trends. The following trend expression compares the current variance to the variance for the previous year.</p>
<p><span style="font-family: 'Courier New';">Case<br />
When IsEmpty(ParallelPeriod([Order Date].[Calendar Year].[Calendar Year],<br />
1, [Order Date].[Calendar Year]))<br />
Then 0<br />
When ([Measures].[Sales Amount] &#8211; [Measures].[Sales Amount Quota]) &gt;<br />
((ParallelPeriod([Order Date].[Calendar Year].[Calendar Year],<br />
1, [Order Date].[Calendar Year]), [Measures].[Sales Amount]) -<br />
(ParallelPeriod([Order Date].[Calendar Year].[Calendar Year],<br />
1, [Order Date].[Calendar Year]), [Measures].[Sales Amount Quota]))<br />
Then 1<br />
When ([Measures].[Sales Amount] &#8211; [Measures].[Sales Amount Quota]) =<br />
((ParallelPeriod([Order Date].[Calendar Year].[Calendar Year],<br />
1, [Order Date].[Calendar Year]), [Measures].[Sales Amount]) -<br />
(ParallelPeriod([Order Date].[Calendar Year].[Calendar Year],<br />
1, [Order Date].[Calendar Year]), [Measures].[Sales Amount Quota]))<br />
Then 0<br />
Else -1<br />
End</span></p>
<p>We’ll see how to view KPIs in the next post in this course.</p>
<h3><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Enhancements-101_B0C5/image_5.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Enhancements-101_B0C5/image_thumb_5.png" border="0" alt="image" width="20" height="18" /></a>Step 4: Action</h3>
<p>Another type of enhancement you can add to a cube is an action. There are three types of actions:</p>
<ul>
<li><strong>URL action –</strong> to navigate to a specific Web page, such as a Product Catalog page for a product selected in a cube.</li>
<li><strong>Reporting action –</strong> to open a Reporting Services report, such as a Sales Order Details report for a customer selected in a cube.</li>
<li><strong>Drillthrough action –</strong> to display in an HTML page the detailed data associated with a selected measure in a cube. (The measure must come from a measure group, and cannot be a calculation.)</li>
</ul>
<p>Go to the Actions tab of the cube designer to define actions and related properties. Click the <strong>New Drillthrough Action </strong>button in the toolbar (the sixth one from the left). Name it <strong>Internet Sales Details </strong>and select <strong>Internet Sales </strong>as the action target. In the Drillthrough Columns section, select the following columns by dimension:</p>
<ul>
<li>Order Date: Date</li>
<li>Product: Product, Subcategory, Category</li>
<li>Measures: Internet Sales Amount, Internet Order Quantity</li>
</ul>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Enhancements-101_B0C5/image_6.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Enhancements-101_B0C5/image_thumb_6.png" border="0" alt="image" width="415" height="112" /></a></p>
<p>Deploy your cube. You’ll see how to use the action in the next post.</p>
<h3>What’s Next?</h3>
<p>Now you have a basic but fully functioning cube. In our next lesson of the week, <a title="SQLU SSAS Week: Cube Deployment 101" href="http://blog.datainspirations.com/2011/05/17/sqlu-ssas-week-cube-deployment-101/">Cube Deployment 101</a>, I’ll explain how to implement security and how to provide users access to your cube.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.datainspirations.com/2011/05/15/sqlu-ssas-week-cube-enhancements-101/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>SQLU SSAS Week: Cube Construction 101</title>
		<link>http://blog.datainspirations.com/2011/05/12/sqlu-ssas-week-cube-construction-101/</link>
		<comments>http://blog.datainspirations.com/2011/05/12/sqlu-ssas-week-cube-construction-101/#comments</comments>
		<pubDate>Thu, 12 May 2011 12:00:52 +0000</pubDate>
		<dc:creator>Stacia Misner</dc:creator>
				<category><![CDATA[Analysis Services]]></category>
		<category><![CDATA[SQL University]]></category>
		<category><![CDATA[SSAS]]></category>

		<guid isPermaLink="false">http://blog.datainspirations.com/?p=469</guid>
		<description><![CDATA[This is the third post for SSAS week at SQL University. If you’re just joining the class, refer to Why Do I Need a Cube &#38; How Do I Get Started and Dimension Design 101 to get caught up.  At this point, my expectation is that you have an Analysis Services project with at least [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sqlchicken.com/sql-university" target="_blank"><img class="size-full wp-image-428 alignleft" title="SQL University" src="http://blog.datainspirations.com/wp-content/uploads/2011/05/SQL_University.png" alt="" width="175" height="200" /></a>This is the third post for SSAS week at <a href="http://sqlchicken.com/sql-university/" target="_blank">SQL University</a>. If you’re just joining the class, refer to <a title="SQLU SSAS Week: Why Do I Need a Cube &amp; How Do I Get Started?" href="http://blog.datainspirations.com/2011/05/11/sqlu-ssas-week-why-do-i-need-a-cube-how-do-i-get-started/">Why Do I Need a Cube &amp; How Do I Get Started</a> and <a href="http://blog.datainspirations.com/2011/05/11/sqlu-ssas-week-dimension-design-101-2/">Dimension Design 101</a> to get caught up.  At this point, my expectation is that you have an Analysis Services project with at least two dimensions designed—Date and Product. Now you’re ready to build the cube itself. In a later post, I’ll discuss various cube enhancements that you can make, security measures to implement, and tools that enable user access to cube data.</p>
<h3><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Construction-101_6D94/SNAGHTML476c410.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SNAGHTML476c410" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Construction-101_6D94/SNAGHTML476c410_thumb.png" border="0" alt="SNAGHTML476c410" width="15" height="16" /></a> Step 1: Cube Wizard</h3>
<p>By now, you can probably guess how to launch the cube wizard. Right-click the Cubes folder in Solution Explorer, and click <strong>New Cube</strong>. For creation method, select the <strong>Use existing tables </strong>option. Then you need to specify the measure group tables. Measure group tables are equivalent to fact tables because, after all, fact tables are simply tables that contain groups of measures (the values that people will analyze). There are two measure group tables for this cube: <strong>InternetSales</strong> and <strong>ResellerSales</strong>.On the next page of the wizard, you see a list of all columns with numeric values which are presented as candidate measures. Some of them are just foreign key columns which you can ignore. (If the wizard could figure everything out, why would we need you?)</p>
<p>Clear the <strong>Measures </strong>checkbox at the top, and then select the following measures from the <strong>Internet Sales </strong>measure group: <strong>Order Quantity</strong> (which you rename as <strong>Internet Order Quantity</strong>), <strong>Total Product Cost </strong>(which you should rename here as <strong>Internet Cost</strong>), <strong>Sales Amount </strong>(which you should rename as <strong>Internet Sales Amount</strong>). To rename measures here, just right-click the measure name and type in the revised name.</p>
<p>Next, select the following measures from the <strong>Reseller Sales </strong>measure group: <strong>Order Quantity</strong> (which you rename as <strong>Reseller Order Quantity</strong>), <strong>Total Product Cost – Reseller Sales </strong>(which you should rename as <strong>Reseller Cost</strong>), <strong>Sales Amount – Reseller Sales </strong>(which you should rename as <strong>Reseller Sales Amount</strong>).</p>
<p>Continuing through the wizard, you get a chance to select existing dimensions. These are the dimensions that you’ve already created—Date and Product. The wizard detected the foreign key relationships in the DSV and the existence of the dimension objects in the project.</p>
<p>On the next page of the wizard, it volunteers to create two more dimensions for you—Internet Sales and Reseller Sales. Clear the Dimension checkbox at the top to skip this step. The technical term for these two dimensions is <a href="http://en.wikipedia.org/wiki/Degenerate_dimension" target="_blank">degenerate dimension</a>. There are a lot of steps required to properly configure a degenerate dimension in a cube which I won’t cover this week, and it’s not commonly used (at least not in the projects I’ve done over the past 10 years, so maybe it’s just not commonly used by me…).</p>
<p>At the end of the wizard steps, you get the chance to name the cube. Let’s keep the name simple: <strong>Sales</strong>. And now, when you complete the wizard, you have a cube!</p>
<h3><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Construction-101_6D94/SNAGHTML5271b09.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SNAGHTML5271b09" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Construction-101_6D94/SNAGHTML5271b09_thumb.png" border="0" alt="SNAGHTML5271b09" width="22" height="14" /></a> Step 2: Format Strings</h3>
<p>The first thing I always do after I create a cube is configure the format strings for the measures, so that’s what I want you to do next. It’s a good habit to develop because you’ll be browsing the cube to test it soon and it will be easier to review values if they’re already formatted.</p>
<p>On the Cube Structure tab of the cube designer, you can see your measures in the top left corner. Actually, you first see the measure groups, Internet Sales and Reseller Sales, which you can expand to see the measures. You can select each measure one by one and set the FormatString property individually, or you can apply the format string in bulk. Let’s do that.</p>
<p>Click the fifth button from the left  to show measures in a grid. Then, while you press and hold the Ctrl key, select <strong>Internet Order Quantity </strong>and <strong>Reseller Order Quantity</strong>. In the Properties window, locate the <strong>FormatString</strong> property and type <strong>#,#</strong>. That will set the quantities to display as integers with thousands separators and no decimal places. Now select the remaining measures and select <strong>Currency </strong>in the drop-down list for the <strong>FormatString </strong>property.</p>
<h3><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Construction-101_6D94/SNAGHTML5266226.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SNAGHTML5266226" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Construction-101_6D94/SNAGHTML5266226_thumb.png" border="0" alt="SNAGHTML5266226" width="14" height="16" /></a> Step 3: Calculations</h3>
<p>In the first post, I mentioned that one benefit of cubes is the centralization of business logic. You’ll need to learn MDX to create complex calculations, but I’ll show you how to build a simple one to whet your appetite for more! If you like to learn from books, check out <a href="http://www.amazon.com/Microsoft%C2%AE-Server%C2%AE-2008-Step-Microsoft/dp/0735626189" target="_blank">MDX Step by Step</a>. Otherwise, a good online resource begins at <a href="http://www.databasejournal.com/features/mssql/article.php/1495511/MDX-at-First-Glance-Introduction-to-SQL-Server-MDX-Essentials.htm" target="_blank">MDX at First Glance: Introduction to SQL Server MDX Essentials</a> by William Pearson. Pearson has a whole series of articles that follow this introduction to MDX. Although it’s a bit dated because the language has changed a bit since the article was written (and you can  now use Management Studio to write MDX), most of the principles still apply. The main thing to know is that instead of referencing a dimension member like [Date].[CY 2005] in Dimension.Member format, you use [Date].[Calendar Year].[CY 2005] in Dimension.Hierarchy.Member format.</p>
<p>For your Sales cube, add a simple calculation to combine the sales for Internet and reseller sales. In the Cube Designer that displays when you close the wizard (or if necessary, double-click Sales.cube in Solution Explorer), click the Calculations tab which is the third tab from the left. Click the <strong>New Calculated Member</strong> button (the fifth button from the left). In the form that displays, type a name—<strong>[Sales Amount]</strong>—and then add the following expression:</p>
<p><span style="font-family: 'Courier New';">[Measures].[Internet Sales Amount] + [Measures].[Reseller Sales Amount]</span></p>
<p>This expression does what it looks like it does – adds together the two sales amount to produce a grand total, no matter how much you are slicing and dicing the cube. (If you don’t know what that means, hang on – I’ll show you later!)</p>
<p>Set a format string for the calculation by selecting <strong>“Currency” </strong>in the drop-down list. Now create two more measures, <strong>Order Quantity </strong>and <strong>Cost</strong>, to combine order quantities and costs from the two measure groups like you did for sales amounts. Remember to set the format strings appropriately. Tip: You’ll need to use <strong>“#,#” </strong>instead of <strong>#,# </strong>here for <strong>Order Quantity</strong>.</p>
<h3>Step 4: Browse</h3>
<p>Now is a good time to do some good ol’ slice and dice to see if the cube behaves as expected and returns correct results. But first you need to deploy the changes that you made just like we did in the <a href="http://blog.datainspirations.com/2011/05/11/sqlu-ssas-week-dimension-design-101-2/">Dimension Design 101</a> lesson. Then when deployment completes successfully, click the Browser tab (the very last one) in the cube designer. From the metadata tree  on the left, drag <strong>Measures </strong>to the area of the grid labeled <strong>Drop Totals or Detail Fields Here</strong>. All the measures from the fact tables and the calculations appear in the grid.</p>
<p>Next, expand Order Date and drag Order Date.Calendar to the area of the grid labeled <strong>Drop Row Fields Here</strong>. That’s adding a slice to the measures. The totals for each measure are now broken up into values by year. If you expand one of the years, you’ll see more detailed slices for the quarters in the selected year.</p>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Construction-101_6D94/image.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Construction-101_6D94/image_thumb.png" border="0" alt="image" width="648" height="92" /></a></p>
<p>Check out the values for your three calculations to confirm that they properly sum up the base measures for overall sales, costs, and order quantities. An MDX calculation is similar to an Excel formula because it uses relative references to determine its current value cell by cell. The difference is that you define the calculation once and you don&#8217;t have to copy it every cell &#8211; it just happens. It looks to see what&#8217;s on rows, what&#8217;s on columns, and also what&#8217;s on the filter (which is the grid area currently labeled <strong>Drop Filter Fields Here</strong>) to come up with the relative reference for each cell in the grid.</p>
<p>Now “dice” the data by dragging Products from the Product dimension to <strong>Drop Column Fields Here</strong>. To make it easier to see the categories, remove some measures. For example, drag <strong>Internet Order Quantity </strong>off the grid, along with the other internet and reseller measure groups so that you’re left with only <strong>Sales Amount</strong>, <strong>Cost</strong>, and <strong>Order Quantity </strong>like this:</p>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Construction-101_6D94/SNAGHTML5380b8f.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SNAGHTML5380b8f" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/SQLU-SSAS-Week-Cube-Construction-101_6D94/SNAGHTML5380b8f_thumb.png" border="0" alt="SNAGHTML5380b8f" width="697" height="96" /></a></p>
<p>By using hierarchies in the browser, you can drill down to month or to product – but the problem is that category and subcategory keys are shown instead of names. Oops! You’ll need to fix that to improve the cube. That’s why we browse in BIDS before we deliver the cube to users&#8230;so that we can uncover problems like this.</p>
<p><strong>Your Assignment</strong></p>
<p>Try to solve the problem on your own. I’ll reveal the solution in the next post, <a title="SQLU SSAS Week: Cube Enhancements 101" href="http://blog.datainspirations.com/2011/05/15/sqlu-ssas-week-cube-enhancements-101/">Cube Enhancements 101</a>, and as the name implies, I’ll also show you some other enhancements we can make to the cube. Meanwhile, post a comment if you have questions or need help.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.datainspirations.com/2011/05/12/sqlu-ssas-week-cube-construction-101/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>SQLU SSAS Week: Dimension Design 101</title>
		<link>http://blog.datainspirations.com/2011/05/11/sqlu-ssas-week-dimension-design-101-2/</link>
		<comments>http://blog.datainspirations.com/2011/05/11/sqlu-ssas-week-dimension-design-101-2/#comments</comments>
		<pubDate>Wed, 11 May 2011 11:21:18 +0000</pubDate>
		<dc:creator>Stacia Misner</dc:creator>
				<category><![CDATA[Analysis Services]]></category>
		<category><![CDATA[SQL University]]></category>
		<category><![CDATA[SSAS]]></category>

		<guid isPermaLink="false">http://blog.datainspirations.com/2011/05/11/sqlu-ssas-week-dimension-design-101-2/</guid>
		<description><![CDATA[This is the second post for SSAS week at SQL University. If you’re just joining the class, go back to the first post, Why Do I Need a Cube &#38; How Do I Get Started, to get your bearings and get your environment ready, and then join me back here.  Today, I’ll walk you through [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sqlchicken.com/sql-university" target="_blank"><img class="size-full wp-image-428 alignleft" title="SQL University" src="http://blog.datainspirations.com/wp-content/uploads/2011/05/SQL_University.png" alt="" width="175" height="200" /></a>This is the second post for SSAS week at <a href="http://sqlchicken.com/sql-university/" target="_blank">SQL University</a>. If you’re just joining the class, go back to the first post, <a title="SQLU SSAS Week: Why Do I Need a Cube &amp; How Do I Get Started?" href="http://blog.datainspirations.com/2011/05/11/sqlu-ssas-week-why-do-i-need-a-cube-how-do-i-get-started/" target="_blank">Why Do I Need a Cube &amp; How Do I Get Started</a>, to get your bearings and get your environment ready, and then join me back here.  Today, I’ll walk you through the basic steps of building dimensions. Then, later in the week, I’ll cover cube construction and also discuss various cube enhancements that you can make, security measures to implement, and tools that enable user access to cube data.</p>
<p><strong><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/57c69da7747d_3D0F/SNAGHTML3ea8dd_thumb1_thumb.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SNAGHTML3ea8dd_thumb[1]_thumb" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/57c69da7747d_3D0F/SNAGHTML3ea8dd_thumb1_thumb_thumb.png" border="0" alt="SNAGHTML3ea8dd_thumb[1]_thumb" width="38" height="31" /></a> Step 0: Analysis Services Project</strong></p>
<p>Before you actually start construction, you need to open Business Intelligence Development Studio—affectionately known as BIDS. You’ll find it in the Microsoft SQL Server 2008 R2 program group on your Start menu. BIDS is a Visual Studio 2008 shell that installs as one of the SQL Server Management Tools when installing SQL Server 2008 R2. You don’t need a Visual Studio license to use it.</p>
<p>To create a new project, open BIDS, click <strong>File-&gt;New-&gt;Project</strong>, and then select the <strong>Analysis Services Project</strong> template in the Business Intelligence Projects. Give the project a name – something creative and inspiring like <strong>My SSAS DB</strong>. Your project will later become a database on the Analysis Server, but it’s nothing like a SQL  Server database. The SSAS database has a lot more files associated with it, and stores data in a completely different way.</p>
<h3><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/57c69da7747d_3D0F/SNAGHTML1f546c9_thumb1_thumb.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SNAGHTML1f546c9_thumb[1]_thumb" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/57c69da7747d_3D0F/SNAGHTML1f546c9_thumb1_thumb_thumb.png" border="0" alt="SNAGHTML1f546c9_thumb[1]_thumb" width="23" height="20" /></a>Step 1: Data Source</h3>
<p>Data for your cube has to come from somewhere and the Data Source file is the first step in defining where it comes from. It’s quite literally copied from the source and placed into structures that Analysis Services manages. For this course, you’ll use the AdventureWorksDW2008R2 database as described in <a href="http://blog.datainspirations.com/2011/05/09/sqlu-ssas-week-why-do-i-need-a-cube-how-do-i-get-started/" target="_blank">this week’s first lesson</a>. To create a data source, right-click the <strong>Data Sources </strong>folder in the Solution Explorer window (which you can open from the <strong>View</strong> menu if it’s not visible), and select <strong>New Data Source</strong>. Using the wizard, you can step through the process of creating a new data source that defines the data provider, connection string, and authentication method (Windows integrated security or database login) for the source data. Nothing new here—you’ve probably done this sort of thing lots of times using similar interfaces. Bottom line is that you can access any data source with an OLE DB or .NET provider.</p>
<p>The Impersonation Information page of the wizard is something that you&#8217;ve probably not seen before. Here you define the account that Analysis Services uses to connect to the data source. Usually, you select the <strong>Use the service account </strong>option here. The service account is the one that is running the Analysis Services service, either a domain account or a built-in account like NETWORK SERVICE. You need to make sure that this service account has read permissions on AdventureWorksDW2008R2.</p>
<h3><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/57c69da7747d_3D0F/SNAGHTML2014765_thumb1_thumb.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SNAGHTML2014765_thumb[1]_thumb" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/57c69da7747d_3D0F/SNAGHTML2014765_thumb1_thumb_thumb.png" border="0" alt="SNAGHTML2014765_thumb[1]_thumb" width="18" height="18" /></a> Step 2: Data Source View</h3>
<p>Next, you create a Data Source View (DSV). The DSV lets you focus on selected tables of the source database and make changes as a logical layer without changing the physical structure of your data source, which is helpful if you have only read permissions for that source. For example, you can create logical primary keys and foreign key relationships if they do not exist in your data source. Additionally, you can enhance the data by adding a Named Calculation that uses a valid SQL expression to calculate values in a new logical column of the selected table in the Data Source View. You can also replace a table with a Named Query, which allows you to select specific columns or add derived columns to a selected table just as if you were adding a new view to the underlying data source.</p>
<p>To keep keep this cube relatively small and simple while you learn the basics, you’ll use only a few tables from the source database. Right-click the <strong>Data Source View </strong>folder in the Solution Explorer window, and select <strong>New Data Source View</strong>. Step through the wizard and select following tables: <strong>DimDate</strong>, <strong>DimProduct</strong>, <strong>DimProductSubcategory</strong>, <strong>DimProductCategory</strong>, <strong>FactInternetSales</strong>, and <strong>FactResellerSales</strong>.</p>
<p>All the primary keys and foreign key relationships are detected, so you don’t need to make any adjustments to the DSV to define those required elements. However, to get the Date dimension to work properly, you need to concatenate some columns in the DimDate table to create new derived columns. Right-click on the DimDate label in the diagram and click <strong>New Named Calculation</strong>. For the first calculation, assign a name, like <strong>Quarter</strong>, and use the following expression:</p>
<p><span style="font-family: 'Courier New';">CAST(CalendarYear AS CHAR(4)) + &#8216; Q&#8217; + CAST(CalendarQuarter AS CHAR(1))</span></p>
<p>Add a second calculation named <strong>Month </strong>using the following expression:</p>
<p><span style="font-family: 'Courier New';">CAST(CalendarYear AS CHAR(4)) + &#8216; &#8216; + LEFT(EnglishMonthName, 3)</span></p>
<p>As a final task for the DSV, rename all of the tables to remove the Dim or Fact prefix and to shorten the table names related to product, so that you have <strong>Date</strong>, <strong>Product</strong>, <strong>Subcategory</strong>, <strong>Category</strong>, <strong>InternetSales</strong>, and <strong>ResellerSales</strong>. As you create database objects in subsequent steps, names of objects will be inherited from the tables here in the DSV and it’s usually best to rename everything here to minimize the renaming effort elsewhere. Tip: When working with your own data, the ideal is to rename everything back in the source database, using views if necessary.</p>
<p>When finished, your DSV will be similar to the figure below. Notice the icons for your named calculations Quarter and Month as a visual cue that you’ve enhanced the DSV.</p>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/57c69da7747d_3D0F/SNAGHTML211132d_thumb2_thumb.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SNAGHTML211132d_thumb[2]_thumb" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/57c69da7747d_3D0F/SNAGHTML211132d_thumb2_thumb_thumb.png" border="0" alt="SNAGHTML211132d_thumb[2]_thumb" width="407" height="354" /></a></p>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/57c69da7747d_3D0F/SNAGHTML23c9eaa_thumb1_thumb.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SNAGHTML23c9eaa_thumb[1]_thumb" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/57c69da7747d_3D0F/SNAGHTML23c9eaa_thumb1_thumb_thumb.png" border="0" alt="SNAGHTML23c9eaa_thumb[1]_thumb" width="21" height="18" /></a><strong>Step 3: Dimensions</strong></p>
<p>The Data Source and DSV definitions are the foundation for building dimensions and cubes. In this step, you build as many dimensions as you need. You might have one table in a dimension, such as the Date table, or multiple tables (called a snowflake), such as the Product, Subcategory, and Category tables. Most cubes have many more dimensions, but you’ll get the idea of the steps involved by building the two dimensions for this lesson.</p>
<p>When you design a dimension, you select the relevant tables in the DSV, pick the attributes (which you know as table columns) to include in the dimension, define the behavior of these attributes, and relate each attribute to other attributes by setting properties. You use a wizard to do the basic setup of the dimension and then fine-tune the dimension design using a designer interface and the Properties window. There are a lot of properties that you can configure which can seem overwhelming when you’re new to cubes. Frankly, the default values are fine most of the time for simple cubes and need to be changed only when you’re working with more advanced scenarios. I’ll walk you through changing the most important properties in today’s lesson.</p>
<p>To get started, right-click the <strong>Dimensions</strong> folder in Solution Explorer, and click <strong>New Dimension</strong>. For the creation method, select <strong>Use an existing table</strong>, start with the <strong>Date </strong>table as the main table, and change the <strong>Name </strong>column to <strong>FullDateAlternateKey </strong>on the Specify Source Information page of the wizard. On the Select Dimension Attributes page, change <strong>Date Key </strong>to <strong>Date</strong>, and select the checkbox for the following attributes: <strong>CalendarYear</strong>, <strong>Quarter</strong>, and <strong>Month</strong>. Click through the rest of the wizard to wrap it up.</p>
<p>Now it’s time to fine-tune the dimension design in the dimension designer. First, define a hierarchy. Adding a hierarchy not only helps users navigate data more efficiently, but can also improve query performance when a hierarchy contains a natural one-to-many relationship between each level in the hierarchy from top to bottom such as exists between Year, Quarter, and Month. Just drag and drop attributes from the Attributes pane in the dimension designer to the Hierarchies pane. You can also right-click the name of the new hierarchy, select <strong>Rename</strong>, and give it a better name than <strong>Hierarchy</strong>. Maybe something like <strong>Calendar</strong>. The rule is that it must be unique across all hierarchies and attributes in your dimension. When finished, your dimension designer looks like this:</p>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/57c69da7747d_3D0F/image_thumb_thumb.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image_thumb_thumb" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/57c69da7747d_3D0F/image_thumb_thumb_thumb.png" border="0" alt="image_thumb_thumb" width="244" height="170" /></a></p>
<p>The warning symbol is there because you haven’t defined attribute relationships for the levels of the hierarchy. Attribute relationships are important for performance reasons, so do that next. Click the Attribute Relationships tab in the dimension designer. Drag <strong>Month </strong>on top of <strong>Quarter</strong>, and drag <strong>Quarter </strong>on top of <strong>Calendar Year</strong>. Now you’ve defined the one-to-many relationship from the key attribute (which is the primary key in the table) to each level in the hierarchy (and the little warning symbol is now gone on the Dimension Structure tab – go ahead and take a peek!).</p>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/57c69da7747d_3D0F/SNAGHTML22b87fe_thumb2_thumb.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SNAGHTML22b87fe_thumb[2]_thumb" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/57c69da7747d_3D0F/SNAGHTML22b87fe_thumb2_thumb_thumb.png" border="0" alt="SNAGHTML22b87fe_thumb[2]_thumb" width="424" height="30" /></a></p>
<p>Now use what you’ve learned to set up the Product dimension. When you add the dimension using the wizard, set the <strong>Name</strong> column to <strong>EnglishProductName</strong>. You’ll see that the wizard automatically includes Subcategory and Category because it sees the foreign key relationships between the three product-related tables. For attributes, select the following: <strong>Product Key </strong>(which you should rename to <strong>Product</strong>), <strong>Product Subcategory Key</strong> (which you should rename to <strong>Subcategory</strong>), and <strong>Product Category Key</strong> (which you should rename to <strong>Category</strong>).</p>
<p>Create a <strong>Products </strong>hierarchy in this order from top to bottom: <strong>Category</strong>,<strong> Subcategory</strong>,<strong> Product</strong>. If you go to the Attribute Relationships page, you’ll see that the attributes have the correct many-to-one sequence because the table relationships contained the necessary information. With Date, all attributes were in the same table so the designer couldn’t determine the sequencing automatically.</p>
<p>Tip: If you forget to select an attribute when you’re using the wizard, don’t worry. You can drag the attribute from the diagram on the Dimension Structure page to the Attributes pane at any time.</p>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/57c69da7747d_3D0F/SNAGHTML23f5e22_thumb2_thumb.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SNAGHTML23f5e22_thumb[2]_thumb" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/57c69da7747d_3D0F/SNAGHTML23f5e22_thumb2_thumb_thumb.png" border="0" alt="SNAGHTML23f5e22_thumb[2]_thumb" width="23" height="23" /></a><strong>Step 4: Deploy and Test</strong></p>
<p>To view a complete dimension as it will appear in a cube, you must deploy your project. Just right-click the project in Solution Explorer, and click <strong>Deploy</strong>. Each Analysis Services project becomes a database on the Analysis Services server when you use the Deploy command in BIDS the first time. In addition, the files that you see in Solution Explorer get copied to the Analysis Services server as database objects and data gets copied from the source tables into these database objects. Tip: If you don’t want to deploy to a local Analysis Services server, right-click the project in Solution Explorer, click <strong>Properties</strong>, and change the <strong>Server </strong>property on the <strong>Deployment </strong>page.</p>
<p>After processing is complete, you can browse each dimension in BIDS using the Browser tab of its respective dimension designer. If you closed the designer, just double-click the dimension in Solution Explorer to re-open it. Each attribute becomes a two-level  hierarchy with the top level containing an All member and the bottom level containing all the unique values found in the corresponding table column. Use the Hierarchy drop-down list to switch between hierarchies in the dimension. Here’s a fragment of the Month attribute hierarchy:</p>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/57c69da7747d_3D0F/image_thumb4_thumb.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image_thumb[4]_thumb" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/57c69da7747d_3D0F/image_thumb4_thumb_thumb.png" border="0" alt="image_thumb[4]_thumb" width="113" height="146" /></a></p>
<p>Notice anything strange? We’ll fix that in the next step. Whenever you design dimensions, you need to check each attribute hierarchy and each user hierarchy (<strong>Calendar</strong> and <strong>Products</strong> in today’s lesson) to make sure the names of each member appear correctly and in the right sort order. A member is the unique value in a hierarchy – such as <strong>2005 Aug</strong> or <strong>2005 Dec</strong> in the <strong>Month</strong> attribute hierarchy.</p>
<h3>Step 5: Sort Order</h3>
<p>The default sort order for dimension members is by name. You can sort by the key value, assuming the key is correctly defined and will produce the sort order that you want. You can also sort by another attribute in the dimension. To fix the problem above, you start by changing the key value to a composite key based on the year and the month number. Switch to the Dimension Structure tab, click <strong>Month</strong>, and then find the <strong>Key Columns </strong>property in the Properties window. If that window isn’t open, use the <strong>View </strong>menu to open it.</p>
<p>Click in the <strong>Key Columns </strong>box to display the ellipsis button, and then click that button. In the <strong>Key Columns </strong>list, select <strong>Month</strong>, and then click the arrow pointing left to remove the column from the list. Then double-click <strong>CalendarYear </strong>and <strong>MonthNumberOfYear </strong>to add the two columns as a composite key to the list. Click OK to close the dialog box. Now you’ll need to change the <strong>NameColumn </strong>property to <strong>Month</strong>.</p>
<p>Whenever you use a composite key, you must specify a name column. If you’re using only a single column as a key, that column will do double-duty as both key and name column unless you specifically define a name column.</p>
<p>To check the results, you’ll need to redeploy the project. Only the changes you made get deployed so it goes much faster than the initial deployment. Go to the Browser tab and click the <strong>Reconnect </strong>button (the second button on the toolbar) to re-establish communication with the server. The sort order should be correct now for the <strong>Month</strong> attribute hierarchy. The <strong>Month </strong>level of the <strong>Calendar </strong>user hierarchy will also correctly sort.</p>
<p><strong>What’s Next?</strong></p>
<p>Most cubes have a few more dimensions than you’re creating here, but the process is very similar so I won’t walk you through the steps. For extra credit, though, you can try adding in dimensions like Promotion or Sales Territory. As I mentioned earlier, there are a lot of properties to configure for dimensions that allow you to get specific behavior for advanced dimension structures, but the default settings are sufficient when dealing with simple dimensions such as you have in the project now. If you’re really curious, you can check out <a href="http://msdn.microsoft.com/en-us/library/ms174919.aspx" target="_blank">the official list of properties</a>, but most of this won’t likely make more sense until you can put it into context with examples.</p>
<p>In the next post in this series, <a title="SQLU SSAS Week: Cube Construction 101" href="http://blog.datainspirations.com/2011/05/12/sqlu-ssas-week-cube-construction-101/">Cube Construction 101</a>, I’ll show you how to work with the cube wizard and the cube designer. Once you get the cube built, you’ll see how the dimensions work with cubes to facilitate the slice-and-dice capability for which SSAS is famous.</p>
<p>P.S. If you have any trouble with today’s lesson or have questions about dimensions, post a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.datainspirations.com/2011/05/11/sqlu-ssas-week-dimension-design-101-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Designing Cubes for Performance</title>
		<link>http://blog.datainspirations.com/2011/04/20/designing-cubes-for-performance/</link>
		<comments>http://blog.datainspirations.com/2011/04/20/designing-cubes-for-performance/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 20:03:17 +0000</pubDate>
		<dc:creator>Stacia Misner</dc:creator>
				<category><![CDATA[Analysis Services]]></category>
		<category><![CDATA[PASS]]></category>
		<category><![CDATA[SSAS]]></category>

		<guid isPermaLink="false">http://blog.datainspirations.com/?p=423</guid>
		<description><![CDATA[Each month the PASS Data Warehousing/Business Intelligence Virtual Chapter enlists the community to present about a relevant topic, with &#8220;All about Analysis Services&#8221; as the topic for April 2011. Today I delivered my Designing Cubes for Performance presentation (download slides here). I will post a link to the recording when it becomes available. Two really great references [...]]]></description>
			<content:encoded><![CDATA[<p>Each month the <a href="http://bi.sqlpass.org/" target="_blank">PASS Data Warehousing/Business Intelligence Virtual Chapter</a> enlists the community to present about a relevant topic, with &#8220;All about Analysis Services&#8221; as the topic for April 2011. Today I delivered my Designing Cubes for Performance presentation (<a href="http://blog.datainspirations.com/uploads/designing-cubes-perf.pdf" target="_blank">download slides here</a>). I will post a link to the recording when it becomes available.</p>
<p>Two really great references that cover this subject are the downloadable <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=3be0488d-e7aa-4078-a050-ae39912d2e43&amp;displaylang=en" target="_blank">Analysis Services Performance Guide</a> and a book by members of the Analysis Services development team at Microsoft, <a href="http://www.amazon.com/Microsoft-Server-Analysis-Services-Unleashed/dp/0672330016/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1303313363&amp;sr=8-1" target="_blank">Microsoft SQL Server 2008 Analysis Services Unleashed</a>. If you&#8217;re still new to Analysis Services, some of the concepts and terminology might take a while to digest, so plan to read and re-read these resources many times! If that still doesn&#8217;t help, add a comment to this post with your question, and I&#8217;ll try to help you better understand how to implement best practices for cube design.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.datainspirations.com/2011/04/20/designing-cubes-for-performance/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Multidimensional Thinking&#8211;24 Hours of Pass: Celebrating Women in Technology</title>
		<link>http://blog.datainspirations.com/2011/03/15/multidimensional-thinking24-hours-of-pass-celebrating-women-in-technology-2/</link>
		<comments>http://blog.datainspirations.com/2011/03/15/multidimensional-thinking24-hours-of-pass-celebrating-women-in-technology-2/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 22:59:54 +0000</pubDate>
		<dc:creator>Stacia Misner</dc:creator>
				<category><![CDATA[BI]]></category>
		<category><![CDATA[PASS]]></category>
		<category><![CDATA[PowerPivot]]></category>
		<category><![CDATA[SSAS]]></category>
		<category><![CDATA[WIT]]></category>

		<guid isPermaLink="false">http://blog.datainspirations.com/2011/03/15/multidimensional-thinking24-hours-of-pass-celebrating-women-in-technology-2/</guid>
		<description><![CDATA[It’s Day 1 of #24HOP and it’s been great to participate in this event with so many women from all over the world in one long training-fest. The SQL community has been abuzz on Twitter with running commentary which is fun to watch while listening to the current speaker. If you missed the fun today [...]]]></description>
			<content:encoded><![CDATA[<p>It’s Day 1 of #24HOP and it’s been great to participate in this event with so many women from all over the world in one long training-fest. The SQL community has been abuzz on Twitter with running commentary which is fun to watch while listening to the current speaker. If you missed the fun today because you’re busy with all that work you’ve got to do – don’t despair. All sessions are recorded and will be available soon. Keep an eye on the <a href="http://www.sqlpass.org/24hours/spring2011/" target="_blank">24 Hours of Pass page</a> for details.</p>
<p>And the fun’s not over today. Rather than run 24 hours consecutively, #24HOP is now broken down into 12-hours over two days, so <a href="http://www.sqlpass.org/24hours/spring2011/SessionsbySchedule.aspx" target="_blank">check out the schedule</a> to see if there’s a session that interests you and fits your schedule. I’m pleased to announce that my business colleague Erika Bakse ( <a href="http://erikasblog.datainspirations.com/" target="_blank">Blog</a> | <a href="http://twitter.com/BakseDoesBI" target="_blank">Twitter</a>) will be presenting on Day 2 – her debut presentation for a PASS event. (And I’m also pleased to say she’s my daughter!)</p>
<p><strong>Multidimensional Thinking: The Presentation</strong></p>
<p>My contribution to this lineup of terrific speakers was Multidimensional Thinking. Here’s the abstract:</p>
<p>“Whether you’re developing Analysis Services cubes or creating PowerPivot workbooks, you need to get into a multidimensional frame of mind to produce a model that best enables users to answer their business questions on their own. Many database professionals struggle initially with multidimensional models because the data modeling process is much different than the one they use to produce traditional, third normal form databases. In this session, I’ll introduce you to the terminology of multidimensional modeling and step through the process of translating business requirements into a viable model.”</p>
<p>If you watched the presentation and want a copy of the slides, you can <strong><a href="http://datainspirations.com/uploads/MultidimensionalThinking.pdf" target="_blank">download a copy here</a></strong>. And you’re welcome to download the slides even if you didn’t watch the presentation, but they’ll make more sense if you did!</p>
<p><strong>Kimball All the Way</strong></p>
<p>There’s only so much I can cover in the time allotted, but I hope that I succeeded in my attempt to build a foundation that prepares you for starting out in business intelligence. One of my favorite resources that will get into much more detail about all kinds of scenarios (well beyond the basics!) is <a href="http://www.amazon.com/Data-Warehouse-Toolkit-Complete-Dimensional/dp/0471200247/ref=sr_1_2?ie=UTF8&amp;qid=1300145259&amp;sr=8-2" target="_blank">The Data Warehouse Toolkit (Second Edition)</a> by Ralph Kimball. Anything from Kimball or the <a href="http://kimballgroup.com/" target="_blank">Kimball Group</a> is worth reading. </p>
<p>Kimball material might take reading and re-reading a few times before it makes sense. From my own experience, I found that I actually had to just build my first data warehouse using dimensional modeling on faith that I was going the right direction because it just didn’t click with me initially. I’ve had years of practice since then and I can say it does get easier with practice. The most important thing, in my opinion, is that you simply must prototype a lot and solicit user feedback, because ultimately the model needs to make sense to them. They will definitely make sure you get it right!</p>
<p><strong>Schema Generation</strong></p>
<p>One question came up after the presentation about whether we use SQL Server Management Studio or Business Intelligence Development Studio (BIDS) to build the tables for the dimensional model. My answer? It really doesn’t matter how you create the tables. Use whatever method that you’re comfortable with. But just so happens that it IS possible to set up your design in BIDS as part of an Analysis Services project and to have BIDS generate the relational schema for you. I did a Webcast last year called Building a Data Mart with Integration Services that demonstrated how to do this. Yes, the subject was Integration Services, but as part of that presentation, I showed how to leverage Analysis Services to build the tables, and then I showed how to use Integration Services to load those tables. I <a href="http://blog.datainspirations.com/2010/09/13/building-a-data-mart-with-integration-services/" target="_blank">blogged about this presentation</a> in September 2010 and included downloads of the project that I used. In the blog post, I explained that I missed a step in the demonstration. Oops.</p>
<p>Just as an FYI, there were two more Webcasts to finish the story begun with the data – <a href="http://www.idera.com/Events/RegisterWC.aspx?EventID=148" target="_blank">Accelerating Answers with Analysis Services</a> and <a href="http://www.idera.com/Events/RegisterWC.aspx?EventID=149" target="_blank">Delivering Information with Reporting Services</a>.</p>
<p>If you want to just cut to the chase and learn how to use Analysis Services to build the tables, you can see the <a href="http://msdn.microsoft.com/en-us/library/ms174954.aspx" target="_blank">Using the Schema Generation Wizard</a> topic in Books Online.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.datainspirations.com/2011/03/15/multidimensional-thinking24-hours-of-pass-celebrating-women-in-technology-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Retrieving Aggregate Data from Analysis Services for Reports</title>
		<link>http://blog.datainspirations.com/2011/03/08/retrieving-aggregate-data/</link>
		<comments>http://blog.datainspirations.com/2011/03/08/retrieving-aggregate-data/#comments</comments>
		<pubDate>Tue, 08 Mar 2011 23:40:24 +0000</pubDate>
		<dc:creator>Stacia Misner</dc:creator>
				<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[SSAS]]></category>
		<category><![CDATA[SSRS]]></category>
		<category><![CDATA[T-SQL Tuesday]]></category>

		<guid isPermaLink="false">http://blog.datainspirations.com/?p=356</guid>
		<description><![CDATA[It’s the second Tuesday of the month, so that means it’s T-SQL Tuesday! This month’s host is Jes Borland (blog &#124; twitter) and the topic is Aggregate Functions. I agree with Doug Lane (blog &#124; twitter), who pointed out in his T-SQL Tuesday post that it’s best if you use the database engine to calculate [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/1dc72ec994ab_7A55/TSQL2sDay150x150.jpg"><img style="background-image: none; margin: 0px 8px 3px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border-width: 0px;" title="TSQL2sDay150x150" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/1dc72ec994ab_7A55/TSQL2sDay150x150_thumb.jpg" border="0" alt="TSQL2sDay150x150" width="154" height="154" align="left" /></a>It’s the second Tuesday of the month, so that means it’s T-SQL Tuesday! This month’s host is Jes Borland (<a href="http://blogs.lessthandot.com/index.php/All/?author=420" target="_blank">blog</a> | <a href="http://twitter.com/grrl_geek" target="_blank">twitter</a>) and the topic is <a href="http://blogs.lessthandot.com/index.php/DataMgmt/DBProgramming/come-one-come-all-to" target="_blank">Aggregate Functions</a>.</p>
<p>I agree with Doug Lane (<a href="http://www.douglane.net" target="_blank">blog</a> | <a href="http://twitter.com/douglane4" target="_blank">twitter</a>), <a href="http://www.douglane.net/2011/03/t-sql-tuesday-016-aggregations-in-reporting-services/" target="_blank">who pointed out in his T-SQL Tuesday post</a> that it’s best if you use the database engine to calculate aggregates rather than use aggregate functions in Reporting Services. There are some things the database engine can simply do better, and we should use the best tool for the job. But an even better way to work with aggregated data, in my opinion, is to put data into a cube and let Analysis Services do the calculations. Either way, whether you use a relational source like SQL Server or a multidimensional source like Analysis Services, the point is that the back-end engines will always outperform Reporting Services. On the back-end, Analysis Services should outperform SQL Server if the cube and the report query are both designed properly.</p>
<p>That said, there is some trickiness involved when  retrieving and using aggregations in reports. I was having a déjà vu moment as I was writing this blog and sure enough I found that I had touched on the subject several years ago in my blog post, <a href="http://blog.datainspirations.com/2007/04/04/showing-server-aggregations-in-reporting-services/" target="_blank">Showing Server Aggregations in Reporting Services</a>. The post was written in reference to Reporting Services 2005, but the principles still apply. In today’s post, I’ll revisit the same query but add in some pictures this time to help clarify.</p>
<h5>The Problem</h5>
<p>If I create a table using the query from the referenced post, and if I add a total row using the Reporting Services SUM function, I get this result:</p>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2011/03/Tablix11.png"><img class="alignleft size-full wp-image-359" title="Tablix1" src="http://blog.datainspirations.com/wp-content/uploads/2011/03/Tablix11.png" alt="" width="506" height="162" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The SUM function would work just fine if I were to use an additive measure, like SalesAmount, but the SUM function doesn’t work at all with non-additive measures like Gross Profit Margin. It adds up the percentage values to produce the total row value but it really needs to compute the sum of sales and the sum of costs separately and then do the math to compute the correct result.</p>
<h5>The Solution</h5>
<p>Instead of using the SUM function, we can use the AGGREGATE function instead. That is we replace this expression:</p>
<p><span style="font-family: 'Courier New';">=Sum(Fields!Gross_Profit_Margin.Value)</span></p>
<p>with this expression:</p>
<p><span style="font-family: 'Courier New';">=Aggregate(Fields!Gross_Profit_Margin.Value)</span></p>
<h5>Where’s the Value?</h5>
<p>When I make the change to the expression and preview the report, I find that I have a new problem – the total row is now missing a value completely!</p>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2011/03/Tablix1.png"><img title="Tablix1" src="http://blog.datainspirations.com/wp-content/uploads/2011/03/Tablix1.png" alt="" width="498" height="162" /></a></p>
<p>&nbsp;</p>
<p>The reason is that the Aggregate function requires me to use a query in design mode only, not in query mode. (At least that’s the case in Reporting Services 2008 R2. I don’t remember that this was true in Reporting Services 2005, but I don’t have an instance for that version handy at the moment to try it out. I think, from reading my prior post, that it worked in either mode, but I can’t prove it at the moment!) In other words, I can’t write the MDX manually in query mode – I must use the drag-and-drop interface to create my query. That’s fine for simple queries, but it won’t work when you need to add in calculations or otherwise make adjustments to the auto-generated query.</p>
<h5>The Complete Solution</h5>
<p>So once I switch the query to design mode like this:</p>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2011/03/SSASQuery.png"><img class="alignleft size-full wp-image-361" title="SSASQuery" src="http://blog.datainspirations.com/wp-content/uploads/2011/03/SSASQuery.png" alt="" width="443" height="331" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>And then preview the report, I now get the desired result.</p>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2011/03/Tablix3.png"><img class="alignleft size-full wp-image-360" title="Tablix3" src="http://blog.datainspirations.com/wp-content/uploads/2011/03/Tablix3.png" alt="" width="501" height="164" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>As I mentioned above, this will only work when the query is in design more. And there’s another requirement&#8211;the tablix must have at least one group defined. The benefit, though, is a faster report than you’ll get from running a comparable relational query. You won’t notice the difference in the AdventureWorks databases, but in that case, Reporting Services will perform aggregate functions reasonably well anyway. But if your data source has high volumes of data, then using a combination of cubes and Reporting Services will deliver much faster reports.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.datainspirations.com/2011/03/08/retrieving-aggregate-data/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Creating a Linked Server for Analysis Services</title>
		<link>http://blog.datainspirations.com/2010/11/30/creating-a-linked-server-for-analysis-services/</link>
		<comments>http://blog.datainspirations.com/2010/11/30/creating-a-linked-server-for-analysis-services/#comments</comments>
		<pubDate>Tue, 30 Nov 2010 23:20:12 +0000</pubDate>
		<dc:creator>Stacia Misner</dc:creator>
				<category><![CDATA[Analysis Services]]></category>
		<category><![CDATA[MDX]]></category>
		<category><![CDATA[PASS]]></category>
		<category><![CDATA[SSAS]]></category>

		<guid isPermaLink="false">http://blog.datainspirations.com/?p=297</guid>
		<description><![CDATA[I think I’ve finally recovered (in more ways than one!) from PASS Summit 2010 in Seattle a mere few weeks ago. I seem to be eternally plagued with computer problems at every conference I attend, but always in different ways. Accordingly, I have devised different strategies for anticipating and coping with problems. I foiled this [...]]]></description>
			<content:encoded><![CDATA[<p>I think I’ve finally recovered (in more ways than one!) from <a href="http://www.sqlpass.org/summit/na2010/" target="_blank">PASS Summit 2010</a> in Seattle a mere few weeks ago. I seem to be eternally plagued with computer problems at every conference I attend, but always in different ways. Accordingly, I have devised different strategies for anticipating and coping with problems. I foiled this last disaster by having my slides and demos duplicated on Erika’s laptop which I had to call into action literally seconds before the session began due to a hard drive failure, but missed one little detail which was actually a last minute bonus addition to my session on <a href="http://msdn.microsoft.com/en-us/library/ms175340(SQL.90).aspx" target="_blank">Analysis Services Stored Procedures</a> (ASSP). So it wasn’t the end of the world, but it was a forehead slapping moment!</p>
<p>As part of that session, I told a story of how I came to appreciate the use of ASSP for a client project in which I had to dynamically construct MDX queries on the fly using T-SQL stored procedures and pass the resulting query into an <a href="http://msdn.microsoft.com/en-us/library/ms188427.aspx" target="_blank">OPENQUERY</a> function. The problem that I had in that situation was the limitation imposed by the OPENQUERY function – I  had to write my MDX query in 8000 characters or less! Erika and I worked out all kinds of ways to live within that constraint before we tried ASSPs, but ultimately the complexity of these queries kept pushing over the query string over the limit and thus began our adventures with ASSP. I’ll add a post on this technique to my series on Using Dynamic MDX in Reporting Services soon. (The <a href="http://blog.datainspirations.com/2010/10/07/using-dynamic-mdx-in-reporting-services-part-1/" target="_blank">first post describes the use of StrToMember() and StrToSet()</a> and <a href="http://blog.datainspirations.com/2010/10/09/using-dynamic-mdx-in-reporting-services-part-2/" target="_blank">the second post shows how to use MDX in a dynamic OLE DB query</a>.</p>
<p>I had a few extra minutes of time in my session, so I thought I’d show the audience “the rest of the story” by demonstrating how I could use the OPENQUERY function with the ASSP that I created earlier in the session. I  had the OPENQUERY working on my laptop just a few minutes before the session started, but in preparing Erika’s laptop, I didn’t think about setting up a linked server to Analysis Services in advance. No worries – I’ll just do it live! Well, my memory failed me on how to fill out the New Linked Server dialog box in Management Studio, so I asked the audience if anyone knew what to do and the reply I got was, “It’s a mystery!” (It took me a few times to realize that’s what they said – I was suffering from the “SQL plague” and my ears were really plugged up!)</p>
<p>Nothing a little search engine won’t resolve, right? Well, I turned up a few hits (like the Books Online entry <a href="http://msdn.microsoft.com/en-us/library/aa936675(SQL.80).aspx" target="_blank">Adding a Linked Server</a>), but nothing was particularly helpful for interpreting which parameters are really needed and which are optional – especially when I was on the spot! So my post today is my contribution to resolving the mystery. Of course, now that I’m offstage and working on my replaced hard drive and with a much less congested head, I was able to set up a linked server quite quickly.</p>
<p>To set up a linked server for Analysis Services, follow these steps:</p>
<ol>
<li>Connect to the Database Engine in Management Studio.</li>
<li>Expand Server Objects, right-click Linked Servers, and click New Linked Server.</li>
<li>Define a name for the linked server, and set the following options as shown in the screenshot below:</li>
</ol>
<ul>
<li>Provider: Microsoft OLE DB Provider for Analysis Services 10.0</li>
<li>Product name: MSOLAP.4</li>
<li>Data source: (the name of your server)</li>
<li>Catalog: (the name of the Analysis Services database)</li>
</ul>
<p><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/1f34ea158669_B9A9/image.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/1f34ea158669_B9A9/image_thumb.png" border="0" alt="image" width="416" height="373" /></a></p>
<p>To test the linked server, you can write a query like this:</p>
<p><span style="font-family: 'Courier New';">select * from openquery(AdventureWorksOLAP, <span style="color: #ff0000;">&#8216;select [Measures].[Sales Amount] on columns from [Adventure Works]&#8216;</span>)</span></p>
<p>A couple of things to note &#8211; This query is executed as a database engine query, not as an MDX query. The first argument of the OPENQUERY is the name of your linked server.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.datainspirations.com/2010/11/30/creating-a-linked-server-for-analysis-services/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PASS Summit 2010: Epilogue</title>
		<link>http://blog.datainspirations.com/2010/11/15/pass-summit-2010-epilogue/</link>
		<comments>http://blog.datainspirations.com/2010/11/15/pass-summit-2010-epilogue/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 20:37:01 +0000</pubDate>
		<dc:creator>Stacia Misner</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[MDX]]></category>
		<category><![CDATA[PASS]]></category>
		<category><![CDATA[SSAS]]></category>
		<category><![CDATA[SSRS]]></category>
		<category><![CDATA[WIT]]></category>

		<guid isPermaLink="false">http://blog.datainspirations.com/2010/11/15/pass-summit-2010-epilogue/</guid>
		<description><![CDATA[Another PASS Summit has come and gone, and a good time was had by all. The song at the opening keynote sums up the experience quite nicely, &#8220;Simply the Best.&#8221; My favorite quote of the week comes from Andy Leonard (blog&#124; twitter) who tweeted on November 9, &#8220;#sqlpass is a family reunion. :{&#62;&#8221; Oddly enough, [...]]]></description>
			<content:encoded><![CDATA[<p style="margin: 0in 0in 10pt;">Another <a href="http://www.sqlpass.org/summit/na2010/" target="_blank">PASS Summit</a> has come and gone, and a good time was had by all. The song at the <a href="http://www.sqlpass.org/summit/na2010/LiveKeynotes/Tuesday.aspx" target="_blank">opening keynote</a> sums up the experience quite nicely, &#8220;Simply the Best.&#8221; My favorite quote of the week comes from Andy Leonard (<a href="http://sqlblog.com/blogs/andy_leonard" target="_blank">blog</a>| <a href="http://twitter.com/AndyLeonard" target="_blank">twitter</a>) who tweeted on November 9, &#8220;<a title="#sqlpass" href="http://twitter.com/#!/search?q=#sqlpass">#sqlpass</a> is a family reunion. :{&gt;&#8221; Oddly enough, Andy is one of the few people that I DIDN&#8217;T get to see last week, but not for lack of trying. Sorry, Andy!</p>
<p style="margin: 0in 0in 10pt;">As an independent consultant, I don&#8217;t get to interact regularly with my peers, so I love the reunion aspect of PASS. And now that I&#8217;ve started following people on Twitter, my universe of colleagues has expanded even more, and I was delighted to meet the people behind the avatars.</p>
<p style="margin: 0in 0in 10pt;">The joy of PASS is not limited to those of us who have attended for many years. As I was sitting in the airport last Friday, I recognized an attendee who was a first-timer and asked about his experience. He replied that it exceeded expectations. He was so anxious to get back to work to put what he learned into practice. He felt that the value of the knowledge that he is bringing back to the office from PASS was so much greater than the price of the conference. Now that&#8217;s a ringing endorsement if I ever heard one.</p>
<p style="margin: 0in 0in 10pt;">There is so much more that could be said about PASS, and many in the community have already posted their thoughts on Twitter and on their blogs. There has been quite a stir in the business intelligence community this past week about the future of Analysis Services, about which I will comment in a future post. Today, however, I will focus on a few follow-up comments and links to resources related to activities in which I participated last week.</p>
<p style="margin: 0in 0in 10pt;"><strong>Getting Started In Blogging And Technical Speaking</strong></p>
<p style="margin: 0in 0in 10pt;">Kendal Van Dyke (<a href="http://kendalvandyke.blogspot.com/" target="_blank">blog</a>| <a href="http://twitter.com/SQLDBA" target="_blank">twitter</a>) presented a session with tips for getting started in either of blogging or speaking. He invited a panel of experts to join him, including myself, Rob Farley (not pictured below) (<a href="http://sqlblog.com/blogs/rob_farley" target="_blank">blog</a>| <a href="http://twitter.com/rob_farley" target="_blank">twitter</a>), Aaron Bertrand (<a href="http://sqlblog.com/blogs/aaron_bertrand" target="_blank">blog</a> | <a href="http://twitter.com/AaronBertrand" target="_blank">twitter</a>), Buck Woody (<a href="http://buckwoody.com/" target="_blank">blog</a> | <a href="http://twitter.com/buckwoody" target="_blank">twitter</a>), Todd McDermid (<a href="http://toddmcdermid.blogspot.com/" target="_blank">blog</a>| <a href="http://twitter.com/Todd_McDermid" target="_blank">twitter</a>), Mike Walsh (<a href="http://www.straightpathsql.com/blog" target="_blank">blog</a> | <a href="http://twitter.com/mike_walsh" target="_blank">twitter</a>), Thomas LaRock (<a href="http://thomaslarock.com/backstage/" target="_blank">blog</a> | <a href="http://twitter.com/SQLRockstar" target="_blank">twitter</a>), Ted Krueger (<a href="http://www.lessthandot.com/" target="_blank">blog</a> | <a href="http://twitter.com/onpnt" target="_blank">twitter</a>), Patrick LeBlanc (<a href="http://sqldownsouth.blogspot.com/" target="_blank">blog</a> | <a href="http://twitter.com/patrickdba" target="_blank">twitter</a>), Andy Warren (<a href="http://www.sqlservercentral.com/blogs/andy_warren/default.aspx" target="_blank">blog</a> | <a href="http://twitter.com/sqlandy" target="_blank">twitter</a>), and Brent Ozar (<a href="http://www.brentozar.com/" target="_blank">blog</a> | <a href="http://twitter.com/BrentO" target="_blank">twitter</a>).</p>
<p style="margin: 0in 0in 10pt;">
<div id="attachment_285" class="wp-caption alignleft" style="width: 510px"><a href="http://blog.datainspirations.com/wp-content/uploads/2010/11/5168176314_fe721e07b7.jpg"><img class="size-full wp-image-285" title="Kendal Van Dyk's session at PASS Summit 2010" src="http://blog.datainspirations.com/wp-content/uploads/2010/11/5168176314_fe721e07b7.jpg" alt="" width="500" height="375" /></a><p class="wp-caption-text">Photo courtesy of Brent Ozar</p></div>
<p style="margin: 0in 0in 10pt;">Who had control of this very interactive session? You&#8217;ll have to <a href="http://www.sqlpass.org/summit/na2010/Home/OnSiteFAQ/DVDs.aspx" target="_blank">buy the PASS Summit DVD</a> to find out!</p>
<p style="margin: 0in 0in 10pt;">I waited patiently for my turn to speak. With a room full of speakers, getting your own turn can be a challenge! I heard a few attendees express concern that they didn&#8217;t know what to write about, or that someone else has covered the topic. My response to this concern is that everyone has a unique take on a topic, and that&#8217;s why T-SQL Tuesday is such a great way both to learn and to contribute. T-SQL Tuesday was started by Adam Mechanic (<a href="http://sqlblog.com/blogs/adam_machanic" target="_blank">blog</a> | <a href="http://twitter.com/AdamMachanic" target="_blank">twitter</a>) and gives everyone with an opinion (and who doesn&#8217;t have one?) or a specific experience to add to the topic. You can <a href="http://sqlblog.com/blogs/adam_machanic/archive/2009/11/30/invitation-to-participate-in-t-sql-tuesday-001-date-time-tricks.aspx" target="_blank">see the first invitation to T-SQL Tuesday here</a> to see how it all started and <a href="http://www.sqlskills.com/BLOGS/PAUL/category/T-SQL-Tuesday.aspx" target="_blank">the most recent T-SQL Tuesday posts</a> hosted by Paul Randal (<a href="http://sqlskills.com/blogs/paul/" target="_blank">blog</a> | <a href="http://twitter.com/paulrandal" target="_blank">twitter</a>). The best way to keep tabs on who&#8217;s hosting the next round is to follow the #TSQL2sDay hash tag on Twitter.</p>
<p style="margin: 0in 0in 10pt;">Unfortunately, I didn&#8217;t get to hang out for the entire presentation, because I had to move on to the…</p>
<p style="margin: 0in 0in 10pt;"><strong>Women in Technology Panel</strong></p>
<p style="margin: 0in 0in 10pt;">I was honored to participate as a panelist for this year&#8217;s Women in Technology luncheon. It was well attended, and I heard so many positive comments after the event from both men and women. I drew inspiration from my fellow panelists as well as the stories shared with me by other women attending PASS this year. You can view a recording of the event <a href="http://www.sqlpass.org/summit/na2010/LiveKeynotes/WITLuncheon.aspx" target="_blank">here</a> if you&#8217;re a registered member of PASS (which is free to join).</p>
<p style="margin: 0in 0in 10pt;">It&#8217;s so difficult to say what the right answer is for increasing the numbers of women in technology. The numbers are diminishing at a deplorable rate (<a href="http://blog.datainspirations.com/2010/07/29/maybe-its-just-me-a-perspective-from-one-woman-in-it/" target="_blank">as I discussed in a previous post</a>). It seems to me that to foster change we need to start laying the groundwork with our children. By &#8220;our children&#8221;, I mean society in general, not me specifically, although I have tried do my part! On the one hand, I don&#8217;t recommend forcing children into a career path that they can&#8217;t embrace enthusiastically. On the other hand, I believe that one reason that girls don&#8217;t pursue technology as an option is lack of exposure to the possibilities. Lynn Langit (<a href="http://blogs.msdn.com/SoCalDevGal" target="_blank">blog</a> | <a href="http://www.twitter.com/llangit" target="_blank">twitter</a>) is a role model for showing kids (not just girls!) how to explore these possibilities through <a href="http://www.teachingkidsprogramming.org/">www.teachingkidsprogramming.org</a>. Check it out!</p>
<p style="margin: 0in 0in 10pt;">Along these lines, I proposed that maybe &#8211; as great a community as PASS is &#8211; we should collectively think about what we can do for our kids. Someone tweeted that I suggested we should bring our daughters to SQLSaturday, but actually I wondered aloud if we could do something <em>similar</em> to SQLSaturday that focused on the kids (and not just girls). Maybe we could get some sponsors to help, too?</p>
<p style="margin: 0in 0in 10pt;"><strong>Demystifying MDX in Reporting Services</strong></p>
<p style="margin: 0in 0in 10pt;">In this session, I explained some of the nuances of working with MDX in Reporting Services. I have posted my demo reports <a href="http://blog.datainspirations.com/uploads/DemystifingMDXinSSRS.zip" target="_blank">here</a>.</p>
<p style="margin: 0in 0in 10pt;">In addition, you might want to refer back to some of my recent posts about using dynamic MDX in Reporting Services: <a href="http://blog.datainspirations.com/2010/10/07/using-dynamic-mdx-in-reporting-services-part-1/" target="_blank">Part 1</a> and <a href="http://blog.datainspirations.com/2010/10/09/using-dynamic-mdx-in-reporting-services-part-2/" target="_blank">Part 2</a>.</p>
<p style="margin: 0in 0in 10pt;">If you&#8217;re not familiar with MDX, I presented <a href="http://www.sqlpass.org/LearningCenter/24HoursFall.aspx" target="_blank">Session 07: Intro to MDX</a> for <a href="http://www.sqlpass.org/24hours/fall2010/" target="_blank">24 Hours of Pass: Summit Preview</a> which you can view if you have a free PASS membership. MDX is not going away any time soon, contrary to recent rumors, so invest some time learning it if you plan to work with real Analysis Services cubes, which will continue to have their place in the BI stack for several years to come.</p>
<p style="margin: 0in 0in 10pt;"><strong>Real World Analysis Services Stored Procedures</strong></p>
<p style="margin: 0in 0in 10pt;">This topic drew a larger audience than I expected as it&#8217;s a fairly specialized topic. For years, I never needed to use Analysis Services Stored Procedures (ASSP), avoiding it because folklore said so due to performance hits. However, some things just can&#8217;t be done any other way and I ran into such things this past year. To date, I haven&#8217;t found much written about ASSP other than <a href="http://msdn.microsoft.com/en-us/library/ms176113.aspx" target="_blank">BOL</a>, but you can find some <a href="http://www.codeplex.com/ASStoredProcedures" target="_blank">excellent examples to download</a> at CodePlex. Plus I&#8217;ve uploaded the <a href="http://blog.datainspirations.com/uploads/ASSP.zip" target="_blank">very simple (non-production-ready) C# example</a> that I used in my session demonstration for you to peruse.</p>
<p style="margin: 0in 0in 10pt;"><strong>What&#8217;s Next?</strong></p>
<p style="margin: 0in 0in 10pt;">So now that I&#8217;ve completed all the training and Webcasts and conference sessions that I&#8217;ve been focused on the last couple of months (with one exception &#8211; <a href="https://www2.gotomeeting.com/register/350482474" target="_blank">Delivering Information with Reporting Services</a>, a free Webcast at 12 pm Pacific on Wednesday, November 17), I plan to get back to a more regular blogging schedule. There are certainly plenty of topics on my &#8220;to do&#8221; list!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.datainspirations.com/2010/11/15/pass-summit-2010-epilogue/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

