MDX Расчетный элемент SUM с ИЛИ - PullRequest
0 голосов
/ 08 октября 2019

Я унаследовал некоторый код MDX, который использует вычисляемые члены и функцию суммы. Мне нужно сделать новый член, используя SUM, но и OR (union?) Set. Я пробовал различные синтаксисы, но все они ошибки.

У меня есть код как показано ниже:

-- uses this date filter
set [as_of_month] as {strtomember("[Date].[Year -  Month].[Month].&[" + cstr(format(cdate("Jul 2019"),"yyyy-MM")) + "-01T00:00:00]")}

-- member 1
member [SIONLY_MTH] as sum([as_of_month] * [Incident Details].[Is SI].[Is SI], [Measures].[Environment Impact Count])

-- member 2

member [MajorNC_Month] as  sum([as_of_month] * 
                        [Impact].[Impact].&[3] * 
                        [Non Compliance].[Non Compliance Type].&[Major non-compliance], 
                        [Measures].[Non Compliance Count]) + 0

-- I need a new member which is an OR of the previous 2, ie, count of
-- SI_ONLYMONTH or [MajorNC_Month] filtered by [as_of_month]

member [LegalSI_EnvSI_Month] as SUM([as_of_month] * {[Incident Details].[Is SI].[Is SI] , [Non Compliance].[Non Compliance Type].&[Major non-compliance]}
, [Measures].[Environment Impact Count]) + 0

Набор внутри последней функции суммы не работает, он возвращает # Ошибка.

Кто-нибудь знает, как использовать объединенныйустановить в качестве аргумента функции SUM в mdx?

Спасибо

1 Ответ

0 голосов
/ 08 октября 2019

Ваша проблема в основном связана с понятиями размерности и иерархии

Попробуйте это

sum ({([as_of_month] * [Сведения об инциденте]. [Является SI]. [Является SI]] [Impact]. [Impact] .defaultmember [Non Compliance]. [Non Compliance Type] .defaultmember), ([as_of_month] * [Сведения об инциденте]. [Является SI] .defaultmember * [Impact]. [Воздействие]. & [3] * [Несоответствие]. [Тип несоответствия]. & [Основное несоответствие])}, [Меры]. [Количество воздействий на окружающую среду])

Редактировать: Включает поясненияо том, как и почему работает вышеуказанный запрос. В вашей задаче у вас есть два набора с разными иерархиями. Таким образом, вы должны сбалансировать их. Давайте взглянем на ваш первый набор

sum ([as_of_month] * [Сведения об инциденте]. [Является SI]. [Является SI], [Показатели]. [Счет воздействия на окружающую среду]) Это неявно включите «[Impact]. [Impact]», однако перед выполнением SSAS можно добавить в запрос [Impact]. [Impact] .defaultmember. Основываясь на этом факте, я уравновесил оба ваших набора, точно включив в них элементы по умолчанию иерархий атрибутов, которые изначально не были частью вашего набора.

Далее я инкапсулировал их в "()", чтобы указать, что они являются кортежами из большего набора. Затем оба этих кортежа инкапсулированы в "{}", как это "{(tuple1), (tuple2)} "

...