1

我们目前使用 excel 自动化来计算时间序列统计数据并将结果存储在我们的 SQL Server 2008 数据库中,以便于显示/排序/等。之后。

我目前正在重新设计我们应用程序的主屏幕,以仪表板形式呈现最重要的信息(由使用该应用程序的团队确定)。我希望显示是实时的。数据不会经常添加,但确实需要一些严肃的数据处理。

一旦设计了用户体验,我该去哪里实施?
服务器端,客户端?F# 对于这种类型的数据处理来说似乎是一种很棒的语言,我愿意聘请一名开发人员,但在走这条路之前,我们必须考虑一下我们可以使用其他工具。

感谢您的建议。

4

4 回答 4

1

服务器端,与您现在将结果存储在数据库中的结果相同,但是用 CLR 过程/函数替换 Excel 自动化,或者甚至用普通的 SQL procs 替换简单的东西。

用 F# 编写的 CLR 程序集可能很有​​意义。

此外,通过在服务器端进行,当它确实需要实时时,您不需要在层之间推送尽可能多的数据。CLR 程序集可以根据需要访问尽可能多的原子数据,并且只需将大大减少的输出推送到客户端。

XML 格式可能适合于交换,而不是传统的标量参数和表格结果集。例如,表示为 XML 数据的参数同样返回输出。

于 2009-06-24T01:12:27.157 回答
1

实际上取决于数据的性质以及统计数据的计算方式,无论哪种情况,您都需要做两件事:

(a) 添加或删除任何新数据时触发事件

(b) 不要重新计算,这可能会非常昂贵,而是只做部分计算,通过计算旧数据和新数据之间的差异。

这是一个愚蠢的例子:

记录 A = 2

记录 B = 1

记录 C = 1

记录 D = 5

现在假设您的仪表板正在计算平均值,在这个简单的示例中,我们将存储(可能在同一个数据库中)一些部分计算结果:例如-

NumRecords = 4 RecSum = 9

Mean = [RecSum]/[NumRecords]

因此,当数据更改时,只能做三件事(每个事务):

删除记录(案例 1),添加记录(案例 2),更改记录(案例 3):

案例 1(记录 A 被删除)因此:

NumRecords-1 > 3 RecSum-{记录 A 值} > 9-2 =7

平均值 = [7]/[3]

并且您可以对其他情况进行类似的“部分”计算,其想法是您不会丢弃最后一个解决方案,而是围绕差异进行计算。当然,对于更复杂的统计数据,这将涉及更多。

但是正如您所看到的,如果您想象您有一百万条记录,那么不需要再次提取所有这些记录以完全重新计算将允许它是“实时的”

于 2009-09-14T15:05:47.050 回答
0

目前,为您的数据集市和仓库显示仪表板和关键性能指标的方式是Performance Point Server。但是,明年将合并到 MOSS 中。这个市场的参与者数量日益减少……微软收购了 Proclairty,SAP 收购了 OutlookSoft,甲骨文收购了 Hyperion。坦率地说,我会寻找 MS 合作伙伴(我偏爱埃维诺)来帮助定义和实现您的 BI 战略。

于 2009-06-24T01:10:19.343 回答
0

对于基于 Web 的应用程序,假设您准备花一些钱购买工具并为自己省钱,我遇到的最漂亮的解决方案是 FusionCharts。

http://www.fusioncharts.com/LiveDemos.asp

我与 Flex 有过接触,印象深刻。我没有和任何在 FusionCharts 中开发过的人交谈过,但我不得不说他们看起来非常好!

于 2009-06-24T01:56:15.927 回答