Class SegmentBuilder

java.lang.Object
mondrian.rolap.agg.SegmentBuilder

public class SegmentBuilder extends Object
Helper class that contains methods to convert between Segment and SegmentHeader, and also SegmentWithData and SegmentBody.
Author:
LBoudreau
  • Constructor Details

    • SegmentBuilder

      public SegmentBuilder()
  • Method Details

    • addData

      public static SegmentWithData addData(Segment segment, SegmentBody sb)
      Converts a segment plus a SegmentBody into a SegmentWithData.
      Parameters:
      segment - Segment
      sb - Segment body
      Returns:
      SegmentWithData
    • toSegment

      public static Segment toSegment(SegmentHeader header, RolapStar star, BitKey constrainedColumnsBitKey, RolapStar.Column[] constrainedColumns, RolapStar.Measure measure, List<StarPredicate> compoundPredicates)
      Creates a segment from a SegmentHeader. The star, constrainedColsBitKey, constrainedColumns and measure arguments are a helping hand, because we know what we were looking for.
      Parameters:
      header - The header to convert.
      star - Star
      constrainedColumnsBitKey - Constrained columns
      constrainedColumns - Constrained columns
      measure - Measure
      Returns:
      Segment
    • rollup

      public static Pair<SegmentHeader,SegmentBody> rollup(Map<SegmentHeader,SegmentBody> map, Set<String> keepColumns, BitKey targetBitkey, Aggregator rollupAggregator, Dialect.Datatype datatype)
      Given a collection of segments, all of the same dimensionality, rolls up to create a segment with reduced dimensionality.
      Parameters:
      map - Source segment headers and bodies
      keepColumns - A list of column names to keep as part of the rolled up segment.
      targetBitkey - The column bit key to match with the resulting segment.
      rollupAggregator - The aggregator to use to rollup.
      datatype - The data type to use.
      Returns:
      Segment header and body of requested dimensionality
    • isSubset

      public static boolean isSubset(SegmentHeader header, Segment segment)
      Tells if the passed segment is a subset of this segment and could be used for a rollup in cache operation.
      Parameters:
      segment - A segment which might be a subset of the current segment.
      Returns:
      True or false.
    • toConstrainedColumns

      public static List<SegmentColumn> toConstrainedColumns(StarColumnPredicate[] predicates)
    • toConstrainedColumns

      public static List<SegmentColumn> toConstrainedColumns(Collection<StarColumnPredicate> predicates)
    • toHeader

      public static SegmentHeader toHeader(Segment segment)
      Creates a SegmentHeader object describing the supplied Segment object.
      Parameters:
      segment - A segment object for which we want to generate a SegmentHeader.
      Returns:
      A SegmentHeader describing the supplied Segment object.