繁体   English   中英

在SQL Server 2014中对数据进行舍入

[英]Rounding up of data in SQL Server 2014

我已经使用SQL Server 2014作为数据库在C#(ASP.NET 4.0)中开发了一个应用程序。

我对汇总和汇总数据有疑问。 我有通过FTP通过CSV传入的数据,并将原始数据导入到表中。 客户每分钟记录一次数据。 数据由客户ID标识。

现在,我被要求获取该数据并将时间序列数据汇总为每小时的15分钟。

然后,他们希望将数据四舍五入为几天(午夜至午夜),然后将数据四舍五入为几周(周一至周日)。 他们还希望将日数据四舍五入为从午夜到午夜的日历月,并将月数据四舍五入为一年。

想法是将原始时间序列数据分组为组成部分的时间段,例如日,周,月,以便他们可以看到该时间段的总计。

我查看了SQL中的游标和循环,并被告知开销将非常大,因为我已经有3亿行记录并在处理。

我不应该使用C#开发服务来在服务器上完成所有工作,还是使用数据库。 我所做的研究在每种情况下都略有矛盾。

任何提示在哪里寻找和尝试什么都将是很棒的。

我相信您在这里寻求的不仅仅是解决方案。 我建议您创建一个表,该表将保存ftp负载的数据以及批处理ID(唯一标识符)。 创建另一个表,在其中使用状态列加载该批处理ID,如果您对表1进行ftp加载,则在此处插入一行,将状态设置为N。此轮询脚本应调用以下sp。

现在,从c#创建一个轮询脚本,或者如果您有使用SQL服务代理的经验,则可以使用批处理ID和状态为N的状态轮询此table2。

现在,创建另一个存储过程,该存储过程将仅汇总该批次ID的所有记录。 并将这些值适当地添加到每日计数中。.将同样执行每周计数和所有...

完成所有这些操作后,从table1中删除具有我们处理的批次ID的信息,如果您需要此信息以备将来使用,则可以将其存储在其他表中。

为了具有管理数据的能力并准备将来对业务规则进行任何更改,您需要在表中添加一些控制列。 控制周期/小时/天/月/年/ ...将来的控制

只需添加周期,就一次用相应的值填充相应的控制字段:

period 1..4
hour 1-24
day 1..366
week 1..55
month 1..12
year 1.. (if needed)

您可以定义一组SQL函数以一次填充这些列(在从文件加载数据的过程中)。

为这些列创建索引。

一旦完成此操作,您就可以通过c#代码/ sql代码,对任何时间段/小时/天/天进行动态汇总。..您可以受益于Analysis服务器/窗口函数/枢轴来做您的魔术: )在任意间隔的数据上。

除了存档目的和将来管理更改之外,这种方法使您能够保留数据,不删除数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM