2013-10-24 2 views
0

Вот вопрос для начинающих. В запросе MDX, как мне вернуть свойства измерения? Единственный способ, которым я нашел, - добавить этот псевдоним в размер столбца, используя WITH MEMBER.Как получить свойства измерения в MDX

WITH 
MEMBER [Measures].[User Email] as [User].CurrentMember.Properties("Email") 
SELECT { 
    [Measures].[User Email], 
    [Measures].[Total Fees Value] 
} ON COLUMNS, 
NON EMPTY { 
    CrossJoin([Order].Children, [User].Children) 
} ON ROWS 
FROM [LineItemFact] 
WHERE ([DateOfSalePst.Days].[2013]) 

Это кажется немного неуклюжим. Проблемы возникают, если я хочу отображать итоговые суммы, добавив ([Order].[All], [User].[All]) в оси строк. Он попытается вычислить суммы для всех столбцов и будет возвращать исключения в User Email, потому что, естественно, он не может рассчитать сумму по электронной почте.

Нет ли лучшего способа получить свойства в MDX?

ответ

2

Вы можете вернуть свойства, используя DIMENSION PROPERTIES:

SELECT { 
    [Measures].[Total Fees Value] 
} ON COLUMNS, 
NON EMPTY { 
    CrossJoin([Order].Children, [User].Children) 
} 

DIMENSION PROPERTIES [User].[Email] 

ON ROWS 
FROM [LineItemFact] 
WHERE ([DateOfSalePst.Days].[2013]) 

Как вы можете получить доступ к этим свойствам зависит от клиентского инструмента, который используется для доступа к свойствам. E. g. в SQL Server Management Studio вы можете дважды щелкнуть ячейку заголовка строки, чтобы увидеть их, таблицы Excel Pivot отображают их как подсказки для инструментов, и насколько мне известно, OLAP4J также предоставляет их как свойства членов оси строк.

Но некоторые инструменты, такие как службы Reporting Services, не позволяют получить доступ к свойствам таким образом, поэтому для них обходной путь, который вы задали в своем вопросе - определение вычисленного члена, который отображает их, - это единственный способ получить к ним доступ.

Что касается агрегации по ним, пока свойство недоступно, службы Analysis Services просто возвращают NULL и не генерируют ошибку. Тем не менее, я не уверен, как Мондриан справляется с этим.

+0

Я использую Mondrian с olap4j. Ваш запрос, похоже, работает, когда я пытаюсь использовать его на Mondrian JPivot. Но когда я пытаюсь выполнить один и тот же запрос через olap4j, я получаю 'java.lang.ClassCastException: mondrian.mdx.MemberExpr не может быть передан mondrian.mdx.UnresolvedFunCall' –

+0

Я создал проблему JIRA на Mondrian для этого http: //jira.pentaho .com/просмотр/MONDRIAN-1768 –

Смежные вопросы