Я использую вычисляемый член для «предыдущего периода» как:
Case
// Test for current coordinate being on (All) member.
When [<<Target Dimension>>].[<<Target Hierarchy>>].CurrentMember.Level Is
[<<Target Dimension>>].[<<Target Hierarchy>>].[(All)]
Then "NA"
Else (
ParallelPeriod
(
[<<Target Dimension>>].[<<Target Hierarchy>>].[<<Target Level>>],
<<Number of Periods>>,
[<<Target Dimension>>].[<<Target Hierarchy>>].CurrentMember
),
[Measures].[<<Target Measure>>]
)
End
// This expression evaluates the difference between the value of the numeric
// expression in the previous period and that of the current period.
(фрагмент кода взят непосредственно из предложения Microsoft)
Он работает, как и ожидалось, но при представлении итогов я получаю итог за весь год, даже если в строках выбрано только несколько месяцев.
Итак, если я выберу, скажем, 2015 год, месяцы с января по июнь, я получу шесть правильных значений для месяцев 2014 года, но общую сумму за 2014 год вместо суммы шести представленных значений.
Любой способ получить «правильное» значение суммы? Под правильным я подразумеваю сумму выбранных строк.
Отредактировано для добавления фактического кода:
Case
When [Dim Time].[Calendar].CurrentMember.Level Is [Dim Time].[Calendar].[(All)]
Then "NA"
Else (ParallelPeriod([Dim Time].[Calendar].[Year],
1,
[Dim Time].[Calendar].CurrentMember),[Measures].[Sales])
End
My Dim Time.Calendar имеет уровни Год-Месяц-День. Достаточно легко :)
При выборе некоторых месяцев итог за год является общим итогом года, а не итогом выбранных месяцев. При выборе некоторых дней сумма за месяц является общей суммой месяца, а не суммой выбранных дней.
Отредактировано для добавления примера:
Year Month Day Sales previous year Sales
2015 04 03 74,154.56 € 135,156.41 €
Total 04 2,617,045.75 € 135,156.41 €
Total 2015 37,696,665.69 € 135,156.41 €
mdx
вопросов? Например, этот: динамическая формула mdx для вычисляемого элемента"> stackoverflow.com/questions/31000705/ - person whytheq   schedule 08.07.2015