|
|
|
Добавить условие
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Есть MDX-запрос, который выгружает количество отгрузок по каждому городу и клиенту. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Возможно ли в данном запросе с использованием меры [Measures].[Количество поставок] добавить вычисляемую меру или прописать фильтр так, чтобы возвращал количество отгрузок, где сумма отгрузки меньше 500 р.? Или такую меру надо только в кубе прописывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 16:23 |
|
||
|
Добавить условие
|
|||
|---|---|---|---|
|
#18+
ferzmikkЗдравствуйте! Есть MDX-запрос, который выгружает количество отгрузок по каждому городу и клиенту. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Возможно ли в данном запросе с использованием меры [Measures].[Количество поставок] добавить вычисляемую меру или прописать фильтр так, чтобы возвращал количество отгрузок, где сумма отгрузки меньше 500 р.? Или такую меру надо только в кубе прописывать? Даже не так. Мера в кубе мало поможет. Вам нужно взять Вашу view, на которой Вы считаете distinct count счетчик "Количество поставок" и сделать еще одну view, на которую пойдут строки, где сумма отгрузки меньше 500 рублей. И подключить новую группу мер и новую distinct count меру в ней с названием "Количество дешевых поставок". Иначе "не взлетит". Впрочем, можете попробовать расчетами. Будет дико тормозить на Ваших объемах, пользователи Вам голову оторвут, потом все-таки сделаете так, как я изначально предлагал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 16:26 |
|
||
|
Добавить условие
|
|||
|---|---|---|---|
|
#18+
ferzmikk, да, Filter функция, по форуму легко гуглится. если это на постоянно, то лучше как Andy_OLAP рекомендует, с другой стороны на каждый фильтр пользователя группу мер генерить, тоже может быть не очень целеобразно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 10:21 |
|
||
|
Добавить условие
|
|||
|---|---|---|---|
|
#18+
Если писать MDX-запрос с использованием FILTER MDX-запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 1. Возможно ли еще как то оптимизировать запрос, чтобы быстрее выполнялся? 2. Возможно ли как то обойти, чтобы в запросе выделенные записи не указывать? Но без них очень долго будет выгружаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 15:26 |
|
||
|
Добавить условие
|
|||
|---|---|---|---|
|
#18+
ferzmikk, Начал бы с замены FILTER на SUM для начала )) WITH MEMBER [Measures].[Количество отгрузок ТТ. Все] AS SUM(NONEMPTY( {[Торговые точки].[Код ТТ].[Код ТТ]*[Города].[Город].CurrentMember}, [Measures].[Отгрузки сумма без НДС]), iif([Measures].[Отгрузки сумма без НДС]>0,1,null) ) MEMBER [Measures].[Количество отгрузок ТТ. Менее 100 руб.] AS SUM(NONEMPTY( {[Торговые точки].[Код ТТ].[Код ТТ]*[Города].[Город].CurrentMember}, [Measures].[Отгрузки сумма без НДС]), iif([Measures].[Отгрузки сумма без НДС]>0 AND [Measures].[Отгрузки сумма без НДС] < 100,1,null) ) SELECT {[Measures].[Количество отгрузок ТТ. Все], [Measures].[Количество отгрузок ТТ. Менее 100 руб.]} ON 0, NON EMPTY [Города].[Город].[Город] ON 1 FROM PROFIT Where ([Время].[Месяц].&[2018-10-01T00:00:00]) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2018, 11:37 |
|
||
|
Добавить условие
|
|||
|---|---|---|---|
|
#18+
mishgan1, 2.Еще убрал бы *[Города].[Город].CurrentMember из перемножения, в Select on 1 они есть уже и мера должна отработать в их контексте 3. Ну если нужно посчитать с гранулярностью до дня добавил бы *EXISTING [Время].[День].[День] WITH MEMBER [Measures].[Количество отгрузок ТТ. Все] AS SUM(NONEMPTY( {[Торговые точки].[Код ТТ].[Код ТТ]*EXISTING [Время].[День].[День]}, [Measures].[Отгрузки сумма без НДС]), iif([Measures].[Отгрузки сумма без НДС]>0,1,null) ) MEMBER [Measures].[Количество отгрузок ТТ. Менее 100 руб.] AS SUM(NONEMPTY( {[Торговые точки].[Код ТТ].[Код ТТ]*EXISTING [Время].[День].[День]}, [Measures].[Отгрузки сумма без НДС]), iif([Measures].[Отгрузки сумма без НДС]>0 AND [Measures].[Отгрузки сумма без НДС] < 100,1,null) ) SELECT {[Measures].[Количество отгрузок ТТ. Все], [Measures].[Количество отгрузок ТТ. Менее 100 руб.]} ON 0, NON EMPTY [Города].[Город].[Город] ON 1 FROM PROFIT Where ([Время].[Месяц].&[2018-10-01T00:00:00]) Ну как то так наверно )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2018, 12:04 |
|
||
|
Добавить условие
|
|||
|---|---|---|---|
|
#18+
ferzmikk, ___MDX.with.Microsoft.SQL.Server.2008.R2.Analysis.Services.Cookbook.Aug.2011.pdf Отличная книжка с рецептами - По кр. мере лучше что я нашел я сам далеко НЕ эксперт в мдх но находил почти все что мне надо было с пол-года назад что не находил спрашивал здесь :) зы навреняка есть на ру..кере или в инете если вдруг нет - пиши-кину ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2018, 13:37 |
|
||
|
Добавить условие
|
|||
|---|---|---|---|
|
#18+
Гулин Федор, кстати да. хорошая книга. и там (тоже кстати) рекомендуют не пользоваться Filter )) Filter function is an iterative function which doesn't run in block mode, hence it will slow down the query. In the introduction, we said that it's always wise to search for an alternative if available. Let's see if something can be done here. A keen eye will notice a "count of filtered items" pattern in this expression. That pattern suggests the use of a set-based approach in the form of SUM-IF combination. The trick is to provide 1 for the True part of the condition taken from the FILTER() statement and null for the False part. The sum of one will be equivalent to the count of filtered items. In other words, once rewritten, that same calculated member would look like this: MEMBER [Measures].[Positive growth days] AS SUM( Descendants([Date].[Fiscal].CurrentMember, , leaves), IIF( [Measures].[Growth in Customer Base] > 0, 1, null) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2018, 15:06 |
|
||
|
Добавить условие
|
|||
|---|---|---|---|
|
#18+
1) Вариант с Distinct Count Код: sql 1. 2. 3. 4. 5. 6. 7. Варианты вычисляемых показателей 2) COUNT(FILTER(...)) и 3) SUM(...) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. В моем случае конфигурации мощного сервера показывало 1) и 3) ~ одинаковы по скорости, но много показателей 1) не наделаешься ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2018, 16:56 |
|
||
|
Добавить условие
|
|||
|---|---|---|---|
|
#18+
Alex_496SUM( [Торговые точки].[Код торговой точки].[Код торговой точки], IIF([Measures].[is_credit_contract] > 0, 1, NULL) ) SUM без existing и dynamic set - а потом автор темы будет в очередной раз спрашивать здесь же, почему у него иерархия по измерению "Торговые точки" выдает на промежуточных уровнях непонятные результаты... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2018, 17:03 |
|
||
|
Добавить условие
|
|||
|---|---|---|---|
|
#18+
Alex_496, "Подключить новую группу мер и новую distinct count меру в ней с названием "Количество дешевых поставок". Иначе "не взлетит". Впрочем, можете попробовать расчетами" - таки Вы увидите, что автор темы через полгода именно так и сделает. Потом будет в PowerBI прикручивать на все уже существующие отчеты. Он вообще по-моему не слушает, что ему говорят, а делает некий макет, который работает в его воображении, а потом пытается напильником самолет превратить в ракету. Интересный способ разработки, я за ним с большим любопытством наблюдаю, но мне непонятно терпение его пользователей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2018, 17:06 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=39740413&tid=1857713]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 277ms |

| 0 / 0 |

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