[Mondrian] question on "circular" MDX

John V. Sichi jsichi at gmail.com
Tue May 8 02:34:00 EDT 2007


Julian Hyde wrote:
> John,
> 
> I don't particularly care what the semantics are, as long as we adhere
> to the standard semantics. So I'm glad that you have found the
> definitive scripture on the issue.
> 
> Can you log a bug for #1: fix evaluation of calculated sets to use
> slicer-dependent semantics.
Done:
http://sourceforge.net/tracker/index.php?func=detail&aid=1714738&group_id=35302&atid=414613

> Is it possible to resolve #2 before the bug is fixed?
Yes, Rushan and I will poke around with MSAS some more to see if we can 
pin it down.

> All,
> 
> Let me know if changing to the correct semantics will break you.

We've implemented a temporary workaround, so we'll wait a bit to hear 
back from others.

> Julian
> 
>> -----Original Message-----
>> From: mondrian-bounces at pentaho.org 
>> [mailto:mondrian-bounces at pentaho.org] On Behalf Of John V. Sichi
>> Sent: Friday, May 04, 2007 2:08 PM
>> To: John V. Sichi
>> Cc: Mondrian developer mailing list
>> Subject: Re: Re : [Mondrian] question on "circular" MDX
>>
>> Here's a quasi-official-sounding statement:
>>
>> http://sqljunkies.com/WebLog/sqlbi/archive/2006/12/24/26337.aspx
>>
>> It says that named sets defined in queries should be 
>> slicer-dependent, 
>> meaning:
>>
>> 1) Current behavior for non-native evaluation is incorrect 
>> (since it's 
>> coming out as slicer-independent, even though in the circular case it 
>> still manages to loop as if there were a dependency).
>>
>> 2) We need a resolution on the correct semantics for the original 
>> circular case.  Julian reported that MSAS 2000 did not reject 
>> the query, 
>> so the query processing it implements requires investigation and 
>> comparison with the current Mondrian native evaluation 
>> behavior, where 
>> the calculated members on the slicer are ignored in the NECJ.
>>
>> JVS
>>
>> John V. Sichi wrote:
>>> John V. Sichi wrote:
>>>> OK, good, that matches the code in NamedSetExpr, and what 
>> I see in SQL 
>>>> trace.
>>>>
>>>> Then the stack overflow in the non-native case must be due 
>> to some bug 
>>>> with juggling the calculated members.  I'll log it.
>>>>
>>>> JVS
>>>>
>>>> michael bienstein wrote:
>>>>> WITH SET ... is a named set.  Named sets are evaluated in 
>> the default 
>>>>> context - no slicer at all.
>>> Well, turns out nothing is ever that simple.
>>>
>>> Michael's statement above doesn't match MSAS 2000 behavior. 
>>  Run this 
>>> query:
>>>
>>> with
>>> set [c] as '[Product].[All Product].[Drinks].[Flavored 
>> Drinks].children'
>>> set [p] as '{[Store].[All Store].[USA].[CA].children}'
>>> set [cp] as 'nonemptycrossjoin([c],[p])'
>>> select [cp] on columns
>>> from sales
>>> where ([Time].[1998])
>>>
>>> Notice that the result includes a tuple for (Skinner, San 
>> Francisco).
>>> Now change the slicer to where ([Time].[1997]), and notice that this
>>> tuple disappears.  This is inconsistent with the named set 
>> evaluation
>>> being slicer-independent (since membership in the named set is what 
>>> should determine whether a tuple shows up on the axis, not 
>> whether it is 
>>> empty/nonempty with respect to the slicer).
>>>
>>> So what are the correct semantics?  Mondrian currently 
>> can't make up its
>>> mind.  Run this query via cmdrunner with default settings (native
>>> crossjoin enabled):
>>>
>>> with
>>> set [c] as [Product].[All Products].[Drink].children
>>> set [p] as {[Gender].[M]}
>>> set [cp] as nonemptycrossjoin([c],[p])
>>> select [cp] on rows
>>> from sales
>>> where ([Time].[1998]);
>>>
>>> You will get back an empty rows axis (slicer-dependent 
>> behavior).  Then
>>> disable native crossjoin and run again, and you'll get back 
>> three tuples
>>> on the rows axis (slicer-independent behavior).
>>>
>>> What is the "correct" behavior?
>>>
>>> JVS
>>>
>>>>> ----- Message d'origine ----
>>>>> De : John V. Sichi <jsichi at gmail.com>
>>>>> À : mondrian at pentaho.org
>>>>> Envoyé le : Dimanche, 4 Février 2007, 3h50mn 51s
>>>>> Objet : [Mondrian] question on "circular" MDX
>>>>>
>>>>> If I run the query below with native crossjoins enabled, 
>> it comes back
>>>>> with an answer.  But if I run it with
>>>>> mondrian.native.crossjoin.enable=false, it fails with a 
>> stack overflow.
>>>>>   There's clearly a bug, in that the behavior should be the same
>>>>> regardless of the implementation.  And if it should fail, 
>> it would be
>>>>> nice to fail with a validation error regarding the 
>> circularity (rather
>>>>> than a stack overflow).
>>>>>
>>>>> The cycle in the non-native case is as follows.  The 
>> calculated members
>>>>> in the slicer depend on named set CJ, the result of some
>>>>> NonEmptyCrossJoins.  But those NECJ's in turn depend on 
>> the slicer for
>>>>> deciding non-emptiness of each candidate tuple.
>>>>>
>>>>> There's some further problem with the calculated member 
>> manipulation in
>>>>> that it requires two calculated members to fail; with just one
>>>>> calculated member in the slicer, it succeeds regardless of whether
>>>>> native crossjoin is used.  Unless I'm misunderstanding 
>> the cause of the
>>>>> problem, if it's going to fail in one case, it should 
>> fail in the other.
>>>>> Any opinions on the correct behavior?
>>>>>
>>>>> with
>>>>> set BM_PRODUCT as {[Product].[All Products].[Drink]}
>>>>> set BM_EDU as [Education Level].[Education Level].Members
>>>>> set BM_GENDER as {[Gender].[Gender].[M]}
>>>>> set CJ as 
>>>>> NonEmptyCrossJoin(BM_GENDER,NonEmptyCrossJoin(BM_EDU,BM_PRODUCT))
>>>>> set GM_PRODUCT as Generate(CJ, {[Product].CurrentMember})
>>>>> set GM_EDU as Generate(CJ, {[Education Level].CurrentMember})
>>>>> set GM_GENDER as Generate(CJ, {[Gender].CurrentMember})
>>>>> set GM_MEASURE as {[Measures].[Unit Sales]}
>>>>> member [Education Level].FILTER1 as Aggregate(GM_EDU)
>>>>> member [Gender].FILTER2 as Aggregate(GM_GENDER)
>>>>> select
>>>>> GM_PRODUCT on rows,
>>>>> GM_MEASURE on columns
>>>>> from [Sales]
>>>>> where ([Education Level].FILTER1, [Gender].FILTER2);
>>>>>
>>>>> JVS
>>>>> _______________________________________________
>>>>> Mondrian mailing list
>>>>> Mondrian at pentaho.org
>>>>> http://lists.pentaho.org/mailman/listinfo/mondrian
>>>>>
>>>>>
>>>>>
>> --------------------------------------------------------------
>> ----------
>>>>> Découvrez une nouvelle façon d'obtenir des réponses à toutes vos 
>>>>> questions ! Profitez des connaissances, des opinions et des 
>>>>> expériences des internautes sur Yahoo! Questions/Réponses 
>>>>> <http://fr.rd.yahoo.com/evt=42054/*http://fr.answers.yahoo.com>.
>>>>>
>>>>>
>>>>>
>> --------------------------------------------------------------
>> ----------
>>>>> _______________________________________________
>>>>> Mondrian mailing list
>>>>> Mondrian at pentaho.org
>>>>> http://lists.pentaho.org/mailman/listinfo/mondrian
>>>>
>>>
>>>
>> _______________________________________________
>> Mondrian mailing list
>> Mondrian at pentaho.org
>> http://lists.pentaho.org/mailman/listinfo/mondrian
>>
> 
> _______________________________________________
> Mondrian mailing list
> Mondrian at pentaho.org
> http://lists.pentaho.org/mailman/listinfo/mondrian
> 




More information about the Mondrian mailing list