2016-09-16 5 views
0

У меня есть 2 таблицы с разной степенью детализации. Первая таблица имеет получаса данные гранулярностей часов уровня, как показано ниже -это показывает, что любая система находилась в определенном состоянии во время интервала получаса, как State1, состояние2 и так далее ...Объединить различные данные детализации

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

Теперь я хочу, чтобы объединить эти данные в одну таблицу в любой зернистости (который является наилучшим подходящим), и я также должен использовать пользовательские фильтры.

Здесь я не могу принять дизайнерское решение. Рассмотрите выше 2 таблицы как таблицы фактов и предложите подход, чтобы я мог беспрепятственно объединить его и передать его в единую таблицу фактов в хранилище данных.

+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), измените его соответствующим образом.

Это должно быть хорошей основой для ваших требований и анализа, который вы хотите сделать.