Как обрабатывать измерения с похожими атрибутами?

У меня есть следующие объекты в моей витрине данных:

  • Местоположение: содержит такую ​​информацию, как страна, город и т. д.
  • Пользователи: содержит информацию о пользователе, включая его адрес, страну и город.

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

У меня нет опыта в многомерном моделировании и хранении данных, поэтому я не знаю, какой из них лучше:

  1. Пусть оба измерения содержат одни и те же атрибуты
  2. Поместите атрибуты в таблицу, которой они принадлежат (в данном случае это измерение «Местоположение»).

person Amous    schedule 18.05.2017    source источник


Ответы (1)


Вариант 1 ближе к пути Кимбалла. Многомерное моделирование не ставит во главу угла предотвращение дублирования данных. В этом случае они будут утверждать, что данные «принадлежат» нескольким таблицам. Пользователи имеют информацию о своем адресе, так что это информация о пользователе, она принадлежит пользователю.

Важно то, что данные соответствуют именам полей и характеру контента — это зависит от вас, как от лица, ответственного за ETL / DW, чтобы убедиться, что это так.

Многие люди выбирают вариант 2. Таким образом, я не знаю природу вашего факта (поэтому я могу ошибаться), но похоже, что если вы хотите узнать местоположение пользователя, у вас будет ключ от измерение, а не факт, что было бы структурой «снежинки». Они не всегда ошибочны, но не позволяют получить максимальную отдачу от многомерной модели.

person Rich    schedule 19.05.2017
comment
Допустим, я пытаюсь измерить продукты, купленные пользователем (клиентом) в определенном месте в определенный день. Моя таблица фактов описывает эти транзакции. Один из вопросов, на который я хочу ответить, касается различных областей (местоположений), в которых пользователи покупают товары. - person Amous; 19.05.2017
comment
Если это местоположение пользователя, а не магазин, в котором он его купил, то это местоположение будет указано в таблице пользовательских измерений. - person Rich; 19.05.2017
comment
Меня больше интересует местонахождение продукта (например, где продукт был куплен). В этом случае имеет ли смысл указать местоположение в измерении продукта? Если это относится к измерению продукта, то действительно ли мне нужно измерение местоположения? - person Amous; 19.05.2017
comment
Это зависит от того, откуда поступают данные о вашем местоположении для покупки. если это «местоположение клиента», которое вы знаете о клиенте, поместите его в измерение клиента. если это местоположение розничной торговой точки, поместите его как местоположение в измерении розничной торговой точки. Если это местоположение, которое просто указано в источнике данных факта для каждой транзакции покупки (независимо от клиента), то поместите его в собственное измерение, на которое ссылается факт. - person Rich; 19.05.2017
comment
Ах, данные о местоположении - это местонахождение клиента. Я помещу это в измерение клиента. Делая это, мне не понадобится измерение местоположения? - person Amous; 19.05.2017