powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / SSAS - правильный many-to-many
7 сообщений из 7, страница 1 из 1
SSAS - правильный many-to-many
    #39457434
max_kov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток,
Пожалуйста, наставьте на путь истинный в следующем вопросе - возможно ли сделать правильный many-to-many как:
Есть измерение SalesSigns:
SalesSign_IDDescription0«Реализация внутренняя»1«Реализация на сторону»2«Реализация по плану продаж»
Есть таблица фактов Sales (Date_ID, Order_ID, BridgeSalesSign_ID, Amount)
Есть бридж и измерение BridgeSalesSigns, выглядит как:
SalesSign_IDBridgeSalesSign_ID 00110111211
Т.е. в бридже перечислены возможные комбинации признаков продажи, и в таблице фактов отражен этот же ключ.
Сделал в кубе many-to-many (SalesSigns -> бридж BridgeSalesSigns -> Sales) на основе этой схемы, но, предсказуемо, при процессинге ругается на не-уникальность ключа измерения BridgeSalesSigns (BridgeSalesSigns_ID)
Проигнорировал для него KeyDuplicate, процессинг прошел, но наверняка это неправильный путь.

Если немножко предыстории, то в таблице фактов изначально присутствовало отдельное поле для каждого признака, соответственно, нужно было делать отдельное измерение для каждого признака (наверняка, это самый правильный путь).
Но затем я решил попробовать конкатенировать поля признаков в одно поле и через бридж соединить с общей таблицей признаков (такую общую таблицу было бы удобно иметь даже просто из визуальных соображений).
AdventureWorks смотрел, но там бридж имеет уникальный составной ключ, да и вообще иной подход применяется…
...
Рейтинг: 0 / 0
SSAS - правильный many-to-many
    #39457550
Ferdipux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
max_kov,

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

В вашем примере - это подход к так называемой технологии компрессии M2M , описанной, например, здесь . Там вводятся 2 промежуточные таблицы и скрытое измерение SalesSign_Matrix. Связка будет такая
SalesFact -- SalesFact-Matrix M2M -- SalesSign Matrix Dim -- Matrix-SalesSigns M2M -- SalesSigns Dim
...
Рейтинг: 0 / 0
SSAS - правильный many-to-many
    #39457551
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
SSAS - правильный many-to-many
    #39457564
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max_kov, в измерении BridgeSalesSigns оставьте только один столбец BridgeSalesSign_ID с уникальными значениями, тогда все будет работать корректно. Связь с таблицей фактов Sales будет идти через группу мер BridgeSalesSigns, в которой 2 столбца.
...
Рейтинг: 0 / 0
SSAS - правильный many-to-many
    #39457571
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т. е. получается такая связь

Группа мер Sales - связь с промежуточным измерением BridgeSalesSigns по столбцу BridgeSalesSign_ID - связь с промежуточной группой мер BridgeSalesSigns - связь с измерением SalesSigns по столбцу SalesSign_ID.
...
Рейтинг: 0 / 0
SSAS - правильный many-to-many
    #39457584
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще уточню, чтобы было совсем понятно )
По настройкам в SSAS:
Группа мер BridgeSalesSigns связана напрямую с измерением BridgeSalesSigns по столбцу BridgeSalesSign_ID
и напрямую с измерением SalesSigns по столбцу SalesSign_ID.
Группа мер Sales связана напрямую с измерением BridgeSalesSigns по столбцу BridgeSalesSign_ID и как many to many с измерением SalesSigns через промежуточную группу мер BridgeSalesSigns.
...
Рейтинг: 0 / 0
SSAS - правильный many-to-many
    #39457636
max_kov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Если б Остап узнал, что он играет такие мудреные партии и сталкивается с такой испытанной защитой, он крайне бы удивился"
(Источник указывать, думаю, необязательно :-))

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

Осподи! Столько накручено вокруг простого
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
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / SSAS - правильный many-to-many
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]