首页 > 解决方案 > 类别总和的 DAX 中位数

问题描述

如何计算类别总和的中位数?我有样本数据:

+----------------+-----------+
|    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] )
    )

标签: powerbidax

解决方案


我不完全确定您在寻找什么,但也许使用 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]
)

希望这可以帮助。


推荐阅读