Настройка временных измерений для разрешений в схеме «звезда» - PullRequest
1 голос
/ 23 января 2020

Я читал некоторые типы архитектуры для обработки OLAP, в частности концепцию Star Schema. В настоящее время я настраиваю базу данных для тестирования.

Моя ситуация

У меня 750 датчиков, каждый из которых будет каждую минуту отправлять данные в базу данных SQL. В настоящее время мой подход заключается в публикации , если есть изменение в значении. Подумав об этом немного дальше, я задаюсь вопросом, может ли это создать проблему при определении, есть ли потеря данных по сравнению с неизменным значением, и заставляет меня пересмотреть запланированные проводки.

Программное обеспечение, которое вставляет значение датчика, отправляет отметка времени в формате 2020-01-23 13:48:52. Наряду с этим, имя датчика и значение датчика также публикуются. Итак, 4 столбца в моей таблице фактов, если вы учитываете первичный ключ.

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

Вот то, что я вроде представлял в настоящее время, но я потерян о том, как обращаться с измерением времени с учетом нужного мне разрешения.

Star Schema Mock-up

Мои вопросы

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

Это действительная проблема для определения потери данных или есть другой способ ее устранения?

Учитывая мое необходимое разрешение, что будет примерное измерение времени К как?

1 Ответ

2 голосов
/ 24 января 2020

Если я правильно понимаю вашу ситуацию, вы записываете значения, которые представляют некоторый статус системы в определенный момент времени. Другими словами, вы захватываете снимок системы во времени. В звездообразной схеме вы должны использовать "periodi c таблица фактов снимка" . Такие таблицы фактов фиксируют значения независимо от того, изменились они или нет, потому что их зерно является единицей даты / времени, а не транзакцией.

Измерение времени можно моделировать несколькими способами. Я бы сделал следующее:

Создание измерения «Дата» для работы с календарными датами. Зерно: один календарный день. Диапазон: со дня, когда у вас есть данные, до сегодняшнего дня в том числе.

Создайте измерение «Время» для работы со временем суток. Зерно: одна минута. Интервал: 24 часа (поэтому общее количество записей в этой таблице составляет 60 минут * 24 часа).

Добавление ключей даты и времени в таблицу фактов.

Я бы также сохранил отметку времени как вырожденное измерение в таблице фактов, чтобы иметь доступ к секундам, если это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...