Навигация по дочернему элементу иерархии категорий MDX+ не работает

проблема

Когда я определяю навигацию для дочернего элемента члена категории, я получаю следующую ошибку MDX, когда я нажимаю на элемент:

[Stats].[Top X].[Total].[subtotal].[<child of subtotal category]' is not a known MDX entity

это настройка

Я упростил MDX и перенес его для запуска в кубе Sales по умолчанию:

set [level] as [Customers].[Geography].[City]
set [selection] as
filter([level],mid([level].currentmember.name,1,1) = 'A')
+     filter([level],mid([level].currentmember.name,1,1) = 'B')
+     filter([level],mid([level].currentmember.name,1,1) = 'C')

/* MDX + function to create a dynamic hierarchy */    
CATEGORY HIERARCHY [Stats].[ABC], DEFAULT_MEMBER_NAME = "Total",LEVEL_NAME_PATTERN="L - TOP X - ${levelDepth}"
CATEGORY MEMBER [Stats].[ABC].[Total].[subtotal] as [selection] , ADD_CHILDREN=true
CATEGORY MEMBER [Stats].[ABC].[Total].[remainder] as except([level],[selection]),ADD_CHILDREN=false  
 
        
SELECT
{[Measures].[amount]} on 0,
{[Stats].[ABC].[total].[subtotal].children
,[Stats].[ABC].[total].[subtotal]
,[Stats].[ABC].[total].[remainder]
,[Stats].[ABC].[total]}  on 1
FROM [sales]

В виджете таблицы я определил навигацию как:

  • поведение щелчка: детализация
  • Стратегия детализации: mdxExpression
  • Ось детализации: строки
  • Многомерное выражение:
when $member.name = 'subtotal'  then ic3drilldownStop()
when $member.name = 'total'  then ic3drilldownStop()
when $member.level is [Time].[Calendar].[Month] then ic3drilldownStop()
else nonempty([Time].[Calendar].[Month],[measures].[amount])
end

Результат: настройка вопроса

Теперь нажав, например, на Боготу, выдается:

Ошибка: [Stats].[Top X].[Total].[subtotal].[Bogotá]' is not a known MDX entity

вопрос Как решить эту ошибку?


person Arthur    schedule 01.06.2021    source источник


Ответы (1)


Проблема в том, что вы пытаетесь использовать член категории, определенный в самой инструкции SELECT. В качестве обходного пути вы можете изменить выражение MDX для детализации следующим образом:

non empty

case
when $member.name = 'subtotal'  then ic3drilldownStop()
when $member.name = 'total'  then ic3drilldownStop()
when $member.level is [Time].[Calendar].[Month] then ic3drilldownStop()
else nonempty([Time].[Calendar].[Month],[measures].[amount])
end
   
axis 0  ([Measures].[Amount], $member) 

Как видите, выражение переопределяет не только ось 1, но и ось 0, чтобы имитировать параметр «Фильтровать по» (т. е. фильтрацию по члену Боготы в вашем примере).

person Marc Polizzi    schedule 01.06.2021
comment
Хороший. Спасибо. - person Arthur; 01.06.2021