Меня попросили моделировать звездную диаграмму.
У меня есть 3 размеры:Таблица фактических снимков с большими размерами
- Дата (день, месяц, год, неделя, квартал, ...)
- место (500 различных значений)
- продукта (80k различные продукты)
Главный вопрос: сколько предметов (продуктов) хранится в конце дня в каждом месте.
После некоторого времени обучения в отношении мерного моделирования. Я думаю, что я должен реализовать таблицу периодических снимков . Однако, прочитав в «Документах Кимбалла», я заметил, что периодический снимок требует записи для каждой комбинации измерений. Это означает, что я должен добавить 40M строк каждый день (80k * 500).
Зная, что продукты являются (реальными) медленными двигателями и что многие магазины хранят ноль продуктов в течение длительного времени, это звучит как крайний перебор.
FYI транзакции в исходной БД составляют 150 тыс. Строк после трех лет.
Должен ли я действительно добавлять 40M строк каждый день, или я могу просто добавить непустые магазины с указанными вами продуктами? Также, если по какой-либо причине в один прекрасный день все магазины пусты, следует ли сделать запись на этот день (с размерами N/A для магазина и продукта)?
Вы всегда должны идти с самым низким зерном, так как вы не знаете вопросов, которые будут заданы позже. Если вы определяете правило для обработки пустых хранилищ с помощью «N/A», вы можете это сделать - или, может быть, спросите бизнес, как они будут идентифицировать этот случай и модель после этого. – tobi6
Я согласен с самым низким зерном, но я не хочу делать его транзакционным, потому что это сделает мой запрос более сложным (цель состоит в том, чтобы иметь график последних десяти дней для каждого магазина и с транзакционным зерном, будет быть много дата не заполнено) – Bee157
Я бы всегда шел с более сложным запросом и хорошими показателями, чтобы отпустить самую низкую детализацию. – tobi6