<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" version="2.0">
  <channel>
    <title>Mark Mrachek - Business Intelligence Blog</title>
    <link>http://www.mrachek.com/</link>
    <description />
    <language>en-us</language>
    <copyright>Mark Mrachek</copyright>
    <lastBuildDate>Thu, 18 May 2006 05:31:34 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.8.5223.2</generator>
    <managingEditor>webmaster@mrachek.com</managingEditor>
    <webMaster>webmaster@mrachek.com</webMaster>
    <item>
      <trackback:ping>http://www.mrachek.com/Trackback.aspx?guid=af10cb31-0a3c-457b-89bb-06c5f26bdf8a</trackback:ping>
      <pingback:server>http://www.mrachek.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.mrachek.com/PermaLink,guid,af10cb31-0a3c-457b-89bb-06c5f26bdf8a.aspx</pingback:target>
      <dc:creator>webmaster@mrachek.com (Mark Mrachek)</dc:creator>
      <wfw:comment>http://www.mrachek.com/CommentView,guid,af10cb31-0a3c-457b-89bb-06c5f26bdf8a.aspx</wfw:comment>
      <wfw:commentRss>http://www.mrachek.com/SyndicationService.asmx/GetEntryCommentsRss?guid=af10cb31-0a3c-457b-89bb-06c5f26bdf8a</wfw:commentRss>
      <title>Errors in the metadata manager</title>
      <guid>http://www.mrachek.com/PermaLink,guid,af10cb31-0a3c-457b-89bb-06c5f26bdf8a.aspx</guid>
      <link>http://www.mrachek.com/PermaLink,guid,af10cb31-0a3c-457b-89bb-06c5f26bdf8a.aspx</link>
      <pubDate>Thu, 18 May 2006 05:31:34 GMT</pubDate>
      <description>&lt;p class=MsoNormal&gt;
   &lt;font face=Verdana color=#000000 size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;I
   ran into this error yesterday when I was using the Aggregation Design Wizard in Analysis
   Services 2005.&lt;span&gt;&amp;nbsp; &lt;/span&gt;I was finally able trace the problem to a conflict
   between the Aggregation Design Wizard and a custom assembly that I had in my project.&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;?xml:namespace prefix = o /&gt;I
   still don’t know why the custom assembly was interfering with the creation of aggregations,
   but here is how I resolved the issue:&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in"&gt;
   &lt;font face=Verdana color=#000000 size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;span&gt;1)&lt;span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Remove
   the custom assembly from your project in Business Intelligence Development Studio.&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in"&gt;
   &lt;font face=Verdana color=#000000 size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;span&gt;2)&lt;span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Deploy
   your project.&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in"&gt;
   &lt;font face=Verdana color=#000000 size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;span&gt;3)&lt;span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Design
   the aggregations for your partitions with the Aggregation Design Wizard.&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in"&gt;
   &lt;font face=Verdana color=#000000 size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;span&gt;4)&lt;span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Add
   your custom assembly back into your project in Business Intelligence Development Studio.&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in"&gt;
   &lt;font face=Verdana color=#000000 size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;span&gt;5)&lt;span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Deploy
   your project.&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.mrachek.com/aggbug.ashx?id=af10cb31-0a3c-457b-89bb-06c5f26bdf8a" /&gt;</description>
      <comments>http://www.mrachek.com/CommentView,guid,af10cb31-0a3c-457b-89bb-06c5f26bdf8a.aspx</comments>
      <category>Analysis Services</category>
    </item>
    <item>
      <trackback:ping>http://www.mrachek.com/Trackback.aspx?guid=ea29b58b-2797-43cf-85f6-94108ca46c06</trackback:ping>
      <pingback:server>http://www.mrachek.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.mrachek.com/PermaLink,guid,ea29b58b-2797-43cf-85f6-94108ca46c06.aspx</pingback:target>
      <dc:creator>webmaster@mrachek.com (Mark Mrachek)</dc:creator>
      <wfw:comment>http://www.mrachek.com/CommentView,guid,ea29b58b-2797-43cf-85f6-94108ca46c06.aspx</wfw:comment>
      <wfw:commentRss>http://www.mrachek.com/SyndicationService.asmx/GetEntryCommentsRss?guid=ea29b58b-2797-43cf-85f6-94108ca46c06</wfw:commentRss>
      <title>Custom Drillthrough in Analysis Services 2005</title>
      <guid>http://www.mrachek.com/PermaLink,guid,ea29b58b-2797-43cf-85f6-94108ca46c06.aspx</guid>
      <link>http://www.mrachek.com/PermaLink,guid,ea29b58b-2797-43cf-85f6-94108ca46c06.aspx</link>
      <pubDate>Tue, 16 May 2006 04:17:02 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;font color=#000000&gt;It’s been
   quite a while since I’ve posted here because I’ve been extremely busy in a release
   cycle, but I thought I would post an update on the custom drillthrough that I have
   been working on.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;Unfortunately,
   I do not have the completed code yet.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
   &lt;o:p&gt;
      &lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;font color=#000000&gt;A few weeks
   ago, I had a conversation with &lt;a href="http://spaces.msn.com/cwebbbi"&gt;Chris Webb&lt;/a&gt; regarding
   the use of a stored procedure to implement customized drillthrough in Analysis Services
   2005.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We had discussed a couple of ways
   to implement a solution that would query the underlying database to return drillthrough
   records.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
   &lt;o:p&gt;
      &lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;font color=#000000&gt;One method
   was to capture the current members that made up a cell and pass those members to a
   Reporting Services report which would call a stored procedure and return records from
   the underlying database.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The other method
   was to capture the current members of a cell and use the metadata for those members
   (via AMO) to construct a SQL statement that could be passed to RS which would use
   a stored procedure to return the drillthrough records.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
   &lt;o:p&gt;
      &lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;font color=#000000&gt;I spent some
   time working on the SQL statement solution and got it working, but ran into a couple
   of problems that made me regret choosing this path.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;First,
   not all client applications handle actions the same way.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;For
   instance, if I were to construct a query by dragging and dropping my dimensions in
   Excel or the cube browser in SQL Server Management Studio, the queries returned immediately.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;However,
   when using ProClarity Desktop, my queries were much slower.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
   used SQL Server Profiler to see what was causing the holdup and found that a connection
   to Analysis Services would be opened and closed for every cell that was returned to
   the client.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;So, if I had 300 cells that
   made up a result set, 301 connections would be opened on the server (1 connection
   for the original query + 300 connections for the cells in the result set).&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This
   occurred because my stored procedure used AMO to read the metadata for the current
   members.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This was puzzling because with
   Excel and the cube browser, these connections would not be opened unless the drillthrough
   action was triggered when I right clicked on a single cell…which is what I intended.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
   &lt;o:p&gt;
      &lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;font color=#000000&gt;Another major
   flaw with this method was passing a SQL statement via the URL to Reporting Services.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This
   left a big security hole where the SQL in the query string could be manipulated.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Obviously,
   there are ways around this but the more I thought about this solution, the more I
   disliked it.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
   &lt;o:p&gt;
      &lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;font color=#000000&gt;Needless to
   say, I’m going to pass on creating the SQL statement from within the Analysis Services
   stored procedure.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;My new plan involves
   two stored procedures, one in Analysis Services and one in SQL Server.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
   figure if I can pass the current members to Reporting Services, then I can call a
   custom assembly in SQL Server that will query AMO and get the metadata for the current
   members. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;After I get this metadata, I
   can construct a SQL statement in my SQL Server assembly, execute the statement, and
   then return the records. 
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
   &lt;o:p&gt;
      &lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;font color=#000000&gt;I’m still
   pinched on time, but will post my results as soon as I get them completed. 
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.mrachek.com/aggbug.ashx?id=ea29b58b-2797-43cf-85f6-94108ca46c06" /&gt;</description>
      <comments>http://www.mrachek.com/CommentView,guid,ea29b58b-2797-43cf-85f6-94108ca46c06.aspx</comments>
      <category>Analysis Services</category>
    </item>
    <item>
      <trackback:ping>http://www.mrachek.com/Trackback.aspx?guid=7a56867b-1101-471d-9e4d-9a80c51c6331</trackback:ping>
      <pingback:server>http://www.mrachek.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.mrachek.com/PermaLink,guid,7a56867b-1101-471d-9e4d-9a80c51c6331.aspx</pingback:target>
      <dc:creator>webmaster@mrachek.com (Mark Mrachek)</dc:creator>
      <wfw:comment>http://www.mrachek.com/CommentView,guid,7a56867b-1101-471d-9e4d-9a80c51c6331.aspx</wfw:comment>
      <wfw:commentRss>http://www.mrachek.com/SyndicationService.asmx/GetEntryCommentsRss?guid=7a56867b-1101-471d-9e4d-9a80c51c6331</wfw:commentRss>
      <title>Custom Drillthrough in Analysis Services 2005</title>
      <guid>http://www.mrachek.com/PermaLink,guid,7a56867b-1101-471d-9e4d-9a80c51c6331.aspx</guid>
      <link>http://www.mrachek.com/PermaLink,guid,7a56867b-1101-471d-9e4d-9a80c51c6331.aspx</link>
      <pubDate>Tue, 16 May 2006 04:17:00 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;font color=#000000&gt;It’s been
   quite a while since I’ve posted here because I’ve been extremely busy in a release
   cycle, but I thought I would post an update on the custom drillthrough that I have
   been working on.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;Unfortunately,
   I do not have the completed code yet.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
   &lt;o:p&gt;
      &lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;font color=#000000&gt;A few weeks
   ago, I had a conversation with &lt;a href="http://spaces.msn.com/cwebbbi"&gt;Chris Webb&lt;/a&gt; regarding
   the use of a stored procedure to implement customized drillthrough in Analysis Services
   2005.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;We had discussed a couple of ways
   to implement a solution that would query the underlying database to return drillthrough
   records.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
   &lt;o:p&gt;
      &lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;font color=#000000&gt;One method
   was to capture the current members that made up a cell and pass those members to a
   Reporting Services report which would call a stored procedure and return records from
   the underlying database.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The other method
   was to capture the current members of a cell and use the metadata for those members
   (via AMO) to construct a SQL statement that could be passed to RS which would use
   a stored procedure to return the drillthrough records.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
   &lt;o:p&gt;
      &lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;font color=#000000&gt;I spent some
   time working on the SQL statement solution and got it working, but ran into a couple
   of problems that made me regret choosing this path.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;First,
   not all client applications handle actions the same way.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;For
   instance, if I were to construct a query by dragging and dropping my dimensions in
   Excel or the cube browser in SQL Server Management Studio, the queries returned immediately.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;However,
   when using ProClarity Desktop, my queries were much slower.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
   used SQL Server Profiler to see what was causing the holdup and found that a connection
   to Analysis Services would be opened and closed for every cell that was returned to
   the client.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;So, if I had 300 cells that
   made up a result set, 301 connections would be opened on the server (1 connection
   for the original query + 300 connections for the cells in the result set).&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This
   occurred because my stored procedure used AMO to read the metadata for the current
   members.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This was puzzling because with
   Excel and the cube browser, these connections would not be opened unless the drillthrough
   action was triggered when I right clicked on a single cell…which is what I intended.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
   &lt;o:p&gt;
      &lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;font color=#000000&gt;Another major
   flaw with this method was passing a SQL statement via the URL to Reporting Services.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This
   left a big security hole where the SQL in the query string could be manipulated.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Obviously,
   there are ways around this but the more I thought about this solution, the more I
   disliked it.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
   &lt;o:p&gt;
      &lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;font color=#000000&gt;Needless to
   say, I’m going to pass on creating the SQL statement from within the Analysis Services
   stored procedure.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;My new plan involves
   two stored procedures, one in Analysis Services and one in SQL Server.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
   figure if I can pass the current members to Reporting Services, then I can call a
   custom assembly in SQL Server that will query AMO and get the metadata for the current
   members. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;After I get this metadata, I
   can construct a SQL statement in my SQL Server assembly, execute the statement, and
   then return the records. 
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;
   &lt;o:p&gt;
      &lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;font color=#000000&gt;I’m still
   pinched on time, but will post my results as soon as I get them completed. 
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.mrachek.com/aggbug.ashx?id=7a56867b-1101-471d-9e4d-9a80c51c6331" /&gt;</description>
      <comments>http://www.mrachek.com/CommentView,guid,7a56867b-1101-471d-9e4d-9a80c51c6331.aspx</comments>
      <category>Analysis Services</category>
    </item>
    <item>
      <trackback:ping>http://www.mrachek.com/Trackback.aspx?guid=7cb06281-9394-438b-b2aa-8996106ee481</trackback:ping>
      <pingback:server>http://www.mrachek.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.mrachek.com/PermaLink,guid,7cb06281-9394-438b-b2aa-8996106ee481.aspx</pingback:target>
      <dc:creator>webmaster@mrachek.com (Mark Mrachek)</dc:creator>
      <wfw:comment>http://www.mrachek.com/CommentView,guid,7cb06281-9394-438b-b2aa-8996106ee481.aspx</wfw:comment>
      <wfw:commentRss>http://www.mrachek.com/SyndicationService.asmx/GetEntryCommentsRss?guid=7cb06281-9394-438b-b2aa-8996106ee481</wfw:commentRss>
      <title>Drillthrough on Dimensions with ROLAP storage mode</title>
      <guid>http://www.mrachek.com/PermaLink,guid,7cb06281-9394-438b-b2aa-8996106ee481.aspx</guid>
      <link>http://www.mrachek.com/PermaLink,guid,7cb06281-9394-438b-b2aa-8996106ee481.aspx</link>
      <pubDate>Wed, 19 Apr 2006 14:51:11 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;font face=Tahoma color=#000000&gt;Recently,
   I was setting up drillthrough on a degenerate dimension with ROLAP storage.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
   encountered the error below when executing the drillthrough action.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;font face=Tahoma color=#000000&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;img alt="" hspace=0 src="http://www.mrachek.com/images/DrillError.jpg" align=baseline border=0&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;font face=Tahoma color=#000000&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;font face=Tahoma color=#000000&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /&gt;
   &lt;v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"&gt;
      &lt;font face=Tahoma&gt;&lt;/font&gt;
   &lt;/v:shapetype&gt;
   &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt; 
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;font face=Tahoma&gt;Using SQL Server
   profiler, I was able to locate the cause of the issue.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;Looking
   at the trace, I noticed that the ‘IntegerData’ trace field was failing at row 310,000
   so I looked at server properties to see which ROLAP related properties were set to
   300,000.&amp;nbsp; 
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;
   &lt;o:p&gt;
      &lt;font face=Tahoma&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;font face=Tahoma&gt;The culprit turned
   out to be ‘ROLAPDimensionProcessingEffort’ which was set to 300,000.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;So,
   as a test, I set the property to 2,000,000 (a number higher than the number of members
   in my degenerate dimension) and this resolved the error.&amp;nbsp; 
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;
   &lt;o:p&gt;
      &lt;font face=Tahoma&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;font face=Tahoma&gt;Although changing
   this property resolved the error, the cost of using the ROLAP storage for this dimension
   turned out to be quite expensive.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;My
   greatest concern was that a huge number of dimension members were being queried and
   cached when I was essentially targeting only 30 records for drillthrough.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;
   &lt;o:p&gt;
      &lt;font face=Tahoma&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;font face=Tahoma&gt;I had posted this
   problem to an internal message board at Microsoft and was informed that “…client applications
   may mistakenly try to fetch more data than they really wanted to from ROLAP dimensions…”.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;This
   is why the ‘ROLAPDimensionProcessingEffort’ property exists. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;
   &lt;o:p&gt;
      &lt;font face=Tahoma&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;font face=Tahoma&gt;Needless to say,
   I’m not impressed with ROLAP dimensions and this one more reason to avoid using them
   if you can.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font face=Tahoma&gt;&lt;/font&gt;
&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font face=Tahoma&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&amp;nbsp;
&lt;/p&gt;
&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&gt;&gt;&gt;&lt;img width="0" height="0" src="http://www.mrachek.com/aggbug.ashx?id=7cb06281-9394-438b-b2aa-8996106ee481" /&gt;</description>
      <comments>http://www.mrachek.com/CommentView,guid,7cb06281-9394-438b-b2aa-8996106ee481.aspx</comments>
      <category>Analysis Services</category>
    </item>
    <item>
      <trackback:ping>http://www.mrachek.com/Trackback.aspx?guid=c913d82f-1006-49dd-9253-98b478ef8959</trackback:ping>
      <pingback:server>http://www.mrachek.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.mrachek.com/PermaLink,guid,c913d82f-1006-49dd-9253-98b478ef8959.aspx</pingback:target>
      <dc:creator>webmaster@mrachek.com (Mark Mrachek)</dc:creator>
      <wfw:comment>http://www.mrachek.com/CommentView,guid,c913d82f-1006-49dd-9253-98b478ef8959.aspx</wfw:comment>
      <wfw:commentRss>http://www.mrachek.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c913d82f-1006-49dd-9253-98b478ef8959</wfw:commentRss>
      <title>User Defined Functions (UDFs) in Analysis Services 2005</title>
      <guid>http://www.mrachek.com/PermaLink,guid,c913d82f-1006-49dd-9253-98b478ef8959.aspx</guid>
      <link>http://www.mrachek.com/PermaLink,guid,c913d82f-1006-49dd-9253-98b478ef8959.aspx</link>
      <pubDate>Sat, 11 Feb 2006 08:51:43 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font color=#000000&gt;I’ve found myself working with UDF’s more and more lately and
   thought it would make a good blog topic. So, if you are interested in creating a UDF
   to use in your MDX, read on.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
   &lt;o:p&gt;
      &lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font color=#000000&gt;I’m using the Adventure Works database which is the sample database
   Analysis Services 2005.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If you have not
   yet created the Adventure Works database, you can get the source files and installation
   instructions&amp;nbsp;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E719ECF7-9F46-4312-AF89-6AD8702E4E6E&amp;amp;displaylang=en"&gt;here&lt;/a&gt;.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;o:p&gt;
      &lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font color=#000000&gt;First, create a class library in Visual Studio.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;o:p&gt;
      &lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font color=#000000&gt;Here is a very basic sample of a C# class library I created:&lt;/font&gt;
&lt;/p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt; 
&lt;p&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; System;&lt;br&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; System.Text;&lt;br&gt;
   &lt;br&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;namespace&lt;/span&gt; AWLib&lt;br&gt;
   {&lt;br&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/span&gt; Utilities&lt;br&gt;
   {&lt;br&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; GetSomeSet(){&lt;br&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/span&gt; sec &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; DateTime.Now.TimeOfDay.Milliseconds;&lt;br&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; set;&lt;br&gt;
   &lt;br&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/span&gt; (sec
   &amp;lt; 200) {&lt;br&gt;
   set &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"[Date].[Fiscal].Children"&lt;/span&gt;;&lt;br&gt;
   }&lt;br&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;else&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/span&gt; (sec
   &amp;lt; 400) 
   &lt;br&gt;
   {&lt;br&gt;
   set &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"[Reseller].[Reseller
   Type].Children"&lt;/span&gt;;&lt;br&gt;
   } 
   &lt;br&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;else&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/span&gt; (sec
   &amp;lt; 600) 
   &lt;br&gt;
   {&lt;br&gt;
   set &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"[Employee].[Employees].Children"&lt;/span&gt;;&lt;br&gt;
   }&lt;br&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;else&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/span&gt; (sec
   &amp;lt; 800)&lt;br&gt;
   {&lt;br&gt;
   set &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"[Geography].[Geography].Children"&lt;/span&gt;;&lt;br&gt;
   }&lt;br&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;else&lt;/span&gt; {&lt;br&gt;
   set &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"[Sales
   Channel].[Sales Channel].Children"&lt;/span&gt;;&lt;br&gt;
   }&lt;br&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;return&lt;/span&gt; set;&lt;br&gt;
   }&lt;br&gt;
   &lt;br&gt;
   }&lt;br&gt;
   }&lt;br&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font face=Verdana size=2&gt;Next, after you have successfully compiled your class library,
   you need to add it to the Adventure Works database.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You
   do this by:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .75in"&gt;
   &lt;font face=Verdana&gt;&lt;font size=2&gt;&lt;span style="mso-list: Ignore"&gt;1)&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Opening
   SQL Server Management Studio&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .75in"&gt;
   &lt;font face=Verdana&gt;&lt;font size=2&gt;&lt;span style="mso-list: Ignore"&gt;2)&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Right
   click on the ‘Assemblies’ folder in the Adventure Works database, then click on ‘New
   Assembly…’&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;o:p&gt;
      &lt;font face=Verdana size=2&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font face=Verdana size=2&gt;Note: You can also add your class library to the server
   assemblies so the UDF’s will be available in all databases on your Analysis Services
   instance.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Also, you can add your assembly
   to your ‘Business Intelligence Development Studio’ project and deploy your assembly
   along with your database.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;font face=Verdana size=2&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;font face=Verdana size=2&gt;To
   test the UDF (from above), open a ‘New Query’ window in SQL Server Management Studio,
   select the Adventure Works database and execute the following MDX.&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;font face=Verdana size=2&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt; 
&lt;p&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;SELECT&lt;/span&gt; Measures.Members &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ON&lt;/span&gt; 0,&lt;br&gt;
   &lt;font color=#a52a2a&gt;STRTOSET&lt;/font&gt;(AWLib.GetSomeSet()) &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ON&lt;/span&gt; 1&lt;br&gt;
   &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;FROM&lt;/span&gt; [Adventure
   Works]&lt;/span&gt;
&lt;/p&gt;
&lt;/span&gt; 
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font face=Verdana&gt;&lt;font size=2&gt;The AWLib.GetSomeSet() function will return different
   sets based on the milliseconds from the timestamp on your server.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;o:p&gt;
      &lt;font face=Verdana size=2&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font face=Verdana size=2&gt;UDF’s are very powerful and flexible and help to extend
   the functionality of MDX.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Here are just
   a few examples of how you can use UDF’s 1) implementing dynamic security in Analysis
   Services, 2) dynamically building sets and tuples, and 3) creating complex mathematical
   calculations.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;br&gt;
&lt;/p&gt;
&lt;/span&gt;&lt;img width="0" height="0" src="http://www.mrachek.com/aggbug.ashx?id=c913d82f-1006-49dd-9253-98b478ef8959" /&gt;</description>
      <comments>http://www.mrachek.com/CommentView,guid,c913d82f-1006-49dd-9253-98b478ef8959.aspx</comments>
      <category>Analysis Services</category>
    </item>
    <item>
      <trackback:ping>http://www.mrachek.com/Trackback.aspx?guid=492b5c79-9436-4426-9405-b192d933f6f2</trackback:ping>
      <pingback:server>http://www.mrachek.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.mrachek.com/PermaLink,guid,492b5c79-9436-4426-9405-b192d933f6f2.aspx</pingback:target>
      <dc:creator>webmaster@mrachek.com (Mark Mrachek)</dc:creator>
      <wfw:comment>http://www.mrachek.com/CommentView,guid,492b5c79-9436-4426-9405-b192d933f6f2.aspx</wfw:comment>
      <wfw:commentRss>http://www.mrachek.com/SyndicationService.asmx/GetEntryCommentsRss?guid=492b5c79-9436-4426-9405-b192d933f6f2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <font face="Tahoma" size="2"> I ran into this error the other day when attempting
   to design aggregations for a cube using the AS 2005 Aggregation Design Wizard. 
   The full error was: "Clr Assembly must have main file specified. To restart the process,
   resolve the problem and then click Start." 
   <br /><br />
   I was able to able to resolve this error by:    
   <br />
       1) Stopping the services of AS where your database resides<br />
       2) Renaming the data directory for Analysis Services Databases. 
   <br />
           Default location: C:\Program Files\Microsoft
   SQL Server\MSSQL.2\OLAP\Data  (rename the 'Data' folder to 'Data_OLD')<br />
           Note: MSSQL.2 is the location for the AS files
   on *my* server.  You're AS folder may be named MSSQL.1 or MSSQL.3 or whatever.<br />
                   Also note,
   when you rename this folder, all existing databases that resided in your instance
   of AS are now unavailable.  You will need to re-deploy all of your databases
   to this server (if applicable).<br />
       3) Create a new folder in the 'C:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\'
   directory called 'Data' (basically replacing the original 'Data' folder you renamed
   in Step 2 with a new "empty" folder)<br />
       4) Start the AS Services on your server<br />
       5) Deploy your Analysis Services Project to the server<br />
       6) Create your aggregations.<br /><br />
   This error has nothing to do with your database objects but everything to do with
   internal AS files.  Why or how this occurs is beyond me, but some AS files must
   be corrupt which causes this error.<br /></font>
        <img width="0" height="0" src="http://www.mrachek.com/aggbug.ashx?id=492b5c79-9436-4426-9405-b192d933f6f2" />
      </body>
      <title>Clr Assembly must have main file specified.</title>
      <guid>http://www.mrachek.com/PermaLink,guid,492b5c79-9436-4426-9405-b192d933f6f2.aspx</guid>
      <link>http://www.mrachek.com/PermaLink,guid,492b5c79-9436-4426-9405-b192d933f6f2.aspx</link>
      <pubDate>Sat, 04 Feb 2006 19:30:08 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;font face="Tahoma" size="2"&gt; I ran into this error the other day when attempting
to design aggregations for a cube using the AS 2005 Aggregation Design Wizard.&amp;nbsp;
The full error was: "Clr Assembly must have main file specified. To restart the process,
resolve the problem and then click Start." 
&lt;br&gt;
&lt;br&gt;
I was able to able to resolve this error by:&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 1) Stopping the services of AS where your database resides&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2) Renaming the data directory for Analysis Services Databases. 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Default location: C:\Program Files\Microsoft
SQL Server\MSSQL.2\OLAP\Data&amp;nbsp; (rename the 'Data' folder to 'Data_OLD')&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Note: MSSQL.2 is the location for the AS files
on *my* server.&amp;nbsp; You're AS folder may be named MSSQL.1 or MSSQL.3 or whatever.&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Also note,
when you rename this folder, all existing databases that resided in your instance
of AS are now unavailable.&amp;nbsp; You will need to re-deploy all of your databases
to this server (if applicable).&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 3) Create a new folder in the 'C:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\'
directory called 'Data' (basically replacing the original 'Data' folder you renamed
in Step 2 with a new "empty" folder)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 4) Start the AS Services on your server&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 5) Deploy your Analysis Services Project to the server&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 6) Create your aggregations.&lt;br&gt;
&lt;br&gt;
This error has nothing to do with your database objects but everything to do with
internal AS files.&amp;nbsp; Why or how this occurs is beyond me, but some AS files must
be corrupt which causes this error.&lt;br&gt;
&lt;/font&gt; &lt;img width="0" height="0" src="http://www.mrachek.com/aggbug.ashx?id=492b5c79-9436-4426-9405-b192d933f6f2" /&gt;</description>
      <comments>http://www.mrachek.com/CommentView,guid,492b5c79-9436-4426-9405-b192d933f6f2.aspx</comments>
      <category>Analysis Services</category>
    </item>
    <item>
      <trackback:ping>http://www.mrachek.com/Trackback.aspx?guid=03d2bee8-3288-4e5c-8793-a7bb47f2f073</trackback:ping>
      <pingback:server>http://www.mrachek.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.mrachek.com/PermaLink,guid,03d2bee8-3288-4e5c-8793-a7bb47f2f073.aspx</pingback:target>
      <dc:creator>webmaster@mrachek.com (Mark Mrachek)</dc:creator>
      <wfw:comment>http://www.mrachek.com/CommentView,guid,03d2bee8-3288-4e5c-8793-a7bb47f2f073.aspx</wfw:comment>
      <wfw:commentRss>http://www.mrachek.com/SyndicationService.asmx/GetEntryCommentsRss?guid=03d2bee8-3288-4e5c-8793-a7bb47f2f073</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <font face="Verdana" size="2">I’ve written thousands of lines of MDX code over the
   years to support web reporting applications and today I discovered something new. 
   Although it probably isn’t new to MDX, it was new to me because I never needed it
   until today.  I was targeting the ascendants of a member and based on the parent
   of the member, I needed to alter the slice of the cube.<br /><br />
   Typically, when I use conditional statements, I create calculated member and handle
   the logic in the WITH statement.  Today’s challenge was different because I was
   not able to control what calculated members are passed from Panorama to Analysis Services. 
   Instead, I needed to work through the ‘WHERE’ clause to slice my data.  <br /><br />
   Anyways, I don’t know if I’ll ever need to use it in the future, but it’s nice to
   know that this functionality exists.  Below is a sample MDX statement that uses
   a conditional statement in the ‘WHERE’ clause.  This sample provides little value
   except to illustrate that you can indeed use conditional statements in ‘WHERE’ clauses.<br /><br />
   SELECT [Measures].[Internet Total Product Cost] ON 0,<br />
   [Sales Reason].[Sales Reasons].Members ON 1<br />
   FROM [Adventure Works]<br />
   WHERE (IIF([Sales Territory].[Sales Territory].[Sales Territory Country].[Australia].Parent.Name
   = “Pacific”, [Sales Territory].[Sales Territory], [Sales Territory].[Sales Territory].[Sales
   Territory Country].[Australia]))<br /></font>
        <br />
        <img width="0" height="0" src="http://www.mrachek.com/aggbug.ashx?id=03d2bee8-3288-4e5c-8793-a7bb47f2f073" />
      </body>
      <title>Conditional Statements in the MDX WHERE Clause</title>
      <guid>http://www.mrachek.com/PermaLink,guid,03d2bee8-3288-4e5c-8793-a7bb47f2f073.aspx</guid>
      <link>http://www.mrachek.com/PermaLink,guid,03d2bee8-3288-4e5c-8793-a7bb47f2f073.aspx</link>
      <pubDate>Thu, 26 Jan 2006 06:46:50 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;font face=Verdana size=2&gt;I’ve written thousands of lines of MDX code over the years
to support web reporting applications and today I discovered something new.&amp;nbsp;
Although it probably isn’t new to MDX, it was new to me because I never needed it
until today.&amp;nbsp; I was targeting the ascendants of a member and based on the parent
of the member, I needed to alter the slice of the cube.&lt;br&gt;
&lt;br&gt;
Typically, when I use conditional statements, I create calculated member and handle
the logic in the WITH statement.&amp;nbsp; Today’s challenge was different because I was
not able to control what calculated members are passed from Panorama to Analysis Services.&amp;nbsp;
Instead, I needed to work through the ‘WHERE’ clause to slice my data. &amp;nbsp;&lt;br&gt;
&lt;br&gt;
Anyways, I don’t know if I’ll ever need to use it in the future, but it’s nice to
know that this functionality exists.&amp;nbsp; Below is a sample MDX statement that uses
a conditional statement in the ‘WHERE’ clause.&amp;nbsp; This sample provides little value
except to illustrate that you can indeed use conditional statements in ‘WHERE’ clauses.&lt;br&gt;
&lt;br&gt;
SELECT [Measures].[Internet Total Product Cost] ON 0,&lt;br&gt;
[Sales Reason].[Sales Reasons].Members ON 1&lt;br&gt;
FROM [Adventure Works]&lt;br&gt;
WHERE (IIF([Sales Territory].[Sales Territory].[Sales Territory Country].[Australia].Parent.Name
= “Pacific”, [Sales Territory].[Sales Territory], [Sales Territory].[Sales Territory].[Sales
Territory Country].[Australia]))&lt;br&gt;
&lt;/font&gt;
&lt;br&gt;
&lt;img width="0" height="0" src="http://www.mrachek.com/aggbug.ashx?id=03d2bee8-3288-4e5c-8793-a7bb47f2f073" /&gt;</description>
      <comments>http://www.mrachek.com/CommentView,guid,03d2bee8-3288-4e5c-8793-a7bb47f2f073.aspx</comments>
      <category>Analysis Services;Analysis Services/MDX</category>
    </item>
    <item>
      <trackback:ping>http://www.mrachek.com/Trackback.aspx?guid=08aee106-7014-4f98-9fca-503656003f7d</trackback:ping>
      <pingback:server>http://www.mrachek.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.mrachek.com/PermaLink,guid,08aee106-7014-4f98-9fca-503656003f7d.aspx</pingback:target>
      <dc:creator>webmaster@mrachek.com (Mark Mrachek)</dc:creator>
      <wfw:comment>http://www.mrachek.com/CommentView,guid,08aee106-7014-4f98-9fca-503656003f7d.aspx</wfw:comment>
      <wfw:commentRss>http://www.mrachek.com/SyndicationService.asmx/GetEntryCommentsRss?guid=08aee106-7014-4f98-9fca-503656003f7d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Named calculations are basically customized columns (or attributes) that you create
      in data source views in Analysis Services.  The beauty of the named calculation
      is that you don't have to make changes to your source tables or views.  Instead
      you create a SQL statement, such as a case statement, to build an attribute locally
      within your data source view.  
   </p>
        <p>
      I've used named calculations to concatenate values in two separate columns and I've
      also used them to create groupings for some dimensions.  
   </p>
        <p>
      Here is an example: Let's say that you need to create names for products where
      the id for the product exists in a dimension table, but the product names do not exist. 
      For instance, your underlying table or view has a ProductID column (with values 1,2,3)
      and you want to use a product name instead of an id in your dimension.  What we
      want to do is create a named calculation called ProductName.  
   </p>
        <p>
      You simply open your data source view in the 'Business Intelligence Development Studio';
      right click on the supporting table or view, then click on 'Add Named Calculation'. 
      A window opens with two textboxes, one is for the name of your named calculation
      (Product Name), and the other is where you add your SQL Expression.  You
      can create the named calculation with the following expression:
   </p>
        <p>
          <span style="font-size: 11px; color: black; font-family: Courier New; background-color: transparent;">
            <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent;">CASE</span> ProductID<br /><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">WHEN</span> 1 <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">THEN</span><span style="font-size: 11px; color: red; font-family: Courier New; background-color: transparent;">'Product
      A'</span><br /><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">WHEN</span> 2 <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">THEN</span><span style="font-size: 11px; color: red; font-family: Courier New; background-color: transparent;">'Product
      B'</span><br /><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">WHEN</span> 3 <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">THEN</span><span style="font-size: 11px; color: red; font-family: Courier New; background-color: transparent;">'Product
      C'</span><br /><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">ELSE</span><span style="font-size: 11px; color: red; font-family: Courier New; background-color: transparent;">'Unknown'</span><br /><span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;">END</span></span>
          <span style="font-size: 11px; color: black; font-family: Courier New; background-color: transparent;">
            <br />
          </span>
        </p>
        <p>
      You can now add the ProductName named calculation as an attribute to your dimension
      in the 'Dimension Designer' (on the 'Dimension Structure' tab).  Click on the
      name of the named calculation (ProductName) in 'Data Source View' pane and drag
      it to the 'Attributes' pane.
   </p>
        <p>
      That's it.  You've now created a customized attribute.  Obviously, you could
      have added the name of the product to the dimension table or view itself, but this
      example illustrates what is possible with named calculations.
   </p>
        <p>
       
   </p>
        <img width="0" height="0" src="http://www.mrachek.com/aggbug.ashx?id=08aee106-7014-4f98-9fca-503656003f7d" />
      </body>
      <title>Named Calculations</title>
      <guid>http://www.mrachek.com/PermaLink,guid,08aee106-7014-4f98-9fca-503656003f7d.aspx</guid>
      <link>http://www.mrachek.com/PermaLink,guid,08aee106-7014-4f98-9fca-503656003f7d.aspx</link>
      <pubDate>Sun, 08 Jan 2006 07:52:56 GMT</pubDate>
      <description>&lt;p&gt;
   Named calculations are basically customized columns (or attributes) that you create
   in data source views in Analysis Services.&amp;nbsp; The beauty of the named calculation
   is that you don't have to make changes to your source tables or views.&amp;nbsp; Instead
   you create a SQL statement, such as a case statement, to build an attribute locally
   within your data source view.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   I've used named calculations to concatenate values in two separate columns and I've
   also used them to create groupings for some dimensions.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   Here is an example: Let's say that you need to create names&amp;nbsp;for products where
   the id for the product exists in a dimension table, but the product names do not exist.&amp;nbsp;
   For instance, your underlying table or view has a ProductID column (with values&amp;nbsp;1,2,3)
   and you want to use a product name instead of an id in your dimension.&amp;nbsp; What&amp;nbsp;we
   want to do is create a&amp;nbsp;named&amp;nbsp;calculation called ProductName.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   You simply open your data source view in the 'Business Intelligence Development Studio';
   right click on the supporting table or view, then click on 'Add Named Calculation'.&amp;nbsp;
   A window opens with&amp;nbsp;two&amp;nbsp;textboxes, one is for the name of your named calculation
   (Product Name), and the other&amp;nbsp;is where you add your SQL Expression.&amp;nbsp; You
   can create the named calculation with the following expression:
&lt;/p&gt;
&lt;p&gt;
   &lt;span style="font-size: 11px; color: black; font-family: Courier New; background-color: transparent;"&gt;&lt;span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent;"&gt;CASE&lt;/span&gt; ProductID&lt;br&gt;
   &lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;WHEN&lt;/span&gt; 1 &lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;THEN&lt;/span&gt; &lt;span style="font-size: 11px; color: red; font-family: Courier New; background-color: transparent;"&gt;'Product
   A'&lt;/span&gt;
   &lt;br&gt;
   &lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;WHEN&lt;/span&gt; 2 &lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;THEN&lt;/span&gt; &lt;span style="font-size: 11px; color: red; font-family: Courier New; background-color: transparent;"&gt;'Product
   B'&lt;/span&gt;
   &lt;br&gt;
   &lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;WHEN&lt;/span&gt; 3 &lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;THEN&lt;/span&gt; &lt;span style="font-size: 11px; color: red; font-family: Courier New; background-color: transparent;"&gt;'Product
   C'&lt;/span&gt;
   &lt;br&gt;
   &lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;ELSE&lt;/span&gt; &lt;span style="font-size: 11px; color: red; font-family: Courier New; background-color: transparent;"&gt;'Unknown'&lt;/span&gt;
   &lt;br&gt;
   &lt;span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent;"&gt;END&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: 11px; color: black; font-family: Courier New; background-color: transparent;"&gt;
   &lt;br&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
   You can now add the ProductName named calculation as an attribute&amp;nbsp;to your dimension
   in the 'Dimension Designer' (on the 'Dimension Structure' tab).&amp;nbsp; Click on the
   name of the named calculation (ProductName)&amp;nbsp;in 'Data Source View' pane and drag
   it to the 'Attributes' pane.
&lt;/p&gt;
&lt;p&gt;
   That's it.&amp;nbsp; You've now created a customized attribute.&amp;nbsp; Obviously, you could
   have added the name of the product to the dimension table or view itself, but this
   example illustrates what is possible with named calculations.
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.mrachek.com/aggbug.ashx?id=08aee106-7014-4f98-9fca-503656003f7d" /&gt;</description>
      <comments>http://www.mrachek.com/CommentView,guid,08aee106-7014-4f98-9fca-503656003f7d.aspx</comments>
      <category>Analysis Services</category>
    </item>
    <item>
      <trackback:ping>http://www.mrachek.com/Trackback.aspx?guid=6523ff69-eb01-4618-a002-c5138782c1e0</trackback:ping>
      <pingback:server>http://www.mrachek.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.mrachek.com/PermaLink,guid,6523ff69-eb01-4618-a002-c5138782c1e0.aspx</pingback:target>
      <dc:creator>webmaster@mrachek.com (Mark Mrachek)</dc:creator>
      <wfw:comment>http://www.mrachek.com/CommentView,guid,6523ff69-eb01-4618-a002-c5138782c1e0.aspx</wfw:comment>
      <wfw:commentRss>http://www.mrachek.com/SyndicationService.asmx/GetEntryCommentsRss?guid=6523ff69-eb01-4618-a002-c5138782c1e0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I have to say one of the best tools that
   I've worked with thus far in Analysis Services 2005 is SQL Server Profiler.  
   <br /><br />
   Although Profiler is not new to SQL Server, it is new to Analysis Services and provides
   developers and DBAs with tons of useful information.  It is very simple to set
   up a trace and see which users are connected to AS and what MDX queries they are sending
   to the instance of AS.<br /><br />
   Yesterday, a developer and I were trying to resolve an issue we were having involving
   Panorama NovaView passing incorrect slicer parameters to AS.  We were able to
   create a trace and show the MDX that was being passed by Panorama to AS and discovered
   that AS was indeed getting the incorrect MDX due to an error in a Panorama class library. 
   This saved a ton of time tracking down where the problem was occurring.<img width="0" height="0" src="http://www.mrachek.com/aggbug.ashx?id=6523ff69-eb01-4618-a002-c5138782c1e0" /></body>
      <title>SQL Server 2005 Profiler for Analysis Services</title>
      <guid>http://www.mrachek.com/PermaLink,guid,6523ff69-eb01-4618-a002-c5138782c1e0.aspx</guid>
      <link>http://www.mrachek.com/PermaLink,guid,6523ff69-eb01-4618-a002-c5138782c1e0.aspx</link>
      <pubDate>Fri, 06 Jan 2006 03:50:42 GMT</pubDate>
      <description>I have to say one of the best tools that I've worked with thus far in Analysis Services 2005 is SQL Server Profiler.&amp;nbsp; &lt;br&gt;
&lt;br&gt;
Although Profiler is not new to SQL Server, it is new to Analysis Services and provides
developers and DBAs with tons of useful information.&amp;nbsp; It is very simple to set
up a trace and see which users are connected to AS and what MDX queries they are sending
to the instance of AS.&lt;br&gt;
&lt;br&gt;
Yesterday, a developer and I were trying to resolve an issue we were having involving
Panorama NovaView passing incorrect slicer parameters to AS.&amp;nbsp; We were able to
create a trace and show the MDX that was being passed by Panorama to AS and discovered
that AS was indeed getting the incorrect MDX due to an error in a Panorama class library.&amp;nbsp;
This saved a ton of time tracking down where the problem was occurring.&lt;img width="0" height="0" src="http://www.mrachek.com/aggbug.ashx?id=6523ff69-eb01-4618-a002-c5138782c1e0" /&gt;</description>
      <comments>http://www.mrachek.com/CommentView,guid,6523ff69-eb01-4618-a002-c5138782c1e0.aspx</comments>
      <category>Analysis Services</category>
    </item>
    <item>
      <trackback:ping>http://www.mrachek.com/Trackback.aspx?guid=4fa90bd3-ea9e-409c-bdd1-c6d629326fd7</trackback:ping>
      <pingback:server>http://www.mrachek.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.mrachek.com/PermaLink,guid,4fa90bd3-ea9e-409c-bdd1-c6d629326fd7.aspx</pingback:target>
      <dc:creator>webmaster@mrachek.com (Mark Mrachek)</dc:creator>
      <wfw:comment>http://www.mrachek.com/CommentView,guid,4fa90bd3-ea9e-409c-bdd1-c6d629326fd7.aspx</wfw:comment>
      <wfw:commentRss>http://www.mrachek.com/SyndicationService.asmx/GetEntryCommentsRss?guid=4fa90bd3-ea9e-409c-bdd1-c6d629326fd7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
   I've been developing reporting solutions with Micosoft Analysis Services (originally
   called MS OLAP Services) since it first shipped with SQL Server 7.0.  For the
   last two months I've been working on a contract at Microsoft using SQL Server Analysis
   Services 2005 and must admit I'm highly impressed with the product.<br /><br />
   There are many improvements to the newest version of Analysis Services.  From
   an application interface point of view, I'd have to say that the integration with
   the Visual Studio 2005 environment was a great move.  A standardized interface
   for all of the SQL Server components (Database Engine, Analysis Services, Integration
   Services, Notification Services, and Reporting Services) is pretty nice.  I like
   being able to run queries against multiple databases as well as cubes within the same
   window.  
   <br /><br /><img width="0" height="0" src="http://www.mrachek.com/aggbug.ashx?id=4fa90bd3-ea9e-409c-bdd1-c6d629326fd7" /></body>
      <title>Analysis Services 2005</title>
      <guid>http://www.mrachek.com/PermaLink,guid,4fa90bd3-ea9e-409c-bdd1-c6d629326fd7.aspx</guid>
      <link>http://www.mrachek.com/PermaLink,guid,4fa90bd3-ea9e-409c-bdd1-c6d629326fd7.aspx</link>
      <pubDate>Wed, 04 Jan 2006 03:13:31 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
I've been developing reporting solutions with Micosoft Analysis Services (originally
called MS OLAP Services) since it first shipped with SQL Server 7.0.&amp;nbsp; For the
last two months I've been working on a contract at Microsoft using SQL Server Analysis
Services 2005 and must admit I'm highly impressed with the product.&lt;br&gt;
&lt;br&gt;
There are many improvements to the newest version of Analysis Services.&amp;nbsp; From
an application interface point of view, I'd have to say that the integration with
the Visual Studio 2005 environment was a great move.&amp;nbsp; A standardized interface
for all of the SQL Server components (Database Engine, Analysis Services, Integration
Services, Notification Services, and Reporting Services) is pretty nice.&amp;nbsp; I like
being able to run queries against multiple databases as well as cubes within the same
window.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
&lt;img width="0" height="0" src="http://www.mrachek.com/aggbug.ashx?id=4fa90bd3-ea9e-409c-bdd1-c6d629326fd7" /&gt;</description>
      <comments>http://www.mrachek.com/CommentView,guid,4fa90bd3-ea9e-409c-bdd1-c6d629326fd7.aspx</comments>
      <category>Analysis Services</category>
    </item>
    <item>
      <trackback:ping>http://www.mrachek.com/Trackback.aspx?guid=1ad0606b-fefd-4e2f-a728-62b2ceace0e2</trackback:ping>
      <pingback:server>http://www.mrachek.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.mrachek.com/PermaLink,guid,1ad0606b-fefd-4e2f-a728-62b2ceace0e2.aspx</pingback:target>
      <dc:creator>webmaster@mrachek.com (Mark Mrachek)</dc:creator>
      <wfw:comment>http://www.mrachek.com/CommentView,guid,1ad0606b-fefd-4e2f-a728-62b2ceace0e2.aspx</wfw:comment>
      <wfw:commentRss>http://www.mrachek.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1ad0606b-fefd-4e2f-a728-62b2ceace0e2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Business Intelligence (BI) is a term used to describe software technologies and the
      management of data to help decision makers make better decisions.  When people
      ask me what BI is, I tell them its the process of turning raw data into usable information.
      Through the use of statistical analysis, forecasting, data-mining, and simple reporting,
      this usable information translates into knowledge for end users.  BI applications
      are sometimes referred to as Decision Support or OLAP (On-line Analytical Processing)
      systems. 
      <br /></p>
        <p>
      I've been designing and developing BI software applications through my own company, <a href="http://www.dymetrics.com/">dymetrics,
      inc.</a>, for the last six years.  My experience includes the development of
      data warehouses/marts, multi-dimensional databases, and user interfaces for displaying
      reports and querying data. 
   </p>
        <p>
      I use both Oracle and SQL Server for data warehouse/mart development, Microsoft SQL
      Server Analysis Services for OLAP development, and ASP.Net for front-end development. 
      If you are in need of a consultant to help you with your Business Intelligence intiative,
      feel free to email me using the link in the navigation bar to the left.<br /></p>
        <br />
        <img width="0" height="0" src="http://www.mrachek.com/aggbug.ashx?id=1ad0606b-fefd-4e2f-a728-62b2ceace0e2" />
      </body>
      <title>What is Business Intelligence?</title>
      <guid>http://www.mrachek.com/PermaLink,guid,1ad0606b-fefd-4e2f-a728-62b2ceace0e2.aspx</guid>
      <link>http://www.mrachek.com/PermaLink,guid,1ad0606b-fefd-4e2f-a728-62b2ceace0e2.aspx</link>
      <pubDate>Mon, 02 Jan 2006 04:07:41 GMT</pubDate>
      <description>&lt;p&gt;
   Business Intelligence (BI) is a term used to describe software technologies and the
   management of data to help decision makers make better decisions.&amp;nbsp; When people
   ask me what BI is, I tell them its the process of turning raw data into usable information.
   Through the use of statistical analysis, forecasting, data-mining, and simple reporting,
   this usable information translates into knowledge for end users.&amp;nbsp; BI applications
   are sometimes referred to as Decision Support or OLAP (On-line Analytical Processing)
   systems. 
   &lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
   I've been designing and developing BI software applications through my own company, &lt;a href="http://www.dymetrics.com/"&gt;dymetrics,
   inc.&lt;/a&gt;, for the last six years.&amp;nbsp; My experience includes the development of
   data warehouses/marts, multi-dimensional databases, and user interfaces for displaying
   reports and querying data. 
&lt;/p&gt;
&lt;p&gt;
   I use both Oracle and SQL Server for data warehouse/mart development, Microsoft SQL
   Server Analysis Services for OLAP development, and ASP.Net for front-end development.&amp;nbsp;
   If you are in need of a consultant to help you with your Business Intelligence intiative,
   feel free to email me using the link in the navigation bar to the left.&lt;br&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;img width="0" height="0" src="http://www.mrachek.com/aggbug.ashx?id=1ad0606b-fefd-4e2f-a728-62b2ceace0e2" /&gt;</description>
      <comments>http://www.mrachek.com/CommentView,guid,1ad0606b-fefd-4e2f-a728-62b2ceace0e2.aspx</comments>
      <category>Analysis Services</category>
    </item>
  </channel>
</rss>