Среднее значение полуаддитивной суммы в DAX

#excel #ssas #dax #ssas-tabular

#excel #ssas #dax #ssas-табличный

Вопрос:

У меня есть таблица фактов, в которой хранятся проекты, компании, которые администрировали проекты, и компании, которым проекты должны быть выставлены счета:

 | Project | Company original | Company to display | Perc. |
| A       | ABC              | ABC                | 50%   |
| A       | ABC              | DEF                | 20%   |
| A       | ABC              | GHI                | 30%   |
| B       | DEF              | DEF                | 60%   |
| B       | DEF              | GHI                | 40%   |
  

Теперь я хочу разработать меру, которая работает следующим образом:

  • В рамках проекта суммируйте проценты
  • По проектам усредняйте суммированные проценты (или MAX, что не должно иметь никакого значения, потому что все проекты в любом случае должны составлять 100%)

Итак, если я использую сводную таблицу из Excel (2010), это будет выглядеть так:

 | Project | Company | Perc. |
| A       | ABC     |  50%  |
| A       | DEF     |  20%  |
| A       | GHI     |  30%  |
| A (subtotal)      | 100%  |
| B       | DEF     |  60%  |
| B       | GHI     |  40%  |
| B (subtotal)      | 100%  |
| Total             | 100%  |
  

Обратите внимание, что в этой таблице нет временной оси, поэтому «обычный» случай для полуаддитивных мер (все, кроме времени) здесь не работает.

Комментарии:

1. Вы пробовали что-нибудь, что не сработало Koos?

2. В принципе, Google здесь не работал ;-). Также не было моих ПОСЛЕДНИХ знаний о зависящей от времени полуаддитивности.

Ответ №1:

Это действительно довольно просто:

 Sa = 
MAXX (
    VALUES ( Projects[Project] ),
    CALCULATE ( SUM ( Projects[Perc] ) )
)
  

По сути, вы перебираете проекты и вычисляете на уровне проекта простую сумму, которая затем агрегируется по максимуму для разных проектов.