Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
 SSAS - правильный many-to-many  [new]
max_kov
Member

Откуда:
Сообщений: 40
Всем доброго времени суток,
Пожалуйста, наставьте на путь истинный в следующем вопросе - возможно ли сделать правильный many-to-many как:
Есть измерение SalesSigns:
SalesSign_IDDescription
0«Реализация внутренняя»
1«Реализация на сторону»
2«Реализация по плану продаж»

Есть таблица фактов Sales (Date_ID, Order_ID, BridgeSalesSign_ID, Amount)
Есть бридж и измерение BridgeSalesSigns, выглядит как:
SalesSign_IDBridgeSalesSign_ID
00
110
111
211

Т.е. в бридже перечислены возможные комбинации признаков продажи, и в таблице фактов отражен этот же ключ.
Сделал в кубе many-to-many (SalesSigns -> бридж BridgeSalesSigns -> Sales) на основе этой схемы, но, предсказуемо, при процессинге ругается на не-уникальность ключа измерения BridgeSalesSigns (BridgeSalesSigns_ID)
Проигнорировал для него KeyDuplicate, процессинг прошел, но наверняка это неправильный путь.

Если немножко предыстории, то в таблице фактов изначально присутствовало отдельное поле для каждого признака, соответственно, нужно было делать отдельное измерение для каждого признака (наверняка, это самый правильный путь).
Но затем я решил попробовать конкатенировать поля признаков в одно поле и через бридж соединить с общей таблицей признаков (такую общую таблицу было бы удобно иметь даже просто из визуальных соображений).
AdventureWorks смотрел, но там бридж имеет уникальный составной ключ, да и вообще иной подход применяется…
22 май 17, 15:20    [20501552]     Ответить | Цитировать Сообщить модератору
 Re: SSAS - правильный many-to-many  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 405
max_kov,

Эээ, у вас тут продвинутый подход однако :)...
Классический M2M - измерения BridgeSalesSigns нет совсем. Есть измерение SalesSigns, в M2M таблице записываем
SalesFact_IDSalesSigh_ID
123100
123102
130230
130231

И дальше - делаем на основании M2M таблицы M2M measuregroup, и подвязываем через нее измерение SalesSigns.

В вашем примере - это подход к так называемой технологии компрессии M2M, описанной, например, здесь. Там вводятся 2 промежуточные таблицы и скрытое измерение SalesSign_Matrix. Связка будет такая
SalesFact -- SalesFact-Matrix M2M -- SalesSign Matrix Dim -- Matrix-SalesSigns M2M -- SalesSigns Dim
22 май 17, 16:49    [20501920]     Ответить | Цитировать Сообщить модератору
 Re: SSAS - правильный many-to-many  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 906
https://www.google.by/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjvop-K0oPUAhXF0RoKHUTuC_IQFggjMAA&url=http://www.sqlbi.com/wp-content/uploads/The_Many-to-Many_Revolution_2.0.pdf&usg=AFQjCNHXLS7lT-IJ7QRJ7VIH5zlt0jgWXw&sig2=duvS_8ceoaBJVuOzsAeEhQ

Очень толковая статья про M2M
Много чего там есть

зы где то там есть и бак-апы этих тестовых БД
22 май 17, 16:49    [20501921]     Ответить | Цитировать Сообщить модератору
 Re: SSAS - правильный many-to-many  [new]
bideveloper
Member

Откуда:
Сообщений: 144
max_kov, в измерении BridgeSalesSigns оставьте только один столбец BridgeSalesSign_ID с уникальными значениями, тогда все будет работать корректно. Связь с таблицей фактов Sales будет идти через группу мер BridgeSalesSigns, в которой 2 столбца.
22 май 17, 17:10    [20502009]     Ответить | Цитировать Сообщить модератору
 Re: SSAS - правильный many-to-many  [new]
bideveloper
Member

Откуда:
Сообщений: 144
Т. е. получается такая связь

Группа мер Sales - связь с промежуточным измерением BridgeSalesSigns по столбцу BridgeSalesSign_ID - связь с промежуточной группой мер BridgeSalesSigns - связь с измерением SalesSigns по столбцу SalesSign_ID.
22 май 17, 17:14    [20502026]     Ответить | Цитировать Сообщить модератору
 Re: SSAS - правильный many-to-many  [new]
bideveloper
Member

Откуда:
Сообщений: 144
Еще уточню, чтобы было совсем понятно )
По настройкам в SSAS:
Группа мер BridgeSalesSigns связана напрямую с измерением BridgeSalesSigns по столбцу BridgeSalesSign_ID
и напрямую с измерением SalesSigns по столбцу SalesSign_ID.
Группа мер Sales связана напрямую с измерением BridgeSalesSigns по столбцу BridgeSalesSign_ID и как many to many с измерением SalesSigns через промежуточную группу мер BridgeSalesSigns.
22 май 17, 17:23    [20502066]     Ответить | Цитировать Сообщить модератору
 Re: SSAS - правильный many-to-many  [new]
max_kov
Member

Откуда:
Сообщений: 40
"Если б Остап узнал, что он играет такие мудреные партии и сталкивается с такой испытанной защитой, он крайне бы удивился"
(Источник указывать, думаю, необязательно :-))

Благодарю всех, кто откликнулся, буду дальше копать!
В правильном (теперь уже) направлении! :-)

Осподи! Столько накручено вокруг простого
Select SUM(Sales.Amount), SalesSigns.SalesSign_ID From SalesSigns
Left Outer Join BridgeSalesSigns On SalesSigns.SalesSign_ID=BridgeSalesSigns.SalesSign_ID
Left Outer Join Sales ON Sales.BridgeSalesSign_ID = BridgeSalesSigns.BridgeSalesSign_ID
Group By SalesSigns.SalesSign_ID
22 май 17, 18:17    [20502259]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить