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

Вопрос по оптимизации MDX-запроса

$
0
0
Доброе время суток!

WITH
SET [Текущий месяц] AS [Время].[Месяц].&[2016-05-01T00:00:00]
SET [Предыдущий месяц] AS  [Текущий месяц].Item(0).Lag(1)

MEMBER [Отгрузки шт Текущий] AS SUM([Текущий месяц],[Measures].[Отгрузки шт])
MEMBER [Отгрузки шт Предыдущий] AS SUM([Предыдущий месяц],[Measures].[Отгрузки шт])
MEMBER [Мера какая то Текущие] AS SUM([Текущий месяц],[Measures].[Мера какая то])

MEMBER [Новая ТТ] AS (CASE WHEN ([Отгрузки шт Текущий]>0 And [Отгрузки шт Предыдущий]=0) THEN "Новая" END)

MEMBER [Количество ТТ по городам] AS (CASE WHEN [Новая ТТ] ="Новая" THEN Count(Filter(
[Торговые точки].[Код ТТ].[Код ТТ],
([Города].[Город].CurrentMember,
[Отгрузки шт Текущий])>0
)) END)

SELECT
	{[Отгрузки шт Текущий],
	[Отгрузки шт Предыдущий],
	[Мера какая то],
	[Новая ТТ],
	[Количество ТТ по городам]
	} ON 0,
NON EMPTY
	[Города].[Город].[Город]*
	[Измерение какое то].[Измерение какое то].[Измерение какое то]*
	[Торговые точки].[Код ТТ].[Код ТТ]
	HAVING ([Новая ТТ]<>null)
ON 1
FROM
	PROFIT
WHERE
	LastPeriods(2, [Время].[Месяц].&[2016-05-01T00:00:00])


В этом запросе я определяю новых торговых точек по отгрузкам и для них определяю количество торговых точек в соответствующем городе. Без выделенного и без Having выводит 25 000 строк за 3 мин 30 сек. Затрудняюсь оптимизировать.

Скажите

1. Как сделать так, чтобы полученные новые ТТ поместить в субкуб, чтобы был как определенный набор из новых ТТ?

2. Из за выделенного запрос очень сильно тормозит. Как его можно оптимизировать?

Viewing all articles
Browse latest Browse all 1167

Trending Articles