[Mondrian] RE: 3.2 NonEmptyCrossJoin Issues
Julian Hyde
jhyde at pentaho.com
Mon Apr 26 23:32:06 EDT 2010
Will,
It looks very reasonable. I am running your change through my suite of tests
now.
I think you should check in before the 12 midnight EDT mondrian regression
suite starts. If my suite shows up a problem, I'll let you know and we can
back out.
Matt/Kurtis,
Can you please comment because it was your change 13151 that added
if (evaluator.nativeEnabled())
into RolapSchemaReader.getNativeSetEvaluator.
Julian
> -----Original Message-----
> From: Will Gorman [mailto:wgorman at pentaho.com]
> Sent: Monday, April 26, 2010 8:16 PM
> To: Julian Hyde
> Cc: Benny Chow; Jake Cornelius
> Subject: RE: 3.2 NonEmptyCrossJoin Issues
>
> Hi Julian,
>
> I've narrowed the change down to
> RolapSchemaReader.getNativeSetEvaluator(), it is now checking for
> evaluator.enableNative() before creating a native evaluator.
> I was able
> to get the unit test to pass by changing the default value of
> RolapEvaluator.enableNative in the constructor from:
> MondrianProperties.instance().EnableNativeNonEmpty.get()
> to:
> MondrianProperties.instance().EnableNativeNonEmpty.get() ||
> MondrianProperties.instance().EnableNativeCrossJoin.get();
>
> All the unit tests pass. Does that seem like a reasonable
> approach? If
> I just remove the check in RolapSchemaReader there are test failures.
>
> Thanks,
>
> Will
>
> On Mon, 2010-04-26 at 22:15 -0400, Will Gorman wrote:
> > After running a quick binary search through change lists,
> I've narrowed
> > down the regression to change #13151 - "MONDRIAN -
> NativizeSet - making
> > sure each high cardinality determination is not affected by the
> > evaluation of previous axes."
> >
> > Also, I don't think the slimmed down unit test is really
> testing for the
> > issue, the exception that is thrown is in a different area
> of the code.
> >
> > Will
> >
> > On Mon, 2010-04-26 at 17:52 -0400, Will Gorman wrote:
> > > Hi Julian,
> > >
> > > Attached are two unit test cases that demonstrate the
> issue. I used the
> > > original MDX and Benny's slimmed down version for the two
> test cases.
> > > Hopefully this helps!
> > >
> > > Will
> > >
> > > On Sat, 2010-04-24 at 04:59 -0500, Benny Chow wrote:
> > > > Julian,
> > > >
> > > > I *think* the regression was caused by your change
> 13234 on 12/16/2009
> > > > 03:02:56 AM MONDRIAN: Rationalize & tune how root evaluator is
> > > > created.
> > > >
> > > > Mondrian's code is complicated and I'm not very clear
> on what's going
> > > > on in there. But looking at the changes in RolapEvaluator I'm
> > > > guessing that when the properties were set to:
> > > >
> > > > mondrian.native.crossjoin.enable=true
> > > > mondrian.native.nonempty.enable=false
> > > >
> > > > Native CJ evaluation was still happening but after
> 13234, native CJ
> > > > stopped kicking in.
> > > >
> > > > Here's a simple query that should be native evaluated
> with the above
> > > > property settings:
> > > >
> > > > With
> > > > Set [*NATIVE_CJ_SET] as 'NonEmptyCrossJoin([Education
> > > > Level].[Education Level].Members,[Store Type].[Store
> Type].Members)'
> > > >
> > > > Select
> > > > [*NATIVE_CJ_SET] on columns
> > > > From [Sales]
> > > >
> > > > Is this enough information for you to try to fix this?
> > > >
> > > > Benny
> > > >
> > > >
> > > >
> > > > -----Original Message-----
> > > > From: Benny Chow
> > > > Sent: Sat 4/24/2010 12:24 PM
> > > > To: Will Gorman
> > > > Cc: Julian Hyde; Jake Cornelius
> > > > Subject: RE: 3.2 NonEmptyCrossJoin Issues
> > > >
> > > > Hi Will,
> > > >
> > > > I checked in the code. There are currently three test
> failures. 2
> > > > are related to Marc's change which I sent email earlier
> about. 1 is
> > > > related to the nonemptycrossjoin issue.
> > > >
> > > > IMO, it's a blocker since it's a big performance issue.
> Analyzer MDX
> > > > generation was architected to use the NECJ to return only valid
> > > > combinations of attributes on the report.
> > > >
> > > > I'll do some more investigation over the weekend.
> > > >
> > > > Benny
> > > >
> > > >
> > > > -----Original Message-----
> > > > From: Will Gorman
> > > > Sent: Saturday, April 24, 2010 5:30 AM
> > > > To: Benny Chow
> > > > Cc: Julian Hyde; Jake Cornelius
> > > > Subject: Re: 3.2 NonEmptyCrossJoin Issues
> > > >
> > > > Hi Benny,
> > > >
> > > > Thanks for doing the research. Could you check in your
> progress?
> > > > I've
> > > > made similar changes on the reporting side, and
> verified all JPivot
> > > > unit
> > > > tests are passing.
> > > >
> > > > Also, do you feel that the native regression is a
> blocker for our RC
> > > > release, or are you okay with waiting till GA to have
> this resolved?
> > > >
> > > > Thanks!
> > > >
> > > > Will
> > > >
> > > > On Fri, 2010-04-23 at 12:06 -0500, Benny Chow wrote:
> > > > > Julian,
> > > > >
> > > > > I refactored Analyzer's code to not depend on the All member
> > > > anymore
> > > > > and use getParentMember to find parent members. The
> majority of
> > > > > Analyzer's unit tests pass now. I think next time
> you fix old
> > > > > LucidEra Clearview unit tests, you should give me a
> heads up since
> > > > all
> > > > > of those tests exist in Analyzer.
> > > > >
> > > > > The NonEmptyCrossJoin issue I am running into is that native
> > > > > evaluation is not happening anymore for the below query:
> > > > >
> > > > >
> > > > > With
> > > > > Set [*NATIVE_CJ_SET] as
> 'NonEmptyCrossJoin([*BASE_MEMBERS_Education
> > > > > Level],NonEmptyCrossJoin([*BASE_MEMBERS_Common
> Date-Canonical Dates
> > > > > Calendar Hierarchy],[*BASE_MEMBERS_Product]))'
> > > > >
> > > > > Set [*BASE_MEMBERS_Common Date-Canonical Dates
> Calendar Hierarchy]
> > > > as
> > > > > '[Common Date-Canonical Dates Calendar Hierarchy].[Calendar
> > > > > Month].Members'
> > > > >
> > > > > Set [*BASE_MEMBERS_Education Level] as '[Education
> > > > Level].[Education
> > > > > Level].Members'
> > > > > Set [*BASE_MEMBERS_Product] as '[Product].[Product
> Family].Members'
> > > > > Set [*BASE_MEMBERS_Measures] as
> > > > '{[Measures].[*FORMATTED_MEASURE_0]}'
> > > > > Member [Measures].[*FORMATTED_MEASURE_0] as
> '[Measures].[Sales
> > > > > Count]', FORMAT_STRING = '#,###', SOLVE_ORDER=400
> > > > > Select
> > > > > [*BASE_MEMBERS_Measures] on columns,
> > > > > Non Empty [*NATIVE_CJ_SET] on rows
> > > > > From [Sales]
> > > > >
> > > > >
> > > > > The [*NATIVE_CJ_SET] should have been natively
> evaluated with all
> > > > > three dimensions pushed down to the DB.
> > > > >
> > > > > The current mondrian.properties is the same as I sent you
> > > > previously.
> > > > > I think the two key properties are:
> > > > >
> > > > > # if enabled some NON EMPTY CrossJoin will be computed in SQL
> > > > >
> > > > > mondrian.native.crossjoin.enable=true
> > > > >
> > > > > # some NON EMPTY set operations like member.children,
> level.members
> > > > > and member descendants will be computed in SQL
> > > > >
> > > > > mondrian.native.nonempty.enable=false
> > > > >
> > > > >
> > > > > These properties have not changed so the behavior
> should not have
> > > > > changed either.
> > > > >
> > > > > Analyzer has a bunch of unit tests that test for
> native evaulation
> > > > by
> > > > > turning on
> > > > >
> MondrianProperties.instance().AlertNativeEvaluationUnsupported.
> > > > (This
> > > > > was something JVS added). But because of this
> regression, Mondrian
> > > > is
> > > > > not reporting when native evaluation is not being used (but
> > > > expected).
> > > > >
> > > > > I'm still investigating this but if you know that
> code has been
> > > > > changed in this area you can give me some pointers...
> > > > >
> > > > > Thanks
> > > > > Benny
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > >
> >
>
>
>
More information about the Mondrian
mailing list