Как получить количество месяцев в фильтрованном представлении в качестве вычисляемого члена с многомерным выражением в SSAS - PullRequest
0 голосов
/ 02 мая 2018

Мне нужно вставить вычисляемый элемент в существующий OLAP-куб и (к сожалению) не совсем понять, что я делаю.

Результатом должно быть количество совпадающих месяцев в текущем отфильтрованном представлении.
Я получаю результат месяцев, относящихся к выбранному году, но не список фильтров месяцев.

У меня есть:

CREATE MEMBER CURRENTCUBE.[MEASURES].[AnzahlMonate] AS 
COUNT(Descendants(
     [Datum].[Datum - J - M - T].CurrentMember, 
     [Datum].[Datum - J - M - T].[Monat]  ),EXCLUDEEMPTY )
,FORMAT_STRING = "0", 
VISIBLE = 1;

Я получаю:

Results in SSMS

Я хочу получить:
[3]

Я пробовал Google и т. Д., Но, очевидно, не хватает правильных ключевых слов.

Помощь очень ценится. Спасибо заранее.

-

Я использую:
SQL-Server 2014
SSMS 12.0.2456.0
Windows Server 2012 R2

Ответы [ 3 ]

0 голосов
/ 04 мая 2018

Вы должны использовать

COUNT(EXISTING Descendants(
     [Datum].[Datum - J - M - T].CurrentMember, 
     [Datum].[Datum - J - M - T].[Monat]  ) )

вместо

COUNT(Descendants(
     [Datum].[Datum - J - M - T].CurrentMember, 
     [Datum].[Datum - J - M - T].[Monat]  ),EXCLUDEEMPTY )

Если это не сработает, вы можете попробовать

COUNT(EXISTING [Datum].[Monat].[Monat].Members  ) )

А если ничего не помогает, другим решением было бы добавить другую группу мер на основе таблицы измерений даты и определить в ней меру, которая будет DistinctCount столбца идентификатора месяца.

0 голосов
/ 17 мая 2018

Это не работает для меня, когда я использовал GUI-designe, потому что фильтр находится вне текущего контекста:

with member [Months] AS 
sum(existing [Date].[Year Qtr Month].[Month].MEMBERS
,count(existing [Date].[Year Qtr Month].CurrentMember))

select [Months] on 0
FROM ( SELECT ( 
{ [Date].[Year Qtr Month].[Month].&[2018-03]
, [Date].[Year Qtr Month].[Month].&[2018-04]
, [Date].[Year Qtr Month].[Month].&[2018-05] } ) ON COLUMNS 
FROM [Some_Cube]) WHERE ( [Date].[Year Qtr Month].CurrentMember)

Но работает, когда я вручную добавил фильтр:

with member [Months] AS 
sum(existing [Date].[Year Qtr Month].[Month].MEMBERS
,count(existing [Date].[Year Qtr Month].CurrentMember))

select [Months] on 0
FROM [Some_Cube]
WHERE
{[Date].[Year Qtr Month].[Month].&[2018-03]
,[Date].[Year Qtr Month].[Month].&[2018-04]
,[Date].[Year Qtr Month].[Month].&[2018-05]}
0 голосов
/ 02 мая 2018

Я думаю, что ваша мера рассчитывает количество подходящих месяцев, не обращая внимания на другие измерения, используемые в фильтрах / слайсере. Таким образом, вы получаете 12 каждый раз.

Вы используете ключевое слово EXCLUDEEMPTY, но не говорите MDX , что сделало бы месяц пустым . MDX смотрит на верхний уровень вашего куба. Фактически, он вообще не смотрит на числа в кубе, он просто смотрит на то, сколько членов находится в измерении [Datum].

Отредактируйте свой ответ, чтобы сообщить нам полный MDX, который вы используете, и мы могли бы помочь вам больше.

...