Quantcast
Channel: SQL.ru: OLAP и DWH
Viewing all articles
Browse latest Browse all 1167

Поиск решения по ускорению получения среднего значения.

$
0
0
Добрый день!
Имеется некий куб, в котором имеется аналитика по продажам и движениям товара, существует задача получения показателя оборачиваемости.

Есть меры [ДвижКолво] и [ДвижСумма], которая отражает проводки по движению товара (закпуки, перемещения по торговым точкам и складам, продажи итд). Соответственно остаток высчитывают (через вычисление), как:
[ОстатокКолво]: sum(PeriodsToDate([Время].[Дата].[(All)], [Время].[Дата].currentmember), [Measures].[ДвижКолво])
[ОстатокСумма]: sum(PeriodsToDate([Время].[Дата].[(All)], [Время].[Дата].currentmember), [Measures].[ДвижСумма])


Далее смотрим формулу оборачиваемости. Оборот (дн) = Средний товарный запас / Средний объем продаж за выбранный период.

в mdx для вычисления использую простую формулу:
по количеству:
AVG(DESCENDANTS([Время].[Дата].CurrentMember, [Время].[Дата].[День]), [Measures].[ОстатокКолво]) /
AVG(DESCENDANTS([Время].[Дата].CurrentMember, [Время].[Дата].[День]), [Measures].[ПродажиКолво])

в денежном выражении:
AVG(DESCENDANTS([Время].[Дата].CurrentMember, [Время].[Дата].[День]), [Measures].[ОстатокСумма]) /
AVG(DESCENDANTS([Время].[Дата].CurrentMember, [Время].[Дата].[День]), [Measures].[ПродажиСебестоимость])


где [ПродажиКолво] и [ПродажиСебестоимость], соответствующие меры куба.


Проблема заключается в очень долгом построении отчета на основании данных куба при использовании данных вычислений, если сравнивать с другими мерами и вычислениями. Понимаю, что функция avg() может быть очень требовательной к ресурсам, но есть ли подходы, с помощью которых можно увеличить скорость обработки?


+ система
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) Oct 19 2012 13:38:57 Copyright (c) Microsoft Corporation Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)

Viewing all articles
Browse latest Browse all 1167

Trending Articles