【发布时间】:2016-09-14 15:47:00
【问题描述】:
我正在处理几个表格,这些表格最终将用作 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 的数据仓库有什么好处?
我忘了提到原始源数据是水平存储的(每列一个指标),但源数据不用于数据仓库。所以问题本质上是它是否有助于数据仓库。
谢谢。
【问题讨论】:
-
你原来的垂直结构是干净和可扩展的。问问自己,当你得到一个新指标时会发生什么......
-
横向存储数据的一个缺点是当有一个新的
Counter时,您可能需要更改表格以显示报告 -
第一个选项的缺点是Value的类型是固定的,所以不能改变。
-
您似乎在描述一种 entity-attribute-value (EAV) 设计,它的特定领域和主观性对于何时合适,有很多关于此的帖子主题,即dba.stackexchange.com/questions/20759/…
标签: sql-server database-design reporting-services ssrs-2008 ssas