数据仓库事实表的设计

Posted

技术标签:

【中文标题】数据仓库事实表的设计【英文标题】:design of fact table(s) for data warehouse 【发布时间】:2009-11-19 21:04:01 【问题描述】:

您将如何在数据仓库中对此进行建模:


    有些自治市是地理区域,存在于地理层次结构中,例如省(即州,例如明尼苏达州)、地区(例如中西部)。

    对这些城市进行绩效评估,通过计算绩效指标,例如“完成的住房积压百分比”、“预算支出百分比”、“分配给基础设施的预算百分比”、“债务覆盖率”、等等

    这些性能指标大约有 100 个。

    这些指标分为“绩效组”,而这些指标本身又分为“关键绩效领域”

    对绩效指标进行计算(计算因城市类型、规模、地区等某些因素而异)产生“绩效分数”。

    然后将权重应用于分数以创建“最终加权分数”。 (即,当汇总到“关键绩效领域”时,某些指标的权重高于其他指标)

    会有一个时间维度(每年进行一次评估),但目前只有一个数据集。


注意:用户需要能够轻松查询任意指标组合的数据。即有人可能希望看到:(i) (ii)“债务人覆盖率”与 (iii)“预算支出百分比”与 (iv)“债务天数”在 (v) 省级的绩效水平。

我尝试通过将“IndicatorType”作为维度,然后在该表中使用 [指标/绩效组/绩效区域] 层次结构 - 但后来我无法弄清楚如何轻松获得多个指标行,因为它需要一个事实表别名(?)。所以我想把所有 100 个项目作为列放在一个(非常宽的!)事实表中 - 但是我会失去指标上的 [组/区域] 层次结构......?

有什么想法吗?

谢谢

【问题讨论】:

【参考方案1】:

希望这是不言自明的。

【讨论】:

这看起来很正确:通过将 IndicatorKey 放在事实表中并只使用一个通用 IndicatorValue,您就有了一些键值对方法。这对于报告不是很有用,但它是处理指标随时间变化的必然性的实用方法。然后,您可以根据这些数据将此数据发布到一个扁平表中,并将不同的度量作为专用列。这个辅助表会更容易更改 - 也许您不需要每个单独的度量 - 可能只是更静态的性能区域和组数。【参考方案2】:

这是一个非常复杂的问题,但我花时间研究了你的一些观点并提出了这个模型(对你来说应该是一个好的开始)。

尺寸:

DIM_MUNICIPALITIES:

字段 = MUNICIPAL_KEY, COUNTRY, REGION, STATE_PROV, CITY?, SIZE_SCORE

层次结构 = COUNTRY

DIM_INDICATORS:

字段 = INDICATOR_KEY, PERFORMANCE_AREA, PERFORMANCE_GROUP, PERFORMANCE_INDICATOR

层次结构 = PERFORMANCE_AREA

DIM_DATE:

字段 = DATE_KEY, CALENDAR_DATE (SQL 日期时间), YEAR, MONTH, WEEK, DAY...

层次结构 = YEAR

然后在您的事实表(例如 MYFACT)中,您将执行以下操作:

FACT_MYFACT:

字段 = MYFACT_KEY, DATE_KEY, MUNICIPAL_KEY, INDICATOR_KEY, PERFORMANCE_SCORE, BUDGET, ETC....

事实表可以包含所有这些度量列(BUDGET、ETC),或者您可以在计算成员中执行它们,这完全取决于您希望如何使可访问性。

希望这可以帮助您有个好的开始!

【讨论】:

感谢您的帖子。但是,我很困惑:如果存在指标级别维度,那么事实表中就不需要多个度量列,因为它们是相同的。这实际上是关于拥有 100 宽的列事实表的设计优势,而不是单个数字度量列和“度量类型”维度(在本例中为指标维度)。使用宽表,我可以轻松地将多个列并排拉出,但我失去了 PI/PG/KPA 层次结构。使用指标维度,我失去了报告的灵活性。还是有其他方法? 更多:我认为 3 个事实表: - 性能指标 - 性能分数 - 最终加权分数(计算是在负载中完成的,即然后应用评分规则和权重,而不是在 d /w) 所以:如果我在“绩效指标”事实表中有 100 列,我就有 100 个度量。现在很容易报告 15 种不同的措施。如果度量在 DIM 中,那么我只有 1 个度量对象,需要一个过滤器来获得正确的对象,而别名来获得多个?从excel报告时,这是不可能的吗?所以走得更远,失去 PI/PG/KPA 的层级吗? 我的意思不是把度量放在 DIM 中,我不确定你所说的尺寸分数是什么意思(如果那是你所指的)。我一定误解了你所说的指标的意思。在指标维度中,我将存储描述和表示某个指标的字段,然后在 FACT 中存储该值的实际度量。

以上是关于数据仓库事实表的设计的主要内容,如果未能解决你的问题,请参考以下文章

数据仓库事实表的设计

数据仓库与数据挖掘

数据仓库设计

Hadoop之数据仓库设计

Hadoop之数据仓库设计

数据仓库设计要点