powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / SSAS MDX query help
16 сообщений из 16, страница 1 из 1
SSAS MDX query help
    #39398016
xed1000000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

Помогите, пожалуйста, с решением задачи (с учетом того, что MDX очень плохо знаю):
Есть куб, условно
Measure - Volume
Dimensions - Period, Client ( Region, Address), Product (Brand, SKU).

Нужно посчитать общий оборот для каждого Address с учетом выбранного SKU или Brand.
Пример:
Region1 - Address1 - Brand1 - SKU1 -5
Region1 - Address1 - Brand1 - SKU2 -10
Region1 - Address1 - Brand1 - SKU3 -2
Region1 - Address1 - Brand1 - SKU4 -3
Region1 - Address1 - Brand2 - SKU1 -5
Region1 - Address1 - Brand2 - SKU2 -10
Region1 - Address1 - Brand2 - SKU3 -5
Total Address1 - 40

Region1 - Address2 - Brand1 - SKU1 -5
Region1 - Address2 - Brand1 - SKU2 -10
Region1 - Address2 - Brand1 - SKU5 -2
Region1 - Address2 - Brand1 - SKU6 -3
Total Address2 - 20

нужно, чтобы при выборе SKU5, volume был = 20. При выборе Brand2, volume = 40. Т.е. volume должен считаться как общий оборот по address, но также должен быть зависим от всех полей. Если выбран Region1 и Brand1, тогда volume = 60

Не знаю, доступно ли объяснил ;), но очень надеюсь на вашу помощь.
plz hlp!
...
Рейтинг: 0 / 0
SSAS MDX query help
    #39398407
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понял, то в SSAS такое делается не с помощью MDX, а путем создания связи многие ко многим.
...
Рейтинг: 0 / 0
SSAS MDX query help
    #39399172
xed1000000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bideveloper,

Спасибо за ответ. Но неужели MDX запросом это нельзя ни как реализовать. Насколько я знаю связь многие ко многим существенно тормозит работу куба, а учитывая, что куб и без этого достаточно массивный, может все же есть еще какие-нибудь решения?
...
Рейтинг: 0 / 0
SSAS MDX query help
    #39399428
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как через MDX я не знаю, может кто-нибудь другой подскажет. Но сомневаюсь, что это будет быстрее, так как по сути в MDX надо будет реализовать ту же связь многие ко многим.
...
Рейтинг: 0 / 0
SSAS MDX query help
    #39399431
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для many to many есть возможности по оптимизации, например, вот: https://blog.crossjoin.co.uk/2015/02/21/optimising-ssas-many-to-many-relationships-by-adding-redundant-dimensions/
...
Рейтинг: 0 / 0
SSAS MDX query help
    #39399592
Ferdipux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xed1000000...
нужно, чтобы при выборе SKU5, volume был = 20. При выборе Brand2, volume = 40. Т.е. volume должен считаться как общий оборот по address, но также должен быть зависим от всех полей. Если выбран Region1 и Brand1, тогда volume = 60

Не знаю, доступно ли объяснил ;)
Не очень. Правильно я понял, что если выбрали SKU5 - то нужно выводить Total Address 2 (он есть только там), Brand2 - Total Address 1 (то же самое, Brand2 есть только для Address1), Region1 + Brand1 = Total Addr1 + Total Addr2?
...
Рейтинг: 0 / 0
SSAS MDX query help
    #39399802
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет тут никаких M2M.
Достаточно все просто. Единственное, что не понятно почему в требованиях "...оборот для каждого Address...", а в примере "Если выбран Region1 и Brand1, тогда volume = 60...". Тогда уж 40 по первому адресу и 20 по второму.
...
Рейтинг: 0 / 0
SSAS MDX query help
    #39400430
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xed1000000
нужно, чтобы при выборе SKU5, volume был = 20. При выборе Brand2, volume = 40. Т.е. volume должен считаться как общий оборот по address, но также должен быть зависим от всех полей. Если выбран Region1 и Brand1, тогда volume = 60


Вам придется разобраться с конструкцией SCOPE
...
Рейтинг: 0 / 0
SSAS MDX query help
    #39400647
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin, скоп в мдикс запросе? как и зачем?
...
Рейтинг: 0 / 0
SSAS MDX query help
    #39402195
xed1000000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FerdipuxПравильно я понял, что если выбрали SKU5 - то нужно выводить Total Address 2 (он есть только там), Brand2 - Total Address 1 (то же самое, Brand2 есть только для Address1), Region1 + Brand1 = Total Addr1 + Total Addr2?
;) Все верно, именно так и нужно!!!!


ShIgor Единственное, что не понятно почему в требованиях "...оборот для каждого Address...", а в примере "Если выбран Region1 и Brand1, тогда volume = 60...". Тогда уж 40 по первому адресу и 20 по второму.

В случае если Address выбран, тогда да, должен показать общий оборот по одному и по второму, иначе - если выбран Brand1 и не выбран конкретный Address, должен показать общий оборот двух Address !


a_voronin Вам придется разобраться с конструкцией SCOPE
Если есть подобные знания, может подскажите как?
...
Рейтинг: 0 / 0
SSAS MDX query help
    #39402580
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bideveloper,


В качестве примере приведены не факты(в них был бы продукт и клиент), а отчёт с промежуточного уровня грануляции.

Не уточните ли, где вам видится тут м2м?
...
Рейтинг: 0 / 0
SSAS MDX query help
    #39402581
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xed1000000,

Вы лучше поясните более формализовано, в чем же состоит задача на прикладном уровне.
Только тогда можно и её внятно реализовать хоть на мдх хоть на скл
...
Рейтинг: 0 / 0
SSAS MDX query help
    #39402709
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир ШтепаВ качестве примере приведены не факты(в них был бы продукт и клиент), а отчёт с промежуточного уровня грануляции.

Не уточните ли, где вам видится тут м2м?
Таблица фактов же не менее детализированная и я предполагаю, что мы можем изменить представления для решения задачи.
Если сделать таблицу фактов вида
Address1 40
Address2 20
и таблицу для связи Address, Product, Client
то это можно было бы использовать для решения задачи, если бы не последнее условие "Если выбран Region1 и Brand1, тогда volume = 60". Обычно при выборе дополнительного фильтра и значения ограничивают, а тут получается, что Brand1 никак не повлияет на volume. В общем да, хотелось бы более ясной постановки задачи ))
...
Рейтинг: 0 / 0
SSAS MDX query help
    #39403383
xed1000000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир ШтепаВы лучше поясните более формализовано, в чем же состоит задача на прикладном уровне.
Только тогда можно и её внятно реализовать хоть на мдх хоть на скл

Нужно посчитать взвешенную дистрибьюцию, т.е. общий оборот торговых точек, где продается выбранный SKU или Brand. В случае, если выбранный Brand или SKU не продавался в какой-либо торговой точке - общий оборот по этим точкам показывать не нужно. Сложность заключается в том, чтобы посчитать общую сумму по каждой торговой точке, но при условии, что фильтровать нужно либо по Brand или SKU.

В первоначальном варианте, я просто посчитал общий оборот торговых точек для каждого SKU. Если пользователь выбирает один SKU, показатель считается корректно ( т.е. он показывает сумму общего оборота для каждого магазина, где продается выбранный SKU. При этом не важно с какими измерениями выбрано SKU - Region - City - Address, он показывает общую сумму тех магазинов(а), где присутствует выбранный SKU), но когда выбирается Brand, тут конечно показатель становится неадекватный, т.к. суммирует общие обороты, которые были рассчитаны для каждого SKU.

Ну как-то так. ;) или все равно плохо объяснил ? ;)
...
Рейтинг: 0 / 0
SSAS MDX query help
    #39403731
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xed1000000
a_voronin Вам придется разобраться с конструкцией SCOPE
Если есть подобные знания, может подскажите как?

SCOPE используется в вычислениях и позволяет на разных уровнях иерархии (в разных контекстах) подставлять разные выражения. Это не столь простая тема, надо хорошо RTFM-мить её https://www.google.com/search?as_q=scope&as_epq=&as_oq=&as_eq=&as_nlo=&as_nhi=&lr=&cr=&as_qdr=all&as_sitesearch=&as_occt=any&safe=images&as_filetype=&as_rights=#as_qdr=all&q=mdx scope

Сходите сюда
http://www.sql.ru/forum/1161689-1/kak-poschitat-dolu-ot-roditelya?hl=scope a_voronin
...
Рейтинг: 0 / 0
SSAS MDX query help
    #39403851
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xed1000000, в такой постановке мой вариант вроде как подходит )
Только при выборе региона фильтр по адресу будет не или, а и, но это по-моему логично )
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / SSAS MDX query help
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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