DAX Медиана категорийных сумм - PullRequest
0 голосов
/ 13 февраля 2020

Как рассчитать медиану сумм категорий? У меня есть образцы данных:

+----------------+-----------+
|    category    |   sales   |
+----------------+-----------+
| a              | 1         |
| a              | 2         |
| a              | 4         |
| b              | 1         |
| b              | 3         |
| b              | 4         |
| c              | 1         |
| c              | 4         |
| c              | 5         |
+----------------+-----------+

+----------------+-----------+
| category       | sales_sum |
+----------------+-----------+
| a              | 7         |
| b              | 8         | <- This median 
| c              | 10        |
+----------------+-----------+
| median of sums | 8         | <- This is expected results, regardless row context
+----------------+-----------+

У меня был небольшой успех с этой мерой. Возвращает правильные результаты, но только для итоговой категории. Но я хочу получить 8 для каждой категории.

Median_of_sums :=
    MEDIANX (
        VALUES ( T[Category] ),
        SUM ( T[Sales] )
    )

Я могу получить то, что хочу, сославшись на вышеуказанную меру:

CALCULATE ( [Median_of_sums], REMOVEFILTERS ( T[Category] ) )

Но я бы хотел, чтобы это было в одной выстрел.

1 Ответ

1 голос
/ 13 февраля 2020

Я не совсем уверен, что вы ищете, но, возможно, использование функции SUMMARIZE поможет вам в этом:

Total = MEDIANX(SUMMARIZE(T,T[category],"Sales_Calc",SUM(T[sales])),[Sales_Calc])

Идея состоит в том, чтобы сначала сначала суммировать информацию на уровне категории, а затем вычисление медианы для сводной таблицы. Это даст следующие результаты для прикрепленного образца:

a     7
b     8
c     10
Total 8

Если вы хотите, чтобы 8 отображалось для всех категорий, вам придется использовать функцию ALL, чтобы убедиться, что контекст категории не влияет на расчет :

Total = MEDIANX(SUMMARIZE(ALL(T),T[category],"Sales_Calc",SUM(T[sales])),[Sales_Calc])

Надеюсь, это поможет.

...