用于数据采集系统的事实表颗粒

时间:2013-02-06 23:14:42

标签: ssas

我在全国各地部署了数据采集系统网络。每个系统都在测量不同建筑物的性能。每个系统都可以进行温度,流量,速度,能量和其他类型的测量。采样率因系统而异;它可以低至5秒,最高可达15分钟。

我的目标是将所有数据存储在SSAS数据库中以进行分析。但是,我正在努力确定适当的谷物和相关的事实表以及SSAS测量/测量组设计。

我的第一个问题是,以下任何一种都有相同的颗粒吗?:

  • 具有不同单位的数据值,例如温度和能量值
  • 具有不同采样率的数据值,例如每分钟采样的温度值和每15分钟采样的温度
  • 从不同建筑物记录的数据值,例如1号楼的室内温度和2号楼记录的室内温度
  • 添加数据值(如能量)和非附加数据值(如温度)
  • 在特定建筑物中使用相同单位的两种不同测量,例如一楼温度和二楼温度。

如果大多数或所有这些示例都没有相同的粒度,这是否意味着每个建筑物的测量应该在关系数据仓库中有一个单独的事实表,在SSAS数据库中应该有一个单独的度量?如果是,那么如果我们假设我正在研究10个建筑物,每个100个测量值,那么我会看1000个测量值。这似乎不对,但似乎我正在处理一个有许多不同测量粒度的数据模型。

我发现的几乎所有例子都与金融或零售有关,这些例子包括显然是加法或可数的措施,如美元金额或项目。因此,这些例子并没有多大帮助。

1 个答案:

答案 0 :(得分:1)

  • 如果使用所有维度(时间,建筑物等)的相同交集收集,则具有不同单位的数据值可以处于相同的颗粒。在该示例中,温度和能量值将是事实表中的单独列。不建议使用单个事实列来表示具有不同单位的度量。

  • 如果您需要能够同时报告两个时间间隔,那么具有不同采样率的数据值将不会是同一颗粒。但是,如果您可以在更细粒度的间隔上标准化报表,则可以简单地将粗粒度值复制到更细粒度的行中。例如,您可以使用TemperaturePerMinute列和TemperaturePer15Minute列,在该间隔内的所有分钟值中重复15分钟的间隔值。但是,在报告粗粒度列时,在使用聚合(计数等)时需要小心。此外,如果需要深入到样本级别,则可能需要为每个区间类型使用单独的事实表。

  • 来自不同建筑物的数据值当然可以记录在同一颗粒的单个事实表中。您只需将建筑物尺寸链接到每个测量样本的事实表。

  • 在OLAP模型中,度量通常是相互独立的,因此可以将相加的和非相加的值简单地表示为单独的列。

  • 在这种情况下,您可以扩展Building维度以包含Floor层次结构,并将您的事实表记录链接到Floor grain。但是,如果您需要能够将某些样本链接到建筑物并将一些样本链接到楼层,那么您可能需要使用parent-child dimension(可能是位置维度抽象建筑物和楼层),您可以将其链接到您的事实表到建筑物或楼层。

我发现,当星型模式的组织不清楚时,有助于了解如何报告数据。这应该有助于减少您必须创建的多维数据集的数量。但是,一般情况下,最好不要尝试将OLAP模型标准化或使其过于通用(即使用单个列来表示温度和能量)。