2017-01-03 12 views
0

Я использую службы Analysis Services на SQL Server 2014, корпоративная версия.mdx с агрегированными последними периодами не работает

Я пытаюсь создать новый элемент для измерения Timeframe, который агрегирует последние 3 месяца значения. Следующий код mdx скомпилируется без ошибок, но когда я просматриваю его с помощью меры, он по-прежнему показывает мне номера уровня месяца вместо трехмесячной суммы. Что я делаю не так? Любая помощь приветствуется.

CREATE MEMBER CURRENTCUBE.[Timeframe].[Timeframe].[ROLLING 3 MONTH] 
AS IIF([Accounting Date].[Accounting Date].CurrentMember.Level.Name="Month", AGGREGATE(LASTPERIODS(3),[Timeframe].[Timeframe].&[1]), NULL), 
VISIBLE = 1; 

Спасибо.

ответ

1

Пожалуйста, попробуйте следующее:

CREATE MEMBER CURRENTCUBE.[Timeframe].[Timeframe].[ROLLING 3 MONTH] 
AS 
IIF(
    [Accounting Date].[Accounting Date].CurrentMember.Level.Name="Month", 
    AGGREGATE(
    LASTPERIODS(3, [Accounting Date].[Accounting Date].CurrentMember), 
    [Timeframe].[Timeframe].&[1] 
    ), 
NULL), 
VISIBLE = 1; 

Указание члена в функции LASTPERIODS, как мы надеемся, что вы пропали без вести. SSAS, вероятно, предполагала какую-то другую иерархию Date, или у вас нет должным образом отмеченных иерархий и измерений. Ничего страшного. Просто укажите участника, а затем он должен работать.

Кстати, по соображениям производительности я предпочел бы видеть инструкцию SCOPE вместо проверки имени уровня. То, что у вас есть, должно работать, но если вы нажмете на проблемы с производительностью исследования SCOPE или создайте новый поток, который попросит оптимизировать этот MDX.

Предполагаю, что вы используете Excel 2010 или выше. Если не watch out!