|
|
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
Привет всем. Куб: Группа мер Движение товара/остатки (LastChild) Группа мер - чеки Измерения: Товары Точки Необходимо в запросе получить объемы не продающихся товаров, общие товарные запасы, в разрезе точек. Точек 160 Написал следующий запрос. Он работает только для небольшого числа точек в запросе (максимум до 30) В других случаях работает больше часа и отваливается по часовому тайм ауту или с сообщением о том что "другой запрос закончился с ошибкой" Код: 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. 34. 35. 36. 37. 38. 39. 40. 41. 42. Если не получать остатка по "неликвиду", а только его количество - запрос отрабатывает для всех точек. В [количество нелеквида] от 300 до 1500 элементов (от точки к точке) Что можно предпринять/переписать... для получения данных? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 14:23 |
|
||
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
grAlexПривет всем. Куб: Группа мер Движение товара/остатки (LastChild) Группа мер - чеки Измерения: Товары Точки Необходимо в запросе получить объемы не продающихся товаров, общие товарные запасы, в разрезе точек. Точек 160 Написал следующий запрос. Он работает только для небольшого числа точек в запросе (максимум до 30) Если не получать остатка по "неликвиду", а только его количество - запрос отрабатывает для всех точек. В [количество нелеквида] от 300 до 1500 элементов (от точки к точке) Что можно предпринять/переписать... для получения данных? Спасибо. На стороне DataSource считать остатки на сегодня и остатки на дату 100 дней назад, физически добавить в куб 2 новыми группами мер. Эти новые остатки сделать мерой агрегирования SUM и использовать их в расчетах. Все будет летать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 23:51 |
|
||
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
grAlex, SET [товары в наличии] as {nonempty([Точки]*[товары на начало], Вы считаете набор товаров в наличие по условию, что 100 дней назад они были. То есть неликвиды - это остатки, которые и тогда лежали, и сейчас не распроданы. Посчитайте накопительный итог по движениям в разрезе измерений куба, к которым привязана "Группа мер Движение товара/остатки". Считать циклом по 1 числам месяца от начала времен, считываете 1 число прошлого, движения внутри прошлого и получаете начальный на 1 число текущего и записываете, потом сдвигаете в цикле на следующий месяц. Когда дойдете до 4 месяцев назад - физически посчитаете "100 дней назад от сегодня", это первая новая группа мер, от них выберете сочетания точка-товар в отдельную таблицу. Когда посчитаете 1 число текущего - физически посчитаете "остатки на сегодня для неликвида", наложив inner join по точка-товар, чтобы новые поступившие товары или открывшиеся точки не считать во вторую новую группу мер. Лучше не класть расчеты в MDX - Вам же "крутить" это в разных разрезах, пусть физически лежит в кубе для быстрого анализа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2017, 23:57 |
|
||
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
grAlex Что можно предпринять/переписать... для получения данных? Andy_OLAP - спасибо за предложения. Но, структурно, сейчас, не имелось возможности решить вопрос. В итоге пришел к такому результату Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Форма вывода другая...гораздо детальнее (10тки тысяч строк - что конечно излишне). Но этот запрос выполняется и довольно быстро (на "нашей мощности" - 12 минут) Т.к. отчет готовится для вывода в SSRS то "пойдет" Но вопрос остался...Первоначальный запрос был таким убогим, что не мог отработать...? Если будут у кого еще какие предложения - буду рад услышать. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 20:11 |
|
||
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
grAlexgrAlexЧто можно предпринять/переписать... для получения данных? Andy_OLAP - спасибо за предложения. Но, структурно, сейчас, не имелось возможности решить вопрос. В итоге пришел к такому результату Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Форма вывода другая...гораздо детальнее (10тки тысяч строк - что конечно излишне). Но этот запрос выполняется и довольно быстро (на "нашей мощности" - 12 минут) Т.к. отчет готовится для вывода в SSRS то "пойдет" Но вопрос остался...Первоначальный запрос был таким убогим, что не мог отработать...? Если будут у кого еще какие предложения - буду рад услышать. Спасибо P.S. [Measures].[Max Transaction Date] в данном случае Мера Чеки - Дата продажи. Ее я тоже применял в большом запросе... эффекта не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 20:33 |
|
||
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
grAlex, вы что-то странное делаете, исходя из бизнес целей вам нужно просто посчитать оборачиваемость и знать остаток ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 20:38 |
|
||
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
grAlex[Measures].[Max Transaction Date] в данном случае Мера Чеки - Дата продажи. Ее я тоже применял в большом запросе... эффекта не было. Ого, так у Вас это не физическая мера, а формула, которая преобразует атрибут Дата продажи из элемента измерения Чеки в расчетный показатель? А сколько элементов в измерении Чеки сейчас? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 21:30 |
|
||
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
Andy_OLAPgrAlex[Measures].[Max Transaction Date] в данном случае Мера Чеки - Дата продажи. Ее я тоже применял в большом запросе... эффекта не было. Ого, так у Вас это не физическая мера, а формула, которая преобразует атрибут Дата продажи из элемента измерения Чеки в расчетный показатель? А сколько элементов в измерении Чеки сейчас? [Measures].[Max Transaction Date] - эта физическая мера (агрегация MAX) по фактам продаж (Дата продажи) (порядка 90 млн.) Она ничего не преобразует. Измерения чеки - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 21:41 |
|
||
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
КритикgrAlex, вы что-то странное делаете, исходя из бизнес целей вам нужно просто посчитать оборачиваемость и знать остаток В данном случае необходим был отчет о товарах не имеющих фактов продаж (по указанным точкам) за указный период (в данном примере 100 дней), которые в него "вошли". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 21:46 |
|
||
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
grAlexAndy_OLAPпропущено... Ого, так у Вас это не физическая мера, а формула, которая преобразует атрибут Дата продажи из элемента измерения Чеки в расчетный показатель? А сколько элементов в измерении Чеки сейчас? [Measures].[Max Transaction Date] - эта физическая мера (агрегация MAX) по фактам продаж (Дата продажи) (порядка 90 млн.) Она ничего не преобразует. Измерения чеки - нет. Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 21:49 |
|
||
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
grAlexЧто можно предпринять/переписать... для получения данных? Вот еще вариант. Код: 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. 34. На машине (64битной) с памятью 13 Гб запрос без расчета [количество нелеквида] выполняется за 6 минут. и полный запрос через 40 минут вываливается с ошибкой "Операция отменена, поскольку не хватает доступной памяти для приложения" На машине (64битной) с памятью 40 Гб полный запрос выполняется за 3 с половиной минуты. фактов движения 130 млн, чеков 92 млн, точек 160, товаров в измерении 80 тыш. Есть ли способ получить результат запроса на машине с 13 Гб памяти? (процессоры одинаковые) Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2017, 11:37 |
|
||
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
grAlexНа машине (64битной) с памятью 13 Гб запрос без расчета [количество нелеквида] выполняется за 6 минут. и полный запрос через 40 минут вываливается с ошибкой "Операция отменена, поскольку не хватает доступной памяти для приложения" На машине (64битной) с памятью 40 Гб полный запрос выполняется за 3 с половиной минуты. фактов движения 130 млн, чеков 92 млн, точек 160, товаров в измерении 80 тыш. Есть ли способ получить результат запроса на машине с 13 Гб памяти? (процессоры одинаковые) Спасибо Нет. Потому что в лучшем случае по измерению чеков на 100 миллионов элементов у Вас оперативной памяти потребуется под 15 Гб, а если Вы в дизайне агрегатов воспользовались подсказками Microsoft - то у Вас файлы в группе мер с чеками flex в несколько раз больше, чем исходные fact.data - делайте тестовый куб, вырезайте все Aggregation Design, обрабатывайте и считайте запрос - и сколько будет Peak Workin Set (Memory) на компьютере с 40 Гб. Если не перейдет за 12 - ну тогда пробуйте на компьютере с 13 Гб. Вообще наличие под 50 миллионов чеков - это уже обоснование ставить 24 Гб, 100 миллионов - 32 Гб и далее по нарастающей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2017, 11:47 |
|
||
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
Andy_OLAP Нет. Потому что в лучшем случае по измерению чеков на 100 миллионов элементов У нас нет измерения "чеки"... или я что то не до понял. Есть факты - "Чеки" ([Measures].[Bill Amount] и т.п.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2017, 11:56 |
|
||
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
grAlexAndy_OLAP Нет. Потому что в лучшем случае по измерению чеков на 100 миллионов элементов У нас нет измерения "чеки"... или я что то не до понял. Есть факты - "Чеки" ([Measures].[Bill Amount] и т.п.) 160 точек - а самих элементов измерения "Dim Contractor Branch" сколько? Я понял, что чеков как измерения у Вас нет. Значит, нужно определить, точки - это атрибут большого измерения (и не ключевой к тому же) или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2017, 13:13 |
|
||
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
Andy_OLAPgrAlexпропущено... пропущено... У нас нет измерения "чеки"... или я что то не до понял. Есть факты - "Чеки" ([Measures].[Bill Amount] и т.п.) 160 точек - а самих элементов измерения "Dim Contractor Branch" сколько? Я понял, что чеков как измерения у Вас нет. Значит, нужно определить, точки - это атрибут большого измерения (и не ключевой к тому же) или нет. 160 точек и только у одной - 2 отдела. Т.е. фактически измерение точки - 161 элемент И, да, ключевой аттрибут - отдел. Делал запрос и с ключевомым аттрибутом - результат так же. Причем до первых 26 точек все практически быстро(на машине с малым количеством памяти). Но стоит указать еще один элемент в наборе [точки]...всё. запрос не выполняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2017, 14:55 |
|
||
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
grAlexAndy_OLAPпропущено... 160 точек - а самих элементов измерения "Dim Contractor Branch" сколько? Я понял, что чеков как измерения у Вас нет. Значит, нужно определить, точки - это атрибут большого измерения (и не ключевой к тому же) или нет. 160 точек и только у одной - 2 отдела. Т.е. фактически измерение точки - 161 элемент И, да, ключевой аттрибут - отдел. Делал запрос и с ключевомым аттрибутом - результат так же. Причем до первых 26 точек все практически быстро(на машине с малым количеством памяти). Но стоит указать еще один элемент в наборе [точки]...всё. запрос не выполняется. Я вот этого не понимаю в запросе "[Calendar End].[Cdate].&[20170721]:[Calendar End].[Cdate].&[20171029]" - Вы смотрите неликвиды на дату 29 октября, почему не она одна в фильтре, а диапазон дат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2017, 15:04 |
|
||
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
Andy_OLAPgrAlexпропущено... 160 точек и только у одной - 2 отдела. Т.е. фактически измерение точки - 161 элемент И, да, ключевой аттрибут - отдел. Делал запрос и с ключевомым аттрибутом - результат так же. Причем до первых 26 точек все практически быстро(на машине с малым количеством памяти). Но стоит указать еще один элемент в наборе [точки]...всё. запрос не выполняется. Я вот этого не понимаю в запросе "[Calendar End].[Cdate].&[20170721]:[Calendar End].[Cdate].&[20171029]" - Вы смотрите неликвиды на дату 29 октября, почему не она одна в фильтре, а диапазон дат? Ограничил пространство куба анализируемым периодом. Чтоб не возиться с набором дат. В данной нотации запрос исполняется (когда укороченый набор точек) наилучшим способом, не используя "поячеистого" расчета. И если б не существующий объем памяти (этот вопрос будет решен) - в принципе, результат устраивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2017, 16:01 |
|
||
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
grAlexAndy_OLAPпропущено... Я вот этого не понимаю в запросе "[Calendar End].[Cdate].&[20170721]:[Calendar End].[Cdate].&[20171029]" - Вы смотрите неликвиды на дату 29 октября, почему не она одна в фильтре, а диапазон дат? Ограничил пространство куба анализируемым периодом. Чтоб не возиться с набором дат. В данной нотации запрос исполняется (когда укороченый набор точек) наилучшим способом, не используя "поячеистого" расчета. И если б не существующий объем памяти (этот вопрос будет решен) - в принципе, результат устраивает. У Вас пересечение точек - выбранных из измерения в статическом наборе - и товаров. Ну так используйте intersect(set_точек, set_товаров, [нужная мера]). Определяете набор на начало периода (выбранная минус 100 дней) для точек и товаров и счетчик для пересечения. Определяете набор на выбранный день и счетчик для пересечения. Смотрите Aggregate по товарам и магазинам, если счетчик равен 1 и по первому набору, и по второму набору. И не нужно вообще делать set [Сегодня] - называйте это set [ВыбранныеДаты]. Если у Вас атрибут ISCURDATE равен 1 только для одного элемента измерения - и он всегда внутри измерения меняется на текущую дату после ProcessUpdate - то зачем такая сложная формула. Делайте StrToMember("[Calendar End].[Cdate].[Cdate].&[20171030]") и такую же дату для 100 дней назад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2017, 16:23 |
|
||
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
grAlexЧто можно предпринять/переписать... для получения данных? В итоге остановившись на таком виде запроса Код: 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. изучив эту темы SSAS 2008 RS: Невозможность подключения из за нехваток памяти и особенно эту SSAS 2008R2: PropertyList.Format, пустые наборы и катастрофическое "отжирание" памяти и проведя ревизию вычисляемых элементов добился времени исполнения запроса на сброшенном кэше, сервера с 13 Гб памяти, 6 минут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 22:15 |
|
||
|
SSAS 2012. MDX. Неликвиды. Не продающиеся товары.
|
|||
|---|---|---|---|
|
#18+
grAlex, Now() у Вас меняется в том случае, если куб не пересчитывается, а наступает новая дата. Но если каждый день рано утром он пересчитывается - Вы точно знаете ключ даты, которая ляжет в Now(). И можно теоретически делать dynamic sql запрос и execute(@string) at linked_server_on_OLAP. А внутри делать alter xmla, где в формуле куба ставить жестко [Calendar End].[Y-M-D].[Cdate].&[20171102] и так далее. Но это чревато, конечно, зато позволяет в явном виде обойтись без StrToMember. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2017, 00:12 |
|
||
|
|

start [/forum/topic.php?fid=49&fpage=26&tid=1858046]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
113ms |
get tp. blocked users: |
1ms |
| others: | 278ms |
| total: | 472ms |

| 0 / 0 |

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