2016-09-16 36 views
0

我有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.00到晚上6.00或任何其他自定义过滤器。

而其他表只有如下所示的状态改变的数据 -

<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>

现在我想这个数据合并到一个单一的表中任一粒度的(其是最合适的),我也应该能够应用自定义过滤器。

我无法在这里做出设计决定。考虑上面的两个表作为事实表,并提出一种方法,以便我可以无缝合并它并将其流入数据仓库中的单个事实表。

+0

如果可能,请始终以最好的粒度进行。你想达到什么目的?您需要如何呈现数据的规则? – tobi6

+0

是的,我可以以最好的粒度存储数据。但是这会导致数百万条记录。例如。 4000系统* 730(2年数据)* 48(半小时间隔数据)〜= 140160000记录。 –

+0

好的,谢谢。对我来说似乎不算太大。我的其他问题呢? – tobi6

回答

0

源数据

正如你所说,你的数据是这样的:

表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 

表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 

我没有添加时间因为这个领域可以很容易地在运行计算。无论如何,如果你的规则与我所假设的不同(基本上:,如果没有发现状态0/NULL),相应地改变它。

这应该是您的要求和您想要做的分析的良好基础。