Как смоделировать ТАБЛИЦУ ФАКТОВ с динамическим сбором значений из таблицы ИЗМЕРЕНИЙ

#database #database-design #dimensional-modeling

#База данных #база данных-дизайн #dimensional-моделирование

Вопрос:

Для этого примера мы можем рассмотреть таблицу фактов «Сверхавария». Если есть факт аварии, будет один водитель и несколько водителей (в контексте совместного использования поездок). Поскольку традиционное хранилище данных OLAP не поддерживает такие структуры, как Карты, как создать такую таблицу фактов?

Большая часть примеров в книге Ральфа-Кимбалла предназначена для статических групп, таких как владельцы нескольких учетных записей или множественный диагноз в факте. Однако все они являются статической «группой мостов измерений»

Есть ли лучший способ, чем dimension-bridge-group, для решения этой проблемы в DW (например, Vertica. Teradata ) где нет структуры карты?

DIM_DRIVER

DRIVER_SK

ИМЯ_ДРАЙВЕРА

DIM_RIDER

RIDER_SK

ИМЯ_ПУТЕШЕСТВЕННИКА

FACT_ACCIDENT

ACCIDENT_ID_DD

DRIVER_SK

КАК добавить несколько участников???

Комментарии:

1. Это отношение «многие ко многим», и вам понадобится ассоциативная таблица для привязки водителей к авариям.

2. Привет — можете ли вы уточнить, какие у вас проблемы с группой-мостом измерений, что означает, что вы ищете лучшее решение, т.Е. каково ваше определение «лучше»?

3. @NickW Если есть миллион аварий, то может быть 5 миллионов гонщиков… таким образом, название Dimension-bridge является неправильным, тогда это становится фактом .. поскольку соединение факта с фактом нехорошо.. Я должен создать fact_accident_details, а затем сделать его похожим… accident_dd, driver_id .. поэтому при необходимости я могу выполнить детализацию… Однако мне не нужна дополнительная таблица ФАКТОВ… если DW находится на озере, то я могу использовать MAP struct и хранить в Parquet в ORC.. В Redshift или Vertica у меня нет структуры КАРТЫ.. итак, моя дилемма заключается в выборе между FACT_ACCIDENT_DETAIL и Bridge-Dimension …

4. Я не уверен, откуда, по вашему мнению, берется вторая таблица фактов / зачем это нужно? У вас есть измерение Riders со всеми вашими Riders и таблица Riders-Group с ключами для RiderGroup и Rider. Когда вы добавляете запись к факту аварии, вы генерируете новый ключ RiderGroup, заполняете им таблицу фактов и добавляете записи в таблицу Riders-Group, по 1 на каждого гонщика, с помощью RiderGroup SK и Rider SK

5. @NickW С точки зрения количества записей таблица измерений Riders-Group-Bridge содержит больше записей, чем таблица фактов об авариях … так следует ли ее называть Fact-Riders-Group?? Измерения должны быть меньше фактов …