Звездная схема «многие ко многим» для данных временных рядов - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть вопрос моделирования DataWarehouse / звездообразной схемы.

У меня есть показания счетчика (факты) для разных мест (измерений). Каждое место имеет несколько организаций в разных ролях. Я хотел бы смоделировать это в схеме хранилища данных. Текущий план:

fact_meter_readings
   timestamp,
   location_id,
   meter_reading (number)

dim_locations
   location_id
   name

dim_location_organisations
   location_id
   organisation_id
   role_id
   organisation_name
   role_name

Unique key (location_id, organisation_id, role_id)

Последняя таблица, о которой идет речь. Хотя таблица имеет уникальное ограничение, уникальное ограничение не является общим для таблицы фактов, о которой я не совсем понимаю.

Я хочу использовать эту схему для ответа на такие вопросы, как Сумма метрического чтения, сгруппированного по организации, в которой они находятся в роли «оператор»

Например,

select 
  lo.organisation_name,
  sum(meter_reading) 
from fact_meter_readings m
inner join dim_location_organisations lo
on lo.location_id = m.location_id
where lo.role_id = xyz
group by lo.organisation_name

Есть ли здесь проблема, поскольку таблица измерений не имеет уникального ключа, который используется совместно с таблицей фактов? Очевидно, что запросы нужно обрабатывать осторожно, чтобы избежать двойного учета фактов.

1 Ответ

0 голосов
/ 09 апреля 2020

Я бы создал новую таблицу под названием организация, поскольку расположение и организация - это две разные концепции. Затем вы можете запросить организацию через таблицу местоположений:

fact_meter_readings
   timestamp,
   location_id,
   meter_reading (number)

dim_locations
   location_id
   name

dim_location_organisations
   location_id
   role_id
   role_name

dim_organization
   organization_id
   location_id
   organisation_name

И, вероятно, «роли» также заслуживают своего собственного измерения. Запрос будет немного длиннее, но я считаю, что более понятным будет дать каждому понятию свое измерение и в будущем окупится

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