Как избежать ошибки «Член категории XXX определен как пустой набор» в icCube? - PullRequest
3 голосов
/ 27 июня 2019

У меня есть следующий код MDX для создания измерения категории с 4 членами:

  • все члены, составляющие 0-50% меры (TopPercent)
  • члены 50-80%
  • члены 80-95%
  • члены 95-100%

Код отлично работает на уровнях с большим количеством участников:

WITH
MEMBER [measures].[v] as eval([Tijd].[Tijd].[jaar].[2018],[Measures].[Bedrag])

set [selection] as Order( nonempty([Categorie].[Categorie].[categorie].members,[measures].[v]), [measures].[v], BDESC)  

CATEGORY HIERARCHY [Stats].[ABCD], DEFAULT_MEMBER_NAME = "Totaal", LEVEL_NAME_PATTERN="L - ABCD - ${levelDepth}"
CATEGORY MEMBER [Stats].[ABCD].[Totaal].[A (0-50%)] as
     TopPercent([selection],50, [measures].[v] ), ADD_CHILDREN=true
CATEGORY MEMBER [Stats].[ABCD].[Totaal].[B (50-80%)] as
    TopPercent([selection],80, [measures].[v] )
    - TopPercent([selection],50, [measures].[v]), ADD_CHILDREN=true
CATEGORY MEMBER [Stats].[ABCD].[Totaal].[C (80-95%)] as
    TopPercent([selection],95, [measures].[v])
    - TopPercent([selection],80, [measures].[v] ), ADD_CHILDREN=true
CATEGORY MEMBER [Stats].[ABCD].[Totaal].[D (95-100%)] as
    Order([selection], [measures].[v], BDESC)
    - TopPercent([selection],95, [measures].[v]), ADD_CHILDREN=true

SELECT
// Measures
{[measures].[v]} On 0,
// Columns    
[Stats].[ABCD].[L - ABCD - 1].members on 1,
// Rows   
[Stats].[ABCD].[L - ABCD - 2].members on 2
FROM (select  [Tijd].[jaar].[2018] on 0 from [Spendzoom])
/*ic3navigation*/

Но когда я запускаю код MDX с:

set [selection] as Order( nonempty([Categorie].[Categorie].[type].members,[measures].[v]), [measures].[v], BDESC)  

Я получаю сообщение об ошибке: Член категории "[Stats]. [ABCD]. [Totaal]. [C (80-95%)] 'определен как пустой набор.

Я попытался переписать определения следующим образом:

subcubeminus(TopPercent .... , TopPercent)

Но это дало совершенно странные результаты.

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

Ответы [ 2 ]

1 голос
/ 05 июля 2019

Как упоминалось в комментариях к ic3, начиная с icCube 6.8.10, icCube позволяет теперь иметь пустые категории.Y

Для меня это означает, что с точки зрения бизнеса, что независимо от настроек глобального фильтра категории ВСЕГДА работают.В случае, если это пустой набор, он приводит к пустому значению на панелях мониторингаexample of a Parato analysis for just 1 vendor

пример анализа Parato только для 1 поставщика (bedrag = количество, #Fact = количество счетов, #Lev = количество поставщиков)

Точно по желанию.

1 голос
/ 28 июня 2019

Чтобы понять, что происходит, вы должны проверить, как TopPercent работает (это не совсем то, что вы ожидали).

Попробуйте этот MDX:

WITH
  MEMBER [measures].[v] as eval([Tijd].[Tijd].[jaar].[2018],[Measures].[Bedrag])
  STATIC SET [selection] as [Categorie].[Categorie].[categorie].members
SELECT
  [measures].[v] On 0,
  TopPercent([selection],95, [measures].[v]) on 1,
  TopPercent([selection],80, [measures].[v] ) on 2
FROM 
  (select  [Tijd].[jaar].[2018] on 0 from [Spendzoom])

Как видитеоба возвращают один и тот же набор, и я думаю, это не то, что вы ищете.

...