Pentaho Analysis - Mondrian
  1. Pentaho Analysis - Mondrian
  2. MONDRIAN-555

Compound slicer counts cells twice in certain cases

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Severe Severe
    • Resolution: Unresolved
    • Affects Version/s: 3.2.0 GA (3.6.0 GA Suite Release)
    • Fix Version/s: Mondrian Backlog
    • Component/s: None
    • Labels:
      None
    • Notice:
      When an issue is open, the "Fix Version/s" field conveys a target, not necessarily a commitment. When an issue is closed, the "Fix Version/s" field conveys the version that the issue was fixed in.

      Description

      I am implementing compound slicer functionality now, and just about to check in. A compound slicer is a WHERE clause that contains a set of members or tuples. If the members or tuples do not overlap, mondrian's behavior is correct.

      But if they overlap, mondrian will include the cells in the result twice, and that is inconsistent with the results that SSAS 2005 produces.

      Here are some examples where the regions overlap.
      1. A list of members contains the same member twice, e.g. WHERE {[Product].[Food], [Product].[Drink], [Product].[Food]}.
      2. A list of members contains one member that is a child of another, e.g. WHERE {[Product].[Food], [Product].[Food].[Cheese]}.
      3. A list of tuples can have more complicated overlaps, e.g. WHERE {([Store].[TX], [Product].[Food]), ([Store].[TX].[San Antonio], [Product].[Beer]} seems to overlap but does not.

      The right thing to do is to view the tuples as collections of predicates - column=value conditions combined with ANDs and ORs - to be pushed into the WHERE clause of the query sent to the fact table. Currently Mondrian evaluates compound slicers using basically the 'by hand' method - create a calculated member whose calculation is Aggregate( <list of members> ) and put it in the WHERE clause - except that it allows calculations that are tuples.

        Activity

        Hide
        Jason Edwards added a comment -
        The patch I submitted for MONDRIAN-791 introduces an algorithm to generate the aforementioned collection of predicates ("column=value conditions combined with ANDs and ORs") in the newly-added method mondrian.rolap.RolapCell.buildDrillthroughSlicerPredicate This same algorithm might serve as the foundation for a patch to address this issue as well.
        Show
        Jason Edwards added a comment - The patch I submitted for MONDRIAN-791 introduces an algorithm to generate the aforementioned collection of predicates ("column=value conditions combined with ANDs and ORs") in the newly-added method mondrian.rolap.RolapCell.buildDrillthroughSlicerPredicate This same algorithm might serve as the foundation for a patch to address this issue as well.

          People

          • Assignee:
            Unassigned User
            Reporter:
            Julian Hyde
          • Votes:
            2 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated: