【发布时间】:2016-09-19 21:20:12
【问题描述】:
我有 2 个不同粒度的表。第一个表有半小时级别的粒度数据,如下所示 - 它显示任何系统在半小时间隔内处于特定状态,如 state1、state2 等......
<table>
<tr>
<th>SysName</th>
<th>StartTime</th>
<th>EndTime</th>
<th>State1</th>
<th>State2</th>
</tr>
<tr>
<td>Sys1</td>
<td>12:00</td>
<td>12:30</td>
<td>10</td>
<td>20</td>
</tr>
<tr>
<td>Sys2</td>
<td>12:30</td>
<td>01:00</td>
<td>12</td>
<td>18</td>
</tr>
<tr>
<td>Sys3</td>
<td>01:00</td>
<td>01:30</td>
<td>16</td>
<td>14</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
注意:- 在这里,我可以轻松地应用工作时间/班次的自定义过滤器,例如从早上 9 点到晚上 6 点或任何其他自定义过滤器。
而另一张表只有状态变化数据如下图——
<table>
<tr>
<th>SysName</th>
<th>StartTime</th>
<th>EndTime</th>
<th>Duration(mins)</th>
<th>StateName</th>
</tr>
<tr>
<td>Sys1</td>
<td>12:00</td>
<td>12:45</td>
<td>45</td>
<td>State1</td>
</tr>
<tr>
<td>Sys2</td>
<td>12:45</td>
<td>01:20</td>
<td>35</td>
<td>State2</td>
</tr>
<tr>
<td>Sys3</td>
<td>01:20</td>
<td>04:00</td>
<td>160</td>
<td>State1</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
现在我想以任一粒度(最合适)将这些数据合并到一个表中,并且我也应该能够应用自定义过滤器。
我无法在这里做出设计决定。将上述 2 个表视为事实表,并提出一种方法,以便我可以无缝合并它们并将其流向数据仓库中的单个事实表。
【问题讨论】:
-
如果可能,请始终使用最精细的粒度。你想达到什么目的?您必须如何呈现数据是否存在规则?
-
是的,我可以以最精细的粒度存储数据。但这将导致数百万条记录。例如。 4000 个系统 * 730(2 年数据)* 48(半小时间隔数据)~= 140160000 条记录。
-
好的,谢谢。对我来说似乎不是太大。我的其他问题呢?
-
我想通过基于不同状态数据的不同计算来展示每个系统的性能。基于状态信息的 TOP 5 使用最多/最少的系统。此外,我想应用我提到的自定义日历。
标签: database data-modeling data-warehouse