5

我的任务是为实时 ActivePivot 后端提供高性能前端。IObservable<T>我已经有一个客户端服务层,它提供了一个连续的流(我的要求可以概括为:

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

所有第三方组件似乎都围绕着对断开连接(或很少更新)的数据集进行切片和切割。他们牺牲了性能来获得我根本不需要的更高程度的灵活性,而性能对于我的方案来说是最重要的。

有谁知道 WPF 控件以性能为重点,更倾向于查看预聚合、预格式化的数据?

4

2 回答 2

2

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

但是,当 20 年前设计 OLAP 技术时,实时执行它似乎是不可想象的。一个后果是 XMLA 标准不支持单元集中的更新。实际上,由于单元集和单元集轴的静态表示,它实际上禁止了它。

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

在 WPF 等特定技术的约束下,我会选择一个通用的 UI 工具包,它可以很容易地排列和组合表格。从那里开始,这是一份 DIY 工作。

于 2013-07-25T11:43:25.973 回答
1

以防万一有人想知道,我最终编写了自己的 WPFPivotGrid控件,专门为高性能而设计。它以每秒数十万次的更新处理数千万个单元。我不知道为什么有人会在一个网格中想要这么多数据,但是你去吧。

它处理了我在问题中提出的所有要求,等等。但是,不能共享更多内容,因为它是专有的。

于 2013-09-29T12:41:25.883 回答