2016-10-06 4 views
2

Меня попросили моделировать звездную диаграмму.
У меня есть 3 размеры:Таблица фактических снимков с большими размерами

  1. Дата (день, месяц, год, неделя, квартал, ...)
  2. место (500 различных значений)
  3. продукта (80k различные продукты)

Главный вопрос: сколько предметов (продуктов) хранится в конце дня в каждом месте.

После некоторого времени обучения в отношении мерного моделирования. Я думаю, что я должен реализовать таблицу периодических снимков . Однако, прочитав в «Документах Кимбалла», я заметил, что периодический снимок требует записи для каждой комбинации измерений. Это означает, что я должен добавить 40M строк каждый день (80k * 500).
Зная, что продукты являются (реальными) медленными двигателями и что многие магазины хранят ноль продуктов в течение длительного времени, это звучит как крайний перебор.
FYI транзакции в исходной БД составляют 150 тыс. Строк после трех лет.

Должен ли я действительно добавлять 40M строк каждый день, или я могу просто добавить непустые магазины с указанными вами продуктами? Также, если по какой-либо причине в один прекрасный день все магазины пусты, следует ли сделать запись на этот день (с размерами N/A для магазина и продукта)?

+0

Вы всегда должны идти с самым низким зерном, так как вы не знаете вопросов, которые будут заданы позже. Если вы определяете правило для обработки пустых хранилищ с помощью «N/A», вы можете это сделать - или, может быть, спросите бизнес, как они будут идентифицировать этот случай и модель после этого. – tobi6

+0

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

+0

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

ответ

2

Вы правильно смоделировали. Это зависит от спецификаций, но обычно вы храните только те продукты, которые присутствуют в местоположении (вы не храните нули), что может привести к тому, что число будет значительно ниже максимального значения 80k.

Если вы хотите уменьшить количество своих номеров, вы можете сохранить последние N дней, а затем начать перемещать данные в «холодной» таблице. Вы сохраняете (скажем) последний 10-дневный снимок, а затем только ежемесячные снимки в главной «горячей» таблице фактов.

Не исключайте возможность рассчитать моментальный снимок «на лету» в системе отчетов, в зависимости от вашей среды это может быть легко (например, в MDX или DAX). Возможны смешанные решения (т. Е. Только последний месяц, рассчитанный «на лету»).