Должны ли мы поместить все поля, относящиеся к «пользователю», в таблицу «dim_user» в хранилище данных?

#data-warehouse #olap #star-schema

#хранилище данных #olap #звездная схема

Вопрос:

Учитывая, что хранилище данных содержит одну таблицу фактов и три таблицы измерений.

Таблица фактов:

  • fact_orders

Таблицы измерений:

  • dim_user
  • dim_product
  • dim_date

Все данные этих таблиц извлекаются из наших бизнес-систем.

В бизнес-системе у пользователя есть много атрибутов, некоторые из которых могут меняться со временем ( mobile , avatar_url , nick_name , status ), некоторые другие не изменятся после создания записи ( id , gender , register_channel ).

Итак, в целом в dim_user таблице, какие поля мы должны использовать и почему?

Ответ №1:

У Dim_User должны быть как изменяемые, так и неизменяемые поля. В денормализованной модели предпочтительно хранить все связанные атрибуты измерения в одной таблице.

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

Если вы хотите сохранить историю изменений пользователя, вы можете рассмотреть возможность реализации медленно меняющихся измерений. В противном случае вы можете обновлять атрибуты измерения по мере их изменения. Это называется SCD Type I.

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

1. Хранилище данных будет в основном использоваться для анализа куба OLAP. Я прочитал несколько статей, в которых утверждается, что измерения должны содержать только атрибуты, которые можно использовать для нарезки куба. В моем случае изменяемый атрибут, скажем, поле nickname , я не думаю, что его можно использовать для нарезки куба. Должны ли мы по-прежнему помещать его в таблицу измерений?

2. Единственное использование nickname поля, как я мог подумать, — это когда мы разрезаем куб и хотим получить подробную информацию о пользователях в этом кубоиде. Это предполагаемое использование хранилища данных?

3. @mingchau, нет. Это неправда. У вас могут быть дополнительные фильтры, которые использовались для ограничения данных. См. Разницу между срезами и фильтрами . Если атрибут можно использовать как фильтр или срез, добавьте его в измерение. В противном случае не добавляйте.

4. Венка, спасибо за ответ. Не могли бы вы отправить вам сообщение по электронной почте? Поскольку я совсем новичок в теме DW, и у меня есть много основных вопросов по этому поводу.

5. @mingchau, вы можете задать разные вопросы здесь или как отдельный вопрос. Это будет полезно и для других, поскольку оно общедоступно и полезно в будущем