Я уже давно работаю в кубе OLAP в качестве синтаксического кода в excel, но в последнее время я пытаюсь интегрировать некоторые расчетные меры для оптимизации некоторых вещей, и я ударил стену.Работа с OLAP-кубом в Excel; определять месячные значения в более широком диапазоне дат?
В кубе установлены фильтры даты, указывающие месяц & год (они становятся более конкретными, но более тонкие уровни не используются).
Строки будут перечислять отдельные проекты, а значения могут отражать 2 меры: один, который отражает средний балл для диапазона дат, а другой, который отражает количество наблюдений, на которых основан средний показатель.
Я хотел бы создать вычисляемый показатель, который будет отображать средний балл для каждого проекта, пока 2 критериев:
- Существует минимум 100 наблюдений для всего диапазона дат
- нет месяцев с нулевыми наблюдениями в диапазоне дат, указанном в переменной.
Я также должен уточнить, что диапазоны дат, которые я использую, будут варьироваться и длиться и не всегда будут заканчиваться последним месяцем, но они будут всегда составлять целые месяцы.
Я часть пути там, как рассчитывается показатель, основанный на это даст мне в среднем только при наличии достаточного количества наблюдений для диапазона дат:
IIF([Measures].[OBSERVATIONS]>=100,[Measures].[AVERAGE],"^^")
Теперь мне нужно добавить критерии без месяцев с нулевыми наблюдениями.
Я попытался использовать COUNT(), но в этой форме он игнорирует диапазон дат, заданный в pivottable, и возвращает количество всех месяцев, в течение которых существует какое-либо значение для проекта, включая нули.
COUNT(([Calendar].[Calendar].[Month],[Measures].[OBSERVATIONS]),EXCLUDEEMPTY)
Я попытался определить наименьшее число наблюдений в месяц, используя это выражение, но опять же он игнорирует диапазон дат, и не отражает пустые ячейки:
MIN([Calendar].[Calendar].[Month],[Measures].[OBSERVATIONS])
Я думаю CurrentMember это то, что я нужно включить, но я не могу заставить его работать для меня.
Предполагая, что это уместно, и я не уверен, что лучший способ объяснить календарь иерархии, так что это отражает то, что у меня есть:
Первый календарь листинг является один используется для фильтрации данные сводной таблицы, а также выведены в выражения mdx выше.
EDIT:
Спасибо @SouravA за ответ. Я пробовал несколько вещей, и учитывая, что форматирование в комментариях ограничено, вот краткое изложение того, что я сделал.
Я получаю сообщение об ошибке, которое говорит «Query (1.35) Parser: Синтаксис для„С“неправильна»
, чтобы убедиться, что я использую это правильно:
После внося изменения ниже, я вложил все это в окно MDX: из инструмента «рассчитанные меры» в Excel.
Я, конечно, изменил ЗАМЕЧАНИЯ и СРЕДИ к именам переменных в моем кубе.
Я изменил '[Project]. [ProjectCode]' на '[Project]. [ProjectName]', как мой куб настроен.
On '[NewMeasure]' Я изменил его на имя, которое я использую для рассчитанной меры.
на '[ваш куб]' Я пробовал пару разных вещей; ссылка на куб, которую я использую в формулах куба в excel, выглядит так: «Cubename NormativeCube», поэтому я попытался вставить это в скобки с кавычками и без них, оставив часть NormativeCube и выполняя все это без скобок.
Я также изменил последнюю строку после 'WHERE', чтобы отразить диапазоны дат следующим образом: '[Календарь]. [Календарь]. [Месяц]. & 1 & [2015]: [Календарь]. [Календарь]. [Месяц]. & [12] & [2015] '
Я также установил это как [Календарь]. [Месяц]. [Месяц]. & 1: [Календарь]. [Месяц]. [Месяц]. & [12] '
Кроме того, еще один вопрос; будет ли эта работа работать в любом диапазоне дат, или она предназначена для указания в MDX? Мне нужно, чтобы он функционировал на основе диапазона дат, заданного фильтрами куба.
EDIT 2:
мне просто нужно настроить этот чуточку изменив «> 0» в «= 0», как оригинальное решение показал среднее значение для тех, которые не имеют данных для каждый месяц в диапазоне дат и настраивать одно из выражений набора календаря или что угодно.
IIF
(
[Measures].[OBSERVATIONS]>=100
AND
COUNT
(
FILTER
(
EXISTS
(
[Calendar].[Calendar].[Month].MEMBERS
,EXISTING [Calendar].[Calendar].[Month].MEMBERS
)
,[Measures].[OBSERVATIONS] = 0
)
) = 0
,[Measures].[AVERAGE]
,"^^"
)
РЕДАКТИРОВАТЬ 3:
Найдено ограничение;
измерение действует только в том случае, если диапазон дат, определенный для куба, находится в целом приращении иерархии календаря; т.е. один месяц, один квартал или один год. делать 2 месяца, 2 четверти, 2 года или разбить через 2 четверти или годы, вернет ложный результат из выражения IIF().
Я играл с несколькими разными способами, чтобы настроить его, но не могу заставить его работать.
EDIT 4:
Re:. Календарь иерархия
Глядя снизу [календарь] [календарь] есть 4 варианта: год, квартал, месяц, & Дата Key.
глядя на участников в течение года, квартала, & Месяц, вы можете развернуть весь путь до индивидуального дня.
Свойства членов в рамках этих 3-х списках только на следующий уровень вверх по иерархии
на дату ключ, свойства элементов являются следующие: Месяц Название Месяц Год времени Calcs (это не делать к моему знанию) неделя года неделя
EDIT 5:
Так это то, что работает (в конце концов). Я, должно быть, что-то испортил, и редактирование исходной формулы вызвало вторичную проблему, которую я имел. Вот что сработало для меня.
IIF
(
[Measures].[OBSERVATIONS]>=100
AND
COUNT
(
FILTER
(
EXISTS
(
[Calendar].[Calendar].[Month].Members
,EXISTING [Calendar].[Calendar].Members
)
,[Measures].[OBSERVATIONS] = 0
)
) > 0
,[Measures].[AVERAGE]
,"^^"
)
см. Редактирование в исходном сообщении. – JYurkovich
@JYurkovich - проверить мое редактирование – SouravA
Спасибо! небольшая настройка, и это было сделано! Ты спасатель! – JYurkovich