<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:Verdana;
        color:windowtext;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:Verdana;
        color:blue;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:Verdana;
        color:blue;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:Verdana;
        color:blue;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:Verdana;
        color:blue;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>I think that the intent of this test was
for the AS2005 “SCOPE_ISOLATION=CUBE” MDX property testing. <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>Since Mondrian isn’t supporting
that property with this contribution, I didn’t spend the time figuring
out the problem with that test case. <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>It wasn’t working for either value
of SolveOrderMode.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'><o:p> </o:p></span></font></p>
<div>
<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
<hr size=2 width="100%" align=center tabindex=-1>
</span></font></div>
<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
mondrian-bounces@pentaho.org [mailto:mondrian-bounces@pentaho.org] <b><span
style='font-weight:bold'>On Behalf Of </span></b>Julian Hyde<br>
<b><span style='font-weight:bold'>Sent:</span></b> Thursday, May 22, 2008 3:57
PM<br>
<b><span style='font-weight:bold'>To:</span></b> 'Mondrian developer mailing
list'<br>
<b><span style='font-weight:bold'>Subject:</span></b> RE: [Mondrian] Calculated
Member SolveOrder&AggregateFunctionHandling </span></font><o:p></o:p></p>
</div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>Submitted as change 11099. Thanks for
the contribution, Timothy.</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>I made the default behavior scoped -
i.e. compatible with AS 2005, different than behavior in 3.0.3 and earlier. I
don't expect many applications to be affected, but the property mondrian.rolap.SolveOrderMode
exists if anyone needs backwards compatibility.</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>Timothy, Can you explain why
_testOverrideOverCubeMemberHappensWithScopeIsolation is still disabled?</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>Julian</span></font><o:p></o:p></p>
<blockquote style='border:none;border-left:solid navy 1.5pt;padding:0in 0in 0in 4.0pt;
margin-left:3.75pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt'>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>
<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
<hr size=2 width="100%" align=center tabIndex=-1>
</span></font></div>
<p class=MsoNormal style='margin-bottom:12.0pt'><b><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma;font-weight:bold'>From:</span></font></b><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
mondrian-bounces@pentaho.org [mailto:mondrian-bounces@pentaho.org] <b><span
style='font-weight:bold'>On Behalf Of </span></b>timothy.lambert@thomsonreuters.com<br>
<b><span style='font-weight:bold'>Sent:</span></b> Wednesday, May 21, 2008 8:57
AM<br>
<b><span style='font-weight:bold'>To:</span></b> mondrian@pentaho.org<br>
<b><span style='font-weight:bold'>Subject:</span></b> RE: [Mondrian] Calculated
Member Solve Order&AggregateFunctionHandling </span></font><o:p></o:p></p>
<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>See my comments below preceded with
“>>>”<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'><o:p> </o:p></span></font></p>
<div>
<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
<hr size=2 width="100%" align=center tabIndex=-1>
</span></font></div>
<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> mondrian-bounces@pentaho.org
[mailto:mondrian-bounces@pentaho.org] <b><span style='font-weight:bold'>On
Behalf Of </span></b>Julian Hyde<br>
<b><span style='font-weight:bold'>Sent:</span></b> Monday, May 19, 2008 8:39 PM<br>
<b><span style='font-weight:bold'>To:</span></b> 'Mondrian developer mailing
list'<br>
<b><span style='font-weight:bold'>Subject:</span></b> RE: [Mondrian] Calculated
Member Solve Order &AggregateFunctionHandling </span></font><o:p></o:p></p>
</div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>Timothy,</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>The change looks good, but you need to
tie up a few loose ends to be tied up before I can accept the contribution:</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>1. The unit test cases need some work. I
enabled the tests in SolveOrderScopeIsolationTest, and most worked if I
preceded them with a check that SolveOrderMode==scoped. But
testOverrideOverCubeMemberHappensWithScopeIsolation still gives errors; can't
figure out whether it's to do with case sensitivity.</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>>>> I think that the intent of
this test was for the AS2005 “SCOPE_ISOLATION=CUBE” MDX property testing.
Since Mondrian isn’t supporting that property with this contribution, I
didn’t spend the time figuring out the problem with this test case.
I left the test case in but preceded the method with an underscore to
prevent it from running.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>And, can you create some cases that test
the behavior when SolveOrderMode==absolute. This will be especially important
when scoped becomes the default behavior. Maybe make each test case into an 'if
... else' with alternative outputs.</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=blue face="Times New Roman"><span
style='font-size:12.0pt;color:blue'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>>>> I implemented your
suggestion of alternative output handling when run with ‘absolute’.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>2. The description of the property in
mondrian.properties and MondrianProperties.java needs a little more
information, because the average DBA would not know what SS2K behavior was (or
SS2K was, for that matter). The information in your email below would do just
fine.</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=blue face="Times New Roman"><span
style='font-size:12.0pt;color:blue'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>>>> Done.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>3. Please put the same property
information into configuration.html.</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>>>> Done.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>4. For future changes, please keep those
lines to 80 characters, and use <p> to delimit paragraphs in javadoc.</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>>>> Will do.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>See attached a new change list with my
modifications.</span></font><font size=2 face=Verdana><span style='font-size:
10.0pt;font-family:Verdana'><o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'>>>> Attached are my new changes
along with your additions.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>All,</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>Any opinions what should be the default
behavior? I'm inclined to think that mondrian should use scoped solve-order
(like Analysis Services 2005) by default.</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:navy'>Julian</span></font><o:p></o:p></p>
<blockquote style='border:none;border-left:solid navy 1.5pt;padding:0in 0in 0in 4.0pt;
margin-left:3.75pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt'>
<p class=MsoNormal><font size=2 color=blue face=Verdana><span style='font-size:
10.0pt;font-family:Verdana;color:blue'><o:p> </o:p></span></font></p>
<div>
<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
<hr size=2 width="100%" align=center tabIndex=-1>
</span></font></div>
<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
mondrian-bounces@pentaho.org [mailto:mondrian-bounces@pentaho.org] <b><span
style='font-weight:bold'>On Behalf Of </span></b>Lambert, Timothy<br>
<b><span style='font-weight:bold'>Sent:</span></b> Monday, May 12, 2008 3:05 PM<br>
<b><span style='font-weight:bold'>To:</span></b> mondrian@pentaho.org<br>
<b><span style='font-weight:bold'>Subject:</span></b> [Mondrian] Calculated
Member Solve Order & Aggregate FunctionHandling </span></font><o:p></o:p></p>
</div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>
<p class=MsoNormal><b><font size=3 face=Verdana><span style='font-size:12.0pt;
font-family:Verdana;font-weight:bold'>Calculated Member Solve Order &
Aggregate Function Handling <o:p></o:p></span></font></b></p>
<p class=MsoNormal><b><font size=3 face=Verdana><span style='font-size:12.0pt;
font-family:Verdana;font-weight:bold'>SSAS2005 vs. SSAS2000 vs. Mondrian<o:p></o:p></span></font></b></p>
<p class=MsoNormal><font size=2 face=Verdana><span style='font-size:10.0pt;
font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal><b><font size=3 face=Verdana><span style='font-size:12.0pt;
font-family:Verdana;font-weight:bold'>Background<o:p></o:p></span></font></b></p>
<p class=MsoNormal><font size=2 face=Verdana><span style='font-size:10.0pt;
font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>This proposal was seeded by the
R&D of others.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>Following are links to some of
that work…<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>http://forums.pentaho.org/showthread.php?t=60654<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>http://777eisenhower.blogspot.com/2008/03/analysis-services-2000-vs-2005.html<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><b><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;font-weight:bold'><o:p> </o:p></span></font></b></p>
<p class=MsoNormal style='margin-left:.5in'><b><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;font-weight:bold'>SOLVE_ORDER
Calculated Member Property<o:p></o:p></span></font></b></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>Definition: The order of evaluation
(from highest to lowest solve order) and calculation (from lowest to highest
solve order) for calculated members, custom members, custom rollup formulas,
and calculated cells in a single calculation pass of a multidimensional cube.
Solve order is used to determine formula precedence when calculating values for
cells in multidimensional cubes, but only within a single calculation pass.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>SSAS2000 Behavior: The
SOLVE_ORDER value is absolute regardless of where it is defined; e.g. a query
defined calculated member with a SOLVE_ORDER of 1 always takes precedence over
a cube defined value of 2.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>SSAS2005 Behavior: By
default, cube calculated members are resolved before any session scope
calculated members, and session scope members are resolved before any query
defined calculation. The SOLVE_ORDER value only applies within the scope
in which it was defined. <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>Achieving SSAS2000 Behavior on
SSAS2005: Using the SCOPE_ISOLATION=CUBE property in a query calculated
member definition will put the query defined member into cube scope. So
effectively solve_order is treated like an SSAS2000 absolute value since all
members are treated as if they were defined in the same scope.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><b><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;font-weight:bold'>Aggregate
Function<o:p></o:p></span></font></b></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>Definition: Returns a number
that is calculated by aggregating over the cells returned by the set
expression. <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>The Aggregation function is
designed to be used against base measures.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>SSAS2000 Behavior: The
SOLVE_ORDER value must be manually applied such that aggregate values are
solved before other related calculated members.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>SSAS2005 Behavior: The
aggregate function is always applied to base members; i.e. as if solve_order
was defined to be the lowest value in a given evaluation in a SSAS2000 sense.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><b><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;font-weight:bold'>Current Mondrian
Behavior<o:p></o:p></span></font></b></p>
<p class=MsoNormal style='margin-left:.5in'><b><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;font-weight:bold'><o:p> </o:p></span></font></b></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>In regard to solve_order and
Aggregate function handling, Mondrian behaves like SSAS2000.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>During the evaluation of a given
cell, if there are multiple calculated members in the evaluation context then
the member with the highest solve_order is evaluated. The other
calculated members with lower solve_order values stay within the evaluation
context, and are evaluated during the processing of the calculated member with
the higher solve_order.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'> <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>Through this recursive process,
the calculated members with lower solve_order values get calculated before
those with higher values.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal><b><font size=3 face=Verdana><span style='font-size:12.0pt;
font-family:Verdana;font-weight:bold'>Mondrian Issue<o:p></o:p></span></font></b></p>
<p class=MsoNormal><b><font size=2 face=Verdana><span style='font-size:10.0pt;
font-family:Verdana;font-weight:bold'><o:p> </o:p></span></font></b></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>For use with certain reporting
clients (e.g. Cognos), it is better for Mondrian to behave like SSAS2005 rather
than SSAS2000 in regard to solve order and aggregate function evaluation.
<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='mso-margin-top-alt:0in;margin-right:0in;margin-bottom:
12.0pt;margin-left:.5in'><font size=2 face=Verdana><span style='font-size:10.0pt;
font-family:Verdana'>Note that some reporting clients (e.g. Cognos) do not take
advantage of the SSAS2005 SCOPE_ISOLATION property, so support for it is not
considered critically important.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 face=Verdana><span style='font-size:10.0pt;
font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal><b><font size=3 face=Verdana><span style='font-size:12.0pt;
font-family:Verdana;font-weight:bold'>Proposed Mondrian Changes<o:p></o:p></span></font></b></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>
<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><b><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;font-weight:bold'>High Level<o:p></o:p></span></font></b></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>The proposal involves enhancing
Mondrian to optionally behave like SSAS2005 rather than SSAS2000 in regard to
solve order. <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>The option is controlled using the
MondrianProperties entry S</span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>olveOrderMode=absolute|scoped</span></font><font
size=2 face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>.
The current Mondrian solve order behavior remains the default;
‘absolute’. The SSAS2005 behavior can be turned on with the
value of ‘scoped’. One can achieve SSAS2005
SCOPE_ISOLATION=CUBE semantics by using 'absolute' mode.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>While preserving old behavior as a
default is usually desirable, in this case it is recommended that Mondrian
adopt the SSAS2005 behavior as the default.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'> <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>The implementation of the proposal
is based on the same sort of logic one uses when manually applying the
solve_order property to get the desired SSAS2005-like behavior with current
Mondrian.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'> <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>The 'scoped' solve order mode code
determines the highest solve order based on…<br>
<o:p></o:p></span></font></p>
<p class=MsoNormal style='mso-margin-top-alt:0in;margin-right:0in;margin-bottom:
12.0pt;margin-left:1.0in;text-indent:-.25in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>- If the calculated
member is involved with an aggregate function. <br>
<br>
Aggregation function based calculations are calculated first.<o:p></o:p></span></font></p>
<p class=MsoNormal style='mso-margin-top-alt:0in;margin-right:0in;margin-bottom:
12.0pt;margin-left:1.0in;text-indent:-.25in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>- The location of the
calculated member definition; i.e. its scope. <br>
<br>
Cube scope members are calculated after Aggregate function based
calculations. <br>
<br>
Query scope members are calculated after cube scope calculations.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:1.0in;text-indent:-.25in'><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'>-
The solve_order property. <br>
<br>
This property is only used to order calculations within a given scope.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><b><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;font-weight:bold'><o:p> </o:p></span></font></b></p>
<p class=MsoNormal style='margin-left:.5in'><b><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;font-weight:bold'>Code Changes<o:p></o:p></span></font></b></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>Attached to this email – the
archive was built with the packChange script.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>The RolapEvaluator.peekCalcMember
method now invokes one of two methods for determining the highest solve order
for two or more calculated members. One of these methods implements
the “absolute” algorithm and the other implements the
“scoped” algorithm.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'> <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>Determining cube and query scope
is easy since there is an already defined class method for determining if a
member is defined in a query. If it’s not defined in the query then
it must be defined in the cube.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>Determining relative solve_order
is also trivial since that property is readily available for a given calculated
member.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>Determining if the member is part
of an aggregate function is a little more difficult. There are (at least)
two ways to go about this.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>In the proposed solution, there is
a new RolapEvaluator method that traverses the expression graph associated with
a calculated member explicitly looking for an aggregate function.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>An alternate solution performed a
full evaluation of the calculated member in order to look for an aggregate
function. After the evaluation, a flag was checked to see if an aggregate
function was found.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><b><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;font-weight:bold'><o:p> </o:p></span></font></b></p>
<p class=MsoNormal style='margin-left:.5in'><b><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;font-weight:bold'>Unit Tests<o:p></o:p></span></font></b></p>
<p class=MsoNormal style='margin-left:.5in'><b><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana;font-weight:bold'><o:p> </o:p></span></font></b></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>A JUnit test
(SolveOrderScopeIsolationTest) was recently contributed to the Mondrian
project. These test cases expect AS2005 behavior and as such fail with
the current Mondrian. So this test is not normally setup to run with the
regular regression suite. <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>When this test is enabled, the
proposed implementation with the new AS2005 solve order behavior passes all
test cases. <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>Note there is one exception in
which Mondrian fails regardless of SolveOrderMode. There seems to be an
MDX syntax problem in one of the test cases.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'> <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>Also note there is one test case
that passes for both the old and new behavior.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'>There is another test case that
passes for current Mondrian but fails for the new solve order behavior.
The test case is Mondrian.test.NamedSetTest.testOrderedNamedSet. The test
case explicitly expects SSAS2000 behavior and as such should fail with the new
AS2005 behavior.<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Verdana><span
style='font-size:10.0pt;font-family:Verdana'><o:p> </o:p></span></font></p>
</blockquote>
</blockquote>
</div>
</body>
</html>