0

Need to slice cube by date range. After getting the data into the cube how can I pass in a start/end date to limit a slice?

//define full data set
            var allRows = (from c in newContext.MCrmOpportunity
                           orderby c.CloseDate
                           select c)
                          .ToList();

            //define cube pivot
            var cubeData = new PivotData(
                new[] { "CloseDate" },
                new SumAggregatorFactory("Amount"),
                true);

            //process data into cube structure
            cubeData.ProcessData(allRows.AsEnumerable(), new ObjectMember().GetValue);

            var sq = new SliceQuery(cubeData).Where ???????????

            var sc = sq.Execute();
            return sc;
Vitaliy Fedorchenko
  • 8,447
  • 3
  • 37
  • 34
Jason
  • 13
  • 3

1 Answers1

0

Use this SliceQuery.Where(string dimension, Func predicate) overload for this purpose:

DateTime startDt;  // range start
DateTime endDt;  // range end
var sq = new SliceQuery(cubeData).Where("CloseDate", 
            d => (DateTime)d >= startDt && (DateTime)d <= endDt );

(I assume that 'CloseDate' dimension type is DateTime; if not change handling of 'd' accordingly)

Vitaliy Fedorchenko
  • 8,447
  • 3
  • 37
  • 34