Разделить таблицу фактов из-за одного недостающего внешнего ключа? - PullRequest
0 голосов
/ 21 февраля 2019

Представьте, что у нас есть два разных сообщения: CarDataLog CarStatusLog

CarDataLog содержит данные, которые имеют прямое отношение к автомобилю и соответствующему Person и содержат данные оавтомобиль.

CarStatusLog содержит данные о том же автомобиле, как упомянуто выше, у которого в журнале был указан клиент.Но на этот раз данные статус.Для таких полей, как: «CleaningState»: «NotCleaned» или «Cleaned».

Оба сообщения журнала содержат Car_ID.Будем ли мы создавать одну таблицу фактов с внешними ключами Car и Person и иметь риск, что person_id иногда будет нулевым, потому что он не задан? Или лучше будет создать две таблицы фактов с риском наличия «зерна»распространяться?

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

Я новичок в хранилище данных и надеюсь, что кто-то может мне помочьэтот вопрос?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Вам нужны dims как Car_dim, Person_dim, Status_dim (как значения CleaningState, NotCleaned "или" Cleaned) и Date_dim.Person_dim может иметь строку с «Неизвестным» именем человека, когда вы получаете нулевое имя человека.

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

Loaddim идентификаторы сверху Dims в вашей таблице фактов на основе полученных вами данных.Убедитесь, что в двух журналах есть поля даты, чтобы вы могли присоединиться к обоим журналам с идентификатором Car_id, и когда дата в обоих журналах совпадает с этим идентификатором Car_id.Если вы получаете сценарий, когда Car_id существует в CarDataLog, но отсутствует в CarStatusLog, то вам нужно создать строку «Неизвестный статус» в Status_dim, чтобы вы могли использовать его в таблице фактов.Удачи!

0 голосов
/ 21 февраля 2019

Стандартная практика в хранилищах данных - создание фиктивной строки для таблиц измерений, которая используется для сопоставления данных "НЕИЗВЕСТНО".Это предотвращает NULLS во внешних ключах в таблице фактов.

В зависимости от вашего варианта использования у вас может быть несколько типов «НЕИЗВЕСТНЫХ» данных.Например, вы можете использовать клавишу -1 для «НЕИЗВЕСТНО» и -2 для «НЕ ПРИМЕНИМО» размерных данных.

См. Также: https://www.kimballgroup.com/2010/10/design-tip-128-selecting-default-values-for-nulls/

...