Фильтрация элементов не влияет на итоговые значения при вычислениях в кубе SSAS - PullRequest
0 голосов
/ 17 апреля 2019

Мы столкнулись со странной, но объяснимой проблемой с вычислениями в нашем кубе SSAS. Чтобы объяснить проблему, мы отрезали маленький образец куба. У нас по физическим меркам «выручка» пришла 1: 1 из источника данных. Мы вводим некоторую логику в расчет, чтобы вычесть сумму кредита из суммы счета. Все значения находятся в «доходе», измерение разделяет типы транзакций. Это все работает нормально, пока мы не установим фильтр элемента en в свойстве измерения «тип транзакции», мы предполагаем, что общий результат будет уменьшен фильтром, но на него не влияет, как вы можете видеть на скриншоте.

Цель состоит в том, чтобы фильтр, который мы применяем с помощью Excel, также влиял на общий результат. Между прочим, в SSMS это не только превосходно, но и то же поведение.

Excel без фильтра: Excel без фильтра

После фильтрации «тип транзакции» и удаления «Кредит» итоговые значения остаются прежними: после фильтрации по типу транзакции

На вкладке вычисления куба мы производим следующие вычисления:

CALCULATE;

(MEASUREGROUPMEASURES('revenues'),[Accounting component].[Transaction type].[All])
=
([Accounting component].[Transaction type].&[-], [Measures].CURRENTMEMBER)+
([Accounting component].[Transaction type].&[Invoice], [Measures].CURRENTMEMBER)-
([Accounting component].[Transaction type].&[Credit], [Measures].CURRENTMEMBER)-
([Accounting component].[Transaction type].&[Payment], [Measures].CURRENTMEMBER);

(MEASUREGROUPMEASURES('revenues'), [Accounting component].[Charge type].&[Agreed fees])
=
([Accounting component].[Transaction type].&[Invoice], [Measures].CURRENTMEMBER)-
([Accounting component].[Transaction type].&[Credit], [Measures].CURRENTMEMBER);

(MEASUREGROUPMEASURES('revenues'), [Accounting component].[Charge type].&[Fees collected])
=
([Accounting component].[Transaction type].&[Payment], [Measures].CURRENTMEMBER);

(MEASUREGROUPMEASURES('revenues'), [Accounting component].[Charge type].&[-])
=
([Accounting component].[Transaction type].&[-], [Measures].CURRENTMEMBER);

(MEASUREGROUPMEASURES('revenues'), [Accounting component].[Charge type].[All])
=
([Accounting component].[Charge type].&[Agreed fees], [Measures].CURRENTMEMBER)+
([Accounting component].[Charge type].&[-], [Measures].CURRENTMEMBER)-
([Accounting component].[Charge type].&[Fees collected], [Measures].CURRENTMEMBER);

В нашем тестовом кубе у нас есть только одно измерение и один факт: обзор куба

Само измерение имеет иерархию с двумя уровнями: измерение

Как мы понимаем, элемент [All] не зависит от запроса субкуба, но как мы можем добиться такого поведения?

Мы также пытались изменить вычисления на функцию «Унарные операторы» с тем же результатом.

У вас есть идеи, чтобы решить эту проблему?

...