У меня есть два временных измерения, период производства и отчетный период и мера, которую я хочу объединить с любым измерением, но не с обоими, когда пользователи запрашивают куб от excel. Для этого я создал меру флага, чтобы проверить, если оба измерения используютсяИзменение контекста с помощью Subselect MDX из клиента Excel
CREATE MEMBER CURRENTCUBE.[Measures].[AcctProdFlag] AS
IIF (
[DIM Accounting Period].[Accounting Period Hierarchy].CURRENTMEMBER.level.ordinal <> 0 and
[DIM Production Period].[Production Month Hierarchy].currentmember.level.ordinal = 0 ,
1,
IIF ([DIM Production Period].[Production Month Hierarchy].currentmember.level.ordinal <> 0 and
[DIM Accounting Period].[Accounting Period Hierarchy].currentmember.level.ordinal = 0 ,
2,
3
)
), VISIBLE =0;
Затем я использую этот флаг, чтобы создать свою меру в качестве такого
CREATE MEMBER CURRENTCUBE.[Measures].[Sales/day] AS
IIF([Measures].[AcctProdFlag] = 1 ,
([Measures].[Sales]/[Measures].[Accounting Period Day Count]),
IIF([Measures].[AcctProdFlag] = 2,
([Measures].[Sales]/[Measures].[Production Period Day Count]),
"NA")),
VISIBLE = 1, DISPLAY_FOLDER = 'Sales\Daily' , FORMAT_STRING = "#,###";
Когда я использую этот запрос от студии управления, она работает и возвращает «NA», как и ожидалось, поскольку оба измерения используются
SELECT {[Measures].[Sales/day]} ON COLUMNS ,
[DIM Production Period].[Production Month].MEMBERS ON ROWS
FROM [My Cube]
WHERE {[DIM Accounting Period].[Accounting Year].[2014],
[DIM Accounting Period].[Accounting Year].[2015]};
Но когда я добавляю учет год для фильтрации в Excel и добавить период производства в строках, мера шоу (он не должен соответствовать логике), когда я выбираю несколько отчетных лет, но показывает «NA» (как ожидалось), когда я выбираю один отчетный год. Оказывается, что при выборе нескольких лет, первенствует отправить следующий запрос к SSAS, заставляя его потерять контексте
SELECT {[Measures].[Sales/day]} ON COLUMNS ,
[DIM Production Period].[Production Month].MEMBERS ON ROWS
FROM (SELECT (
{[DIM Accounting Period].[Accounting Year].[2014],[DIM Accounting Period].[Accounting Year].[2015]}
) ON COLUMNS
FROM [My Cube]
)
Что я могу сделать, чтобы это исправить ?. Я использую SSAS для SQL Server 2008 R2 и Excel 2013.
Спасибо @GregGalloway, я испытываю искушение попробовать второе решение, но мне не кажется, что синтаксис верен. Выражаемое выражение всегда будет иметь значение true. Это вне контекста того, что было выбрано. Не могли бы вы подробнее рассказать о том, как выглядит выражение? – BICube
Кроме того, я попробовал решение динамического набора, и оно не сработало. – BICube
@Ala Я отредактировал свой ответ, чтобы сделать его более ясным. – GregGalloway