我们正在构建一个用于捕获网络和销售流量的vNext数据/报告平台。
在一个非常高的水平,我们捕获印象,点击和销售数据,然后需要报告。
我对这个平台的第一次设计基本上是将数据聚合到每小时、每日、每周和每月的结构中。每个被分组在多个其他维度(客户,品牌,产品,国家,零售商等)有印象计数,点击计数,总价值等等.
因此,每小时,源数据都会被聚合为-> Hourly,然后每天:
Hourly数据->新Daily的24小时前Hourly数据->的prev 24小时添加到现有的Weekly或创建新的WeeklyHourly数据->的prev 24小时添加到现有的Monthly或创建新的Monthly这为我们提供了很大的灵活性,以有效地报告,以及监测趋势和确定潜在的问题。
我不确定的一件事是,在“差异”进入聚合数据的情况下,如何“修复”数据。
每隔一段时间,客户就会提供不正确的定价信息。当这种情况发生时,每一次点击和印象上的“潜在值”都是错误的。
因此,源数据以每小时汇总的形式结束。
如果不被注意到,即使有一天,这一小时数据也会污染每日、每周和每月的总量。而且,由于这些聚合正在构建并以累积方式添加,所以很难撤消它。(你不能从那壶紫色的水里倒出蓝色的水)。
这里的天真解决方案似乎是丢弃已被污染的聚合数据的子集,修复源数据,然后重新生成每个已被删除的聚合。一天后,可能意味着扔掉24小时、1天、1周和1月刊。
还是有另一种我没有想到的方法?
发布于 2017-10-20 18:38:16
在会计实务中,价值从未改变过。相反,创建辅助补偿事务。在您的情况下,这将意味着一个新行,其值为负值、旧值、不正确值和第二个新行,该值为新的、正确的值。
为了工作,每个数据行都需要自己的datetime列,因此这些补偿事务可以被后处理到正确的存储桶中。
在后处理过程中不能改变平均数。相反,在运行时存储和计算总和和计数。
https://dba.stackexchange.com/questions/188922
复制相似问题