我正在处理几个表,这些表最终将用作BI项目的数据仓库。这些表存储计数器数据,然后用于计算KPI。
因此,例如,表格目前如下所示:
DimCounter
Counter ParmId
KpiStore 1 (used for Sales reports)
KpiInventory 2 (used for Sales reports)
Kpi3 3
Kpi4 4
数据表如下所示:
FactSales
ParmId Value ProcDate ProcHour
1 20 20160914 12
2 40 20160914 12
1 70 20160914 12
所以,现在我们有一些销售报告可以很好地使用这种格式;用垂直格式的数据创建查询并不是问题。但我认为,水平存储数据可能会更好,如下所示:
FactSales
ProcDate ProcHour KpiStore KpiInventory
20160914 12 20 40
销售报告实际上是更简单,最直接的报告,因为它使用两个计数器,而且主要是加法/减法。但是还有一些更复杂并且使用更多计数器,需要以多种方式进行分组。
以这种或那种方式存储数据有什么好处?更具体地说,对于用于BI的数据仓库,垂直存储数据有什么好处吗?
我忘了提到原始源数据是水平存储的(每列有一个度量标准),但源数据不用于数据仓库。所以问题基本上是它是否有助于数据仓库。
感谢。
答案 0 :(得分:0)
当前规范化的最大好处来自于,与修改表结构相比,只需执行表插入即可添加新值。除此之外,您可能还会为不同的计数器类型提供大量的空值。例如:
FactSales
ProcDate ProcHour KpiStore KpiInventory
20160914 12 20 40
20160915 11 30 NULL
您当前的数据环境可能不是这种情况,但如果您要锁定这些字段,则会失去很大的灵活性。与通常情况相比,我通常更加规范化,因为我通常希望有更多的未来灵活性来添加新字段和容纳字段更改(有时候,以前不允许空值的字段有时可能在将来为空)等等...... / p>