2016-09-16 42 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),相應地改變它。

這應該是您的要求和您想要做的分析的良好基礎。