合并不同粒度的数据
Merge different granularity data
我有 2 个 table 具有不同的粒度。首先 table 有半小时级别的粒度数据,如下所示 - 它表明任何系统在半小时间隔内处于特定状态,如 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>
注意:- 在这里,我可以轻松地应用工作的自定义过滤器 hours/shifts,例如从早上 9 点到晚上 6 点或任何其他自定义过滤器。
而另一个 table 只有状态更改数据,如下所示 -
<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>
现在我想将这些数据合并到一个 table 中的任一粒度(这是最好的 suitable),我也应该能够应用自定义过滤器。
我无法在这里做出设计决定。将以上 2 table 视为事实 table 并提出一种方法,以便我可以无缝合并它并将其流向数据仓库中的单个事实 table。
源数据
如您所述,您的数据如下所示:
Table 1:
SysName StartTime EndTime State1 State2
Sys1 12:00 12:30 10 20
Sys2 12:30 01:00 12 18
Sys3 01:00 01:30 16 14
Table 2:
SysName StartTime EndTime Duration(mins) StateName
Sys1 12:00 12:45 45 State1
Sys2 12:45 01:20 35 State2
Sys3 01:20 04:00 160 State1
组合
正如我之前所说,我总是会以尽可能低的粒度进行。我必须在这里做一些假设,因为我不知道确切的源数据和规则哪些数据将被计算在内,哪些数据将被计算在内 - 这就是我添加一些 (?) 的原因。所以在我看来,将这两者结合起来的规则结果如下所示:
SysName StartTime EndTime State1 State2 Duration StateName
Sys1 12:00 12:30 10 20 (calcul.) State1
Sys1 12:30 12:45 0 (?) 0 (?) (calcul.) State1
Sys2 12:30 12:45 12 18 (calcul.) NULL (?)
Sys2 12:45 01:00 12 18 (calcul.) State2
Sys2 01:00 01:20 0 (?) 0 (?) (calcul.) State2
Sys3 01:00 01:20 16 14 (calcul.) NULL (?)
Sys3 01:20 01:30 16 14 (calcul.) State1
Sys3 01:30 04:00 0 (?) 0 (?) (calcul.) State1
我没有添加 Duration 因为这个字段可以很容易地即时计算。无论如何,如果您的规则与我假设的不同(基本上:如果未找到状态设置 0 / NULL),请相应地更改它。
这应该是您的要求和要进行的分析的良好基础。
我有 2 个 table 具有不同的粒度。首先 table 有半小时级别的粒度数据,如下所示 - 它表明任何系统在半小时间隔内处于特定状态,如 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>
注意:- 在这里,我可以轻松地应用工作的自定义过滤器 hours/shifts,例如从早上 9 点到晚上 6 点或任何其他自定义过滤器。
而另一个 table 只有状态更改数据,如下所示 -
<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>
现在我想将这些数据合并到一个 table 中的任一粒度(这是最好的 suitable),我也应该能够应用自定义过滤器。
我无法在这里做出设计决定。将以上 2 table 视为事实 table 并提出一种方法,以便我可以无缝合并它并将其流向数据仓库中的单个事实 table。
源数据
如您所述,您的数据如下所示:
Table 1:
SysName StartTime EndTime State1 State2
Sys1 12:00 12:30 10 20
Sys2 12:30 01:00 12 18
Sys3 01:00 01:30 16 14
Table 2:
SysName StartTime EndTime Duration(mins) StateName
Sys1 12:00 12:45 45 State1
Sys2 12:45 01:20 35 State2
Sys3 01:20 04:00 160 State1
组合
正如我之前所说,我总是会以尽可能低的粒度进行。我必须在这里做一些假设,因为我不知道确切的源数据和规则哪些数据将被计算在内,哪些数据将被计算在内 - 这就是我添加一些 (?) 的原因。所以在我看来,将这两者结合起来的规则结果如下所示:
SysName StartTime EndTime State1 State2 Duration StateName
Sys1 12:00 12:30 10 20 (calcul.) State1
Sys1 12:30 12:45 0 (?) 0 (?) (calcul.) State1
Sys2 12:30 12:45 12 18 (calcul.) NULL (?)
Sys2 12:45 01:00 12 18 (calcul.) State2
Sys2 01:00 01:20 0 (?) 0 (?) (calcul.) State2
Sys3 01:00 01:20 16 14 (calcul.) NULL (?)
Sys3 01:20 01:30 16 14 (calcul.) State1
Sys3 01:30 04:00 0 (?) 0 (?) (calcul.) State1
我没有添加 Duration 因为这个字段可以很容易地即时计算。无论如何,如果您的规则与我假设的不同(基本上:如果未找到状态设置 0 / NULL),请相应地更改它。
这应该是您的要求和要进行的分析的良好基础。