格式化报表的GroupBy结果

丹尼尔·迪亚兹·阿斯图迪洛

我已经为此苦苦挣扎了几天。我创建了一个报告来衡量员工对客户的访问(也称为“访问KPI”)。

该报告实际上是有效的,但是加载时间大约为10秒,这是我设法使用GroupBy语句解决的,而不是我定期创建列表,查询,再次查询,另一组列表并序列化为JSON来解决的问题。

我需要做的是非常“简单”的。我正在查询某个年份的一个月(例如:2014年8月),但是我需要检索之前2个月的信息,使用该示例,我需要2014年8月,2014年7月和2014年6月的数据。 8月份的信息,7月份的第二个信息,依此类推。使用GroupBy,我设法做到了,所以结果是这样的:

  1. 用户1
    • 八月
      • 报告的造访次数:3
      • 未报告的访问:2
    • 七月
      • 报告的造访次数:5
      • 未报告的访问:3
    • 六月
      • 报告的造访次数:1
      • 未报告的访问:6
  2. 用户2
    • 八月
      • 报告的造访次数:3
      • 未报告的访问:2
    • 六月
      • 报告的造访次数:1
      • 未报告的访问:6

等等...

好吧,我很好,但是我需要始终检索3个期间,例如,由于用户2在该月没有进行任何访问,因此该结果例如USER 2没有7月份的信息。问题是我需要JULY列的结果全部为零以适合我的表/列布局(在HTML中)。像这样的东西:

  1. 用户1
    • 八月
      • 报告的造访次数:3
      • 未报告的访问:2
    • 七月
      • 报告的造访次数:5
      • 未报告的访问:3
    • 六月
      • 报告的造访次数:1
      • 未报告的访问:6
  2. 用户2
    • 八月
      • 报告的造访次数:3
      • 未报告的访问:2
    • 七月
      • 报告的访问次数:0
      • 未报告的访问:0
    • 六月
      • 报告的造访次数:1
      • 未报告的访问:6

我正在使用的LINQ语句:

var visitasGrouped = from visit in visits
                     group visit by visit.Author into visitsAuthor
                     orderby visitsAuthor.Key ascending
                     from visitsGroup in
                         (from visit in visitsAuthor
                          group visit by visit.DateScheduled.Month)
                     group visitsGroup by visitsAuthor.Key;

显然,count()部分是在foreach语句中计算的。

我们将不胜感激任何帮助,包括改进LINQ语句,任何C#/ LINQ魔术,使用Knockout或jQuery格式化接收到的JSON数组。一切。

多谢您的回覆。

现金流量

无需编译器或进行任何测试即可执行此操作,但这应该可以使您走上正确的道路:

var months = Enumerable.Range(0, 2)
    .Select(x => endDate.AddMonths(-1*x).Month))
    .ToList();

var results = visits
    .GroupBy(v => v.Author)
        .SelectMany(v => months
            .Select(m =>
                new {
                    author = v.Key,
                    month = m,
                    reportedVisits = v.Count(v => v.Reported && v.DateScheduled.Month = m),
                    unreportedVisits = v.Count(v => v.Unreported && v.DateScheduled.Month = m),
                });

请注意,如果访问是一个大数据集,这可能效率很低,而且我不知道这是否会愉快地转换为SQL。就像我说的那样,我的LINQ并不是很好。但是它向您显示了原理:那几个月不会来得很遥远,您需要自己指定它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

格式化报表的GroupBy结果

来自分类Dev

格式化查询结果

来自分类Dev

以格式化格式打印结果

来自分类Dev

如何在SSRS矩阵报表中格式化数字?

来自分类Dev

报表 Access 2013 中的格式化文本

来自分类Dev

在 Python 中格式化 groupby 输出

来自分类Dev

格式化MySQL搜索结果

来自分类Dev

在SQL中格式化表结果

来自分类Dev

格式化来自SQL查询的结果

来自分类Dev

重新格式化json文件的结果

来自分类Dev

在JFrame中格式化结果

来自分类Dev

“反向格式化” Riak搜索结果

来自分类Dev

如何格式化数组的结果

来自分类Dev

在SQL中格式化表结果

来自分类Dev

格式化来自SQL查询的结果

来自分类Dev

如何格式化grep结果?

来自分类Dev

在Bash中格式化结果

来自分类Dev

从SQL查询结果格式化数组

来自分类Dev

PHP格式化数组结果

来自分类Dev

使用格式化的日期结果查询

来自分类Dev

循环对象后格式化结果

来自分类Dev

使用 Flask 格式化结果页面

来自分类Dev

页面大小不足以格式化报表中对象的内容

来自分类Dev

如何使用itertools.groupby格式化字典列表?

来自分类Dev

格式化Pandas .groupby.size()的输出

来自分类Dev

格式化Pandas .groupby.size()的输出

来自分类Dev

无法使用 lodash _.groupBy 格式化 json 对象

来自分类Dev

在linq查询结果中格式化日期

来自分类Dev

Tiddlywiki5,格式化过滤器结果