Промежуточный итог охватывает только диапазон ячеек с данными - PullRequest
1 голос
/ 13 марта 2012

Использование иллюстрированного макета

( Обратите внимание, что не все члены DimB показывают, поэтому общая сумма для DimA больше, чем сумма отображаемого DimB, игнорируйте это ):

Запрос показывает (месяцы, доход) на 0, (dima, dimb) на 1 из куба enter image description here

Я хотел бы получить некоторую помощь в создании вычисляемого члена, который вычислял бы промежуточный итог по "Месяцам"здесь ( не измерение реального времени ).

Раньше я использовал это, но на многих уровнях это было неправильно:

[Measures].[Accumulated Revenue] = 
IIF(
        ([DimMonths].[Months].CurrentMember,[Measures].[Revenue]) = 0
    AND ([DimMonths].[Months].CurrentMember.NextMember,[Measures].[Revenue]) = 0
    ,
    IIF(
        AGGREGATE({
            [DimMonths].[Months].CurrentMember :
            [DimMonths].[Months].Parent.LastChild 
        },[Measures].[Revenue]) = 0
        ,
        NULL
        ,
        Aggregate( {
            [DimMonths].[Months].Parent.FirstChild : 
            [DimMonths].[Months].CurrentMember.PrevMember
        }
        ,[Measures].[Revenue])
        )
    ,
    Aggregate( {
        [DimMonths].[Months].Parent.FirstChild : 
        [DimMonths].[Months].CurrentMember
        }
    ,[Measures].[Revenue])
)

1 Ответ

2 голосов
/ 16 марта 2012

Звучит как работа для «заданного объема». По сути, используя присвоение с заданной областью, вы можете перезаписать значение вычисленной меры вдоль среза [Member_DimA_01], чтобы эти значения представляли промежуточную сумму вместо суммы дочерних элементов.

Вот хорошее руководство от Криса Уэбба по заданию, которое поможет вам начать ...

Редактировать: вот шаблон для расчета промежуточного итога ...

WITH 
SET [Months] AS
    {
        [Date].[Calendar Month].&[2011 - Jan]
        :
        [Date].[Calendar Month].&[2011 - Dec]
    }
MEMBER [Measures].[Running Total] AS
    SUM(
         {
            [Date].[Calendar Hierarchy].[Calendar Month].&[2011 - Jan]
            :
            [Date].[Calendar Hierarchy].CurrentMember
         }
        ,[Measures].[Revenue]
    )
SELECT  
    NON EMPTY{
        [Months]
    } ON 0,
    NON EMPTY{
        [DimA].[Member].Allmembers *
        [DimB].[Member].Allmembers
    } ON 1
FROM
    [<<cube name>>]
WHERE
    [Measures].[Revenue Running Total]
...