MDX - icCube - Как получить процент Top x от общего количества с помощью категорий

После сообщения о динамическом topcount/toppercentage (см. «>здесь ) Я ищу дополнительную строку информации, показывающую % Top X по отношению к Total.

Итак, что-то вроде

  create dynamic set [Top 5] as 
      topcount( [Etablissement].[Etablissement].[Etablissement].members, 5, [Measures].[Nbsejours])

*** End script ***

WITH 
 CATEGORY HIERARCHY [Stats].[Top], DEFAULT_MEMBER_NAME = "All Etabs"
 CATEGORY MEMBER [Stats].[Top].[All Etabs].[Top 5 Etablissements] as 
      [Top 5],ADD_CHILDREN=true
 CATEGORY MEMBER [Stats].[Top].[All Etabs].[Autres Etablissements (>5)] as
      SubCubeComplement([Top 5]),ADD_CHILDREN=false

/* This is what I try, but it does not work */
CATEGORY MEMBER [Stats].[Top].[All Etabs].[Top 5 is % of total] as
      [Top 5]/ [Etablissement].[Etablissement].[Etablissement].members, ADD_CHILDREN=false

SELECT
  {[Measures].[NbSejours]} on 0,
  { [Stats].[Top].[Top 5 Etablissements], 
    [Stats].[Top].[Autres Etablissements (>5)],
    [Stats].[Top].[Top 5 is % of total] } on 1
From [Cube]

К сожалению, я получаю сообщение об ошибке «Выражение кортежа не сгенерировало набор кортежей или вложенный куб (числовой)».

Возможно ли такое и как?


person Arthur    schedule 18.08.2015    source источник
comment
Быстро члены категории должны определить набор вложенного куба. Ваше выражение больше похоже на стандартный вычисляемый член. Не уверен, что это работает, но попробуйте с MEMBER [Stats].[Top].[All Etabs].[Top 5 – это % от общего числа] как [Stats].[Top].[All Etabs].[Top 5 Etablissements] / [Статистика].[Верх].[Все вкладки]   -  person ic3    schedule 18.08.2015
comment
Если это не работает, вы создаете набор calc. элементы в другом «неиспользуемом» измерении   -  person ic3    schedule 18.08.2015


Ответы (1)


Предложение в комментариях выше добавить вычисляемый элемент в другое «неиспользуемое» измерение сработало:

     WITH 
     CATEGORY HIERARCHY [Stats].[Top], DEFAULT_MEMBER_NAME = "All Etabs"
     CATEGORY MEMBER [Stats].[Top].[All Etabs].[Top 5 Etablissements] as 
          [Top 5],ADD_CHILDREN=true
     CATEGORY MEMBER [Stats].[Top].[All Etabs].[Autres Etablissements (>5)] as
          SubCubeComplement([Top 5]),ADD_CHILDREN=false
    /* the hierarchy [Stats].[stats] exists, I add a new calculated member
       to it */
    CALCULATED MEMBER [Stats].[Stats].[Top 5 is % of total] as
         [Stats].[Top],[Stats].[Top].[All Etabs]
    SELECT
      {[Measures].[NbSejours]} on 0,
      {([Stats].[Stats].[default] /* the default member */}* { [Stats].[Top].[Top 5 Etablissements], 
        [Stats].[Top].[Autres Etablissements (>5)],
        [Stats].[Top].[Top 5 is % of total] }) 
      +({[Stats].[Stats].[Top 5 is % of total]} * {[Stats].[Top],[Stats].[Top].[All Etabs]}) on 1
    From [Cube]

Единственный недостаток в том, что я теперь получаю колонку дополнительно.

person Arthur    schedule 18.08.2015
comment
вы вполне можете вернуть столбец, создав кортеж с исходным столбцом - person whytheq; 18.08.2015