如何从SQL Server数据实现仪表板显示的实时*财务*统计引擎?

时间:2022-09-02 14:48:00

We currently use excel automation to calculate time series statistics and store the results in our SQL Server 2008 database for easy display/sorting/etc. later.

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

I'm currently redesigning the home screen of our app to present the most important information (as identified by the team using the app) in dashboard form. I'd like the display to be realtime. Data isn't added often but does requires some serious data crunching.

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

Once the UX is designed where do I go for implementation?
Server side, client side? F# looks like a great language for this type of data crunching and I'm willing to hire a developer but have to think there are other tools we can employ before going this route.

一旦设计了UX,我将在哪里实施?服务器端,客户端?对于这种类型的数据处理,F#看起来很棒,而且我愿意聘请开发人员,但我必须认为在走这条路线之前我们还可以使用其他工具。

Thanks for your suggestions.

谢谢你的建议。

4 个解决方案

#1


Server-side, same as you have now with results stored in the database, but replace the Excel automation with CLR procedures/functions, or even vanilla SQL procs for the simple stuff.

服务器端,与现在一样,结果存储在数据库中,但用Excel CLR程序/函数替换Excel自动化,甚至用简单的东西替换vanilla SQL procs。

CLR assemblies written in F# might make a lot of sense.

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

Also, by doing it server-side, when it does need to be real-time, you won't need to push as much data between tiers. The CLR assemblies will have access to as much atomic data as necessary, and only have to push a greatly reduced output to the client.

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

XML format might be appropriate for the interchange, rather than traditional scalar parameters and tabular result sets. eg, parameters expressed as XML data, return output likewise.

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

#2


Really depends on the nature of the data and how the statistics are calculated, in either case the two things you need to do:

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

(a) trigger an event when any new data is added or deleted

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

(b) Don't recalculate, this could be very costly, instead only do partial calculations, by calculating the difference between the old data and new data.

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

Here is a silly example:

这是一个愚蠢的例子:

Record A = 2

记录A = 2

Record B = 1

记录B = 1

Record C = 1

记录C = 1

Record D = 5

记录D = 5

now lets say your dashboard is calculating the mean, in this simple example we would store (perhaps in the same database) some of the partial calculations results: eg-

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

NumRecords = 4 RecSum = 9

NumRecords = 4 RecSum = 9

Mean = [RecSum]/[NumRecords]

So when data is changed there are only three things that could be done (per transaction):

因此,当数据发生变化时,只有三件事可以完成(每个事务):

record deleted (case 1), record added (case 2), record changed (case 3):

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

case 1 (record A is deleted) thus:

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

NumRecords-1 > 3 RecSum-{Record A Value} > 9-2 =7

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

Mean = [7]/[3]

平均值= [7] / [3]

And you can do similar "Partial" calculations for other cases, the idea being is that you don't throw away your last solution, and you calculate around the differences. of course on more complex statistics this would be more involved.

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

But as you can see, if you imagine you had a million records, then not needing to pull all those records again in order to completely recalculate would allow it to be "realtime"

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

#3


Right now, the way to show dashboards and key performance indicators for your data marts and warehouses is Performance Point Server. That's getting merged into MOSS next year, however. The number of players in this market is shrinking by the day ... MS acquired Proclairty, SAP grabbed OutlookSoft and Oracle picked up Hyperion. Frankly I would look for a MS partner (I'm partial to Avanade) to help define and realize your BI strategy.

目前,为数据集市和仓库显示仪表板和关键性能指标的方法是Performance Point Server。然而,这将在明年合并到MOSS。这个市场的参与者数量正在逐渐减少...... MS收购了Proclairty,SAP抢占了OutlookSoft,甲骨文收购了Hyperion。坦率地说,我会寻找一个MS合作伙伴(我偏爱Avanade)来帮助定义和实现您的BI战略。

#4


For a web-based application, assuming you're prepared to spend some money to buy tools and save yourself money, the slickest-looking solution I've come across is FusionCharts.

对于基于网络的应用程序,假设您准备花一些钱购买工具并节省资金,我遇到的最简单的解决方案是FusionCharts。

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

I've had some involvement with Flex, and have been impressed. I haven't spoken to anybody who has developed in FusionCharts, but I have to say that they look damn fine!

我和Flex有过一些合作,并给我留下了深刻的印象。我没有和任何在FusionCharts开发的人交谈过,但我不得不说他们看起来很好!

#1


Server-side, same as you have now with results stored in the database, but replace the Excel automation with CLR procedures/functions, or even vanilla SQL procs for the simple stuff.

服务器端,与现在一样,结果存储在数据库中,但用Excel CLR程序/函数替换Excel自动化,甚至用简单的东西替换vanilla SQL procs。

CLR assemblies written in F# might make a lot of sense.

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

Also, by doing it server-side, when it does need to be real-time, you won't need to push as much data between tiers. The CLR assemblies will have access to as much atomic data as necessary, and only have to push a greatly reduced output to the client.

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

XML format might be appropriate for the interchange, rather than traditional scalar parameters and tabular result sets. eg, parameters expressed as XML data, return output likewise.

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

#2


Really depends on the nature of the data and how the statistics are calculated, in either case the two things you need to do:

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

(a) trigger an event when any new data is added or deleted

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

(b) Don't recalculate, this could be very costly, instead only do partial calculations, by calculating the difference between the old data and new data.

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

Here is a silly example:

这是一个愚蠢的例子:

Record A = 2

记录A = 2

Record B = 1

记录B = 1

Record C = 1

记录C = 1

Record D = 5

记录D = 5

now lets say your dashboard is calculating the mean, in this simple example we would store (perhaps in the same database) some of the partial calculations results: eg-

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

NumRecords = 4 RecSum = 9

NumRecords = 4 RecSum = 9

Mean = [RecSum]/[NumRecords]

So when data is changed there are only three things that could be done (per transaction):

因此,当数据发生变化时,只有三件事可以完成(每个事务):

record deleted (case 1), record added (case 2), record changed (case 3):

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

case 1 (record A is deleted) thus:

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

NumRecords-1 > 3 RecSum-{Record A Value} > 9-2 =7

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

Mean = [7]/[3]

平均值= [7] / [3]

And you can do similar "Partial" calculations for other cases, the idea being is that you don't throw away your last solution, and you calculate around the differences. of course on more complex statistics this would be more involved.

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

But as you can see, if you imagine you had a million records, then not needing to pull all those records again in order to completely recalculate would allow it to be "realtime"

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

#3


Right now, the way to show dashboards and key performance indicators for your data marts and warehouses is Performance Point Server. That's getting merged into MOSS next year, however. The number of players in this market is shrinking by the day ... MS acquired Proclairty, SAP grabbed OutlookSoft and Oracle picked up Hyperion. Frankly I would look for a MS partner (I'm partial to Avanade) to help define and realize your BI strategy.

目前,为数据集市和仓库显示仪表板和关键性能指标的方法是Performance Point Server。然而,这将在明年合并到MOSS。这个市场的参与者数量正在逐渐减少...... MS收购了Proclairty,SAP抢占了OutlookSoft,甲骨文收购了Hyperion。坦率地说,我会寻找一个MS合作伙伴(我偏爱Avanade)来帮助定义和实现您的BI战略。

#4


For a web-based application, assuming you're prepared to spend some money to buy tools and save yourself money, the slickest-looking solution I've come across is FusionCharts.

对于基于网络的应用程序,假设您准备花一些钱购买工具并节省资金,我遇到的最简单的解决方案是FusionCharts。

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

I've had some involvement with Flex, and have been impressed. I haven't spoken to anybody who has developed in FusionCharts, but I have to say that they look damn fine!

我和Flex有过一些合作,并给我留下了深刻的印象。我没有和任何在FusionCharts开发的人交谈过,但我不得不说他们看起来很好!