|
|
|
SSAS MDX query help
|
|||
|---|---|---|---|
|
#18+
Всем привет! Помогите, пожалуйста, с решением задачи (с учетом того, что 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! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2017, 12:12 |
|
||
|
SSAS MDX query help
|
|||
|---|---|---|---|
|
#18+
Если я правильно понял, то в SSAS такое делается не с помощью MDX, а путем создания связи многие ко многим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2017, 18:11 |
|
||
|
SSAS MDX query help
|
|||
|---|---|---|---|
|
#18+
bideveloper, Спасибо за ответ. Но неужели MDX запросом это нельзя ни как реализовать. Насколько я знаю связь многие ко многим существенно тормозит работу куба, а учитывая, что куб и без этого достаточно массивный, может все же есть еще какие-нибудь решения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 12:23 |
|
||
|
SSAS MDX query help
|
|||
|---|---|---|---|
|
#18+
Как через MDX я не знаю, может кто-нибудь другой подскажет. Но сомневаюсь, что это будет быстрее, так как по сути в MDX надо будет реализовать ту же связь многие ко многим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 16:45 |
|
||
|
SSAS MDX query help
|
|||
|---|---|---|---|
|
#18+
Для many to many есть возможности по оптимизации, например, вот: https://blog.crossjoin.co.uk/2015/02/21/optimising-ssas-many-to-many-relationships-by-adding-redundant-dimensions/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 16:51 |
|
||
|
SSAS MDX query help
|
|||
|---|---|---|---|
|
#18+
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? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2017, 19:37 |
|
||
|
SSAS MDX query help
|
|||
|---|---|---|---|
|
#18+
Нет тут никаких M2M. Достаточно все просто. Единственное, что не понятно почему в требованиях "...оборот для каждого Address...", а в примере "Если выбран Region1 и Brand1, тогда volume = 60...". Тогда уж 40 по первому адресу и 20 по второму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 09:32 |
|
||
|
SSAS MDX query help
|
|||
|---|---|---|---|
|
#18+
xed1000000 нужно, чтобы при выборе SKU5, volume был = 20. При выборе Brand2, volume = 40. Т.е. volume должен считаться как общий оборот по address, но также должен быть зависим от всех полей. Если выбран Region1 и Brand1, тогда volume = 60 Вам придется разобраться с конструкцией SCOPE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 20:24 |
|
||
|
SSAS MDX query help
|
|||
|---|---|---|---|
|
#18+
a_voronin, скоп в мдикс запросе? как и зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2017, 10:19 |
|
||
|
SSAS MDX query help
|
|||
|---|---|---|---|
|
#18+
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 Если есть подобные знания, может подскажите как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2017, 12:12 |
|
||
|
SSAS MDX query help
|
|||
|---|---|---|---|
|
#18+
bideveloper, В качестве примере приведены не факты(в них был бы продукт и клиент), а отчёт с промежуточного уровня грануляции. Не уточните ли, где вам видится тут м2м? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2017, 10:30 |
|
||
|
SSAS MDX query help
|
|||
|---|---|---|---|
|
#18+
xed1000000, Вы лучше поясните более формализовано, в чем же состоит задача на прикладном уровне. Только тогда можно и её внятно реализовать хоть на мдх хоть на скл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2017, 10:36 |
|
||
|
SSAS MDX query help
|
|||
|---|---|---|---|
|
#18+
Владимир ШтепаВ качестве примере приведены не факты(в них был бы продукт и клиент), а отчёт с промежуточного уровня грануляции. Не уточните ли, где вам видится тут м2м? Таблица фактов же не менее детализированная и я предполагаю, что мы можем изменить представления для решения задачи. Если сделать таблицу фактов вида Address1 40 Address2 20 и таблицу для связи Address, Product, Client то это можно было бы использовать для решения задачи, если бы не последнее условие "Если выбран Region1 и Brand1, тогда volume = 60". Обычно при выборе дополнительного фильтра и значения ограничивают, а тут получается, что Brand1 никак не повлияет на volume. В общем да, хотелось бы более ясной постановки задачи )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2017, 16:38 |
|
||
|
SSAS MDX query help
|
|||
|---|---|---|---|
|
#18+
Владимир ШтепаВы лучше поясните более формализовано, в чем же состоит задача на прикладном уровне. Только тогда можно и её внятно реализовать хоть на мдх хоть на скл Нужно посчитать взвешенную дистрибьюцию, т.е. общий оборот торговых точек, где продается выбранный SKU или Brand. В случае, если выбранный Brand или SKU не продавался в какой-либо торговой точке - общий оборот по этим точкам показывать не нужно. Сложность заключается в том, чтобы посчитать общую сумму по каждой торговой точке, но при условии, что фильтровать нужно либо по Brand или SKU. В первоначальном варианте, я просто посчитал общий оборот торговых точек для каждого SKU. Если пользователь выбирает один SKU, показатель считается корректно ( т.е. он показывает сумму общего оборота для каждого магазина, где продается выбранный SKU. При этом не важно с какими измерениями выбрано SKU - Region - City - Address, он показывает общую сумму тех магазинов(а), где присутствует выбранный SKU), но когда выбирается Brand, тут конечно показатель становится неадекватный, т.к. суммирует общие обороты, которые были рассчитаны для каждого SKU. Ну как-то так. ;) или все равно плохо объяснил ? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2017, 12:41 |
|
||
|
SSAS MDX query help
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2017, 19:17 |
|
||
|
|

start [/forum/topic.php?fid=49&fpage=34&tid=1858363]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 392ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...