首页 > 解决方案 > 基于日期范围的 NReco 过滤立方体

问题描述

需要按日期范围切片立方体。将数据放入多维数据集后,如何传入开始/结束日期来限制切片?

//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;

标签: c#pivot-tablenreco

解决方案


为此目的使用此SliceQuery.Where(string dimension, Func predicate)重载:

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

(我假设“CloseDate”维度类型是 DateTime;如果没有相应地更改“d”的处理)


推荐阅读