用于预聚合数据的高性能枢轴网格

Ken*_*art 5 wpf performance controls pivot-table activepivot

我的任务是为现场的ActivePivot后端提供高性能的前端.我已经有了一个客户端服务层,它提供了IObservable<T>预先聚合的预格式化数据的连续流(),以及详细说明报告中维度和内容的元数据.我的要求可以概括为:

  1. 根据流中的元数据动态设置行标题和列标题.
  2. 动态地将实时数据传递到控件的相应行/列.
  3. 突出显示对数据的更改.例如.增加的值可能会暂时以绿色突出显示,红色值会减少.
  4. 拦截行/列标题上的用户操作(即向下钻取),以便我可以发起基础MDX查询的更改.
  5. 拦截数据值上的用户操作(可能是双击),以便我可以发起追溯查询(其结果将显示在单独的数据网格中).

所有第三方组件似乎都是围绕切片和切割断开连接(或很少更新)的数据集.他们牺牲性能来实现我根本不需要的更高程度的灵活性,并且性能对我的场景至关重要.

有没有人知道WPF控件是以性能为中心的,并且更倾向于查看预先聚合的预格式化数据?

Ant*_*LLE 2

允许切片和切块数据探索的类似数据透视表的前端通常与 OLAP 技术相关。其中一些前端使用专有数据模型针对一台特定服务器,另一些则实现标准:通过 XMLA 传输进行 MDX 查询。

但 20 年前设计 OLAP 技术时,实时处理似乎是不可想象的。结果之一是 XMLA 标准不支持单元集中的更新。实际上,由于单元集和单元集轴的静态表示,它实际上禁止这样做。

ActivePivot 可以将实时更新推送到 OLAP 结果集中,并公开一个(专有)流 API 来订阅这些更新。ActivePivot Live 前端首先是为了利用这些实时更新而编写的,将它们呈现在熟悉的数据透视表控件中。但在 2013 年,ActivePivot 仍然是唯一具有实时支持的 OLAP 服务器。这解释了为什么还没有订阅 OLAP 实时更新的标准。这也意味着截至 2013 年,在 ActivePivot Live 之外,您将找不到一个工具包(无论是否为 WPF)能够通过实时更新完成丰富其数据透视表控件的全部工作。我们所知道的库实际上在其数据透视表设计中转置了 XMLA 的静态数据表示,这使得更新单元格变得很麻烦或不可能(例如,考虑 Microsoft Excel 数据透视表)。

在 WPF 这样的特定技术的限制下,我会选择一个通用的 UI 工具包,它可以轻松地排列和组合表格。从那里开始,这是一项 DIY 工作。