Непоследовательное поведение свертки в объекте сетки PerformancePoint - PullRequest
0 голосов
/ 06 февраля 2012

У меня есть базовая панель инструментов, которая состоит из одного объекта «сетки», отображающего 3 такта во времени, разделенных иерархией бизнес-единицы ...

При фильтрации по одному элементу на любом из уровней в иерархии бизнес-единицы все корректно сворачивается ...

enter image description here

Однако, когда я фильтрую более одного элемента на одном уровне, свернутые значения больше не основаны на визуальных итогах ...

enter image description here

На изображении выше значения в строке «Все» представляют значения для всей нефильтрованной иерархии бизнес-единиц. Было бы идеально, если бы сетка сворачивалась так, как будто «VisualTotals» была включена ... независимо от выбора фильтра. В этом случае для второго изображения, приведенного выше, можно ожидать, что значения в строке «Все» будут выглядеть следующим образом ...

PO E-PO Count = 3531     (497 + 3034)
PO Count =      7923     (2094 + 5829)

Я рассмотрел возможность использования VisualTotals () MDX-функции , но я бы предпочел не настраивать запрос, потому что я где-то читал, что это снижает способность конечных пользователей уклоняться вверх / вниз / поперек .

1 Ответ

1 голос
/ 25 февраля 2012

Оказывается, именно так работает PPS.Я закончил тем, что использовал профилировщик для захвата MDX, генерируемого в обоих сценариях, а PPS использует вычисляемый элемент для агрегирования множественного выбора (вместо использования SUBSELECTs, таких как Excel), поэтому, когда уровень ROWS объединяется с функцией HIERARCHIZE, вы получаетеэффект невизуальных итогов ...

WITH MEMBER [Business Unit].[Segment Division Plant].[ Aggregation] AS 
Aggregate
(
  {
    [Business Unit].[Segment Division Plant].[Plant].&[PAK]&[FLG]&[2520]
   ,[Business Unit].[Segment Division Plant].[Plant].&[PAK]&[FLG]&[2504]
  }
) 
,SOLVE_ORDER = 0 
SELECT

...<snip>...

    Hierarchize
    (
      {
        [Business Unit].[Division Plant].[All]
       ,Descendants
        (
          [Business Unit].[Division Plant].[All],
         ,AFTER
        )
      }
    ) ON ROWS

...<snap>...

Если бы он использовал SUBSELECT как Excel, поведение представляло бы VisualTotals и MDX выглядело бы следующим образом ...

  FROM 
  (
    SELECT 
      {
        [Business Unit].[Segment Division Plant].[Plant].&[PAK]&[FLG]&[2504]
       ,[Business Unit].[Segment Division Plant].[Plant].&[PAK]&[FLG]&[2520]
      } ON COLUMNS
   FROM [<cube name>]
  )
...