2015-03-09 9 views
-1

Я пытаюсь создать схему Mondrian, которая будет использоваться в Saiku. Остальная часть схемы работает правильно, но основным фильтром нет. Я пробовал несколько способов сделать эту работу, но до сих пор я всегда получаю дубликаты.Дублирует при фильтрации по группе с Mondrian

Эта проблема может быть дублирована только двумя таблицами, которые мы будем называть fact_table и user_group. fact_table содержит идентификатор пользователя и такие меры, как:

user_id|amount 
1  |10 
2  |15 
3  |17 

таблица user_group содержит user_id и группа (ы) она принадлежит. Если пользователь принадлежит к нескольким группам, она будет иметь несколько рядов

user_id|group_id 
1  |100 
1  |200 
2  |100 

Каждый раз, когда я запускаю запрос для групп 100 и 200 я получаю неверные данные:

user_id|amount 
1  |20 
2  |15 

Обратите внимание, что сумма для пользователя 1 дублируется, поскольку он принадлежит к двум группам. Проблема в том, что измерение не ожидает дублирования идентификатора. Есть ли способ сделать эту работу?

ответ

0

Кажется, ваша схема хранилища данных не соответствует правилам star schema. Ваша таблица размеров user_group должна содержать только один ключ столбец с уникальными значениями (колонка user_id недостаточна).

Более возможные решения начинают играть:

1) Добавление group_id столбца (fact_table приводит к продублировать сумма записей).

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

user_id | group_id | amount 
1  | 100  | 10 
1  | 200  | 10 
2  | 100  | 15 
3  | #null | 17 

2) Рассмотрим fact_table и user_group таблицы как размеры и новый таблица фактов на них сверху.

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

new_fact_key | user_id | group_id 
1   | 1  | 100  
2   | 1  | 200  
3   | 2  | 100  
4   | 3  | #null 

первый Таблица размеров:

user_id|amount 
1  |10 
2  |15 
3  |17 

второй Таблица размеров:

group_id 
100 
200 
100  

Вы можете заменить #null значения суррогатными ключами. Я рекомендую прочитать эту книгу о моделировании хранилища данных The Data Warehouse Toolkit, 3rd Edition, чтобы узнать больше о концепциях звездной схемы и суррогатных ключах.

+0

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

 Смежные вопросы

  • Нет связанных вопросов^_^