Исключить конкретный c расчет из промежуточных итогов и итоговых итоговых строк - PullRequest
1 голос
/ 10 апреля 2020

У меня есть эта таблица:

enter image description here

И я хочу рассчитать для каждого дня и для каждой группы 1and2 %, что составляет

(Attribute1/Attribute2)*100

Но я не хочу включать 1and2 % в подытог группы ни в общей сложности

Я создал новую таблицу:

Table3 = UNION(DISTINCT('Table'[Attributes]);{{"1and2 %"}})

И я сделал это для вычисления 1and2 %:

Measure =
SUMX (
    DISTINCT ( 'Table3'[Attributes] );
    SWITCH (
        'Table3'[Attributes];
        "1and2 %"; DIVIDE (
            CALCULATE ( SUM ( 'Table'[Value] ); 'Table'[Attributes] = "Attribute1" );
            CALCULATE ( SUM ( 'Table'[Value] ); 'Table'[Attributes] = "Attribute2" );
            0
        ) * 100;
        VAR a = 'Table3'[Attributes]
        RETURN
            CALCULATE ( SUM ( 'Table'[Value] ); 'Table'[Attributes] = a )
    )
)

И вот результат, который я получаю:

enter image description here

Я хочу исключить 1and2 % (и каждый атрибут, содержащий% в будущем) из промежуточного итога группы и итогового значения.

Я действительно новичок в PowerBI и не очень знаком с формулами, подобными Excel. Может кто-нибудь, пожалуйста, помогите мне с этим?

С уважением

Ответы [ 2 ]

0 голосов
/ 10 апреля 2020

Кто-то из форума PowerBI дал мне это решение, и это именно то, что я искал:

Создайте еще одну меру, используя существующее:

Measure 2 =
VAR __Table =
  ADDCOLUMNS(
    SUMMARIZE(
      'Table 3',
      [Group],
      [Attribute],
      "__Measure",[Measure]
    ),
    "__IncludeInTotals",SEARCH("%",[Attribute],,-1)
  )
RETURN
  IF(
    HASONEVALUE('Table 3'[Attribute]),
    [Measure],
    SUMX(FILTER(__Table,[__IncludeInTotals] = -1),[__Measure])
  )
0 голосов
/ 10 апреля 2020

Я думаю, что вы можете получить то, что вы хотите, если вы вычисляете часть 1and2 % только тогда, когда это единственное в контексте фильтра, и в противном случае делаете нормальную сумму.

Measure =
IF (
    SELECTEDVALUE ( 'Table3'[Attributes] ) = "1and2 %";
    DIVIDE (
        CALCULATE ( SUM ( 'Table'[Value] ); 'Table'[Attributes] = "Attribute1" );
        CALCULATE ( SUM ( 'Table'[Value] ); 'Table'[Attributes] = "Attribute2" );
        0
    ) * 100;
    SUM ( 'Table'[Value] )
)

Для промежуточных итогов и грандов Итого, SELECTEDVALUE возвращает пустое значение, поэтому условие не выполняется, и вы просто получаете сумму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...