使用PERCENTILE动态过滤异常值

时间:2019-09-16 16:04:54

标签: powerbi dax

我正在PowerBI中构建销售仪表板。

我有一个Sales表。

我的数据来源是声明性的,因此我有一些人为错误和类型错误等导致的极端值。

假设我要使用以下方法构建直方图:

  • 在X轴上,所有销售的库存均已老化。这是“产品在销售时存货多久”。它由[Product_Age]列
  • 给出
  • 关于价值,销售数量。

我想做的是从我的计算(平均值等)和可视化中排除前1%的极值。

我已经创建了一个度量:

SalesByAge_Adjusted = 
VAR TEMP =
FILTER(
    SALES;
    VAR StockAgingMAX =
        PERCENTILE.INC(
            SALES[Sales_Age];
            0,99
        )
    RETURN 
        SALES[Sales_Age] < StockAgingMAX
)
RETURN
COUNTROWS(TEMP)

它使用PERCENTILE.INC在当前上下文中获取Sales_Age值的99%,我尝试将其用作过滤器。

但是,它只是行不通。 我可以自己衡量一下。我有几笔销售。但是,只要我拖放“ Sales_Age”以汇总值即可。它什么也没显示。

1 个答案:

答案 0 :(得分:0)

我创建了一个下表作为示例。

+-------+--------+
| Axis  | Values |
+-------+--------+
|     1 |   1067 |
|     2 |   1725 |
|     4 |    298 |
|     8 |    402 |
|    16 |   1848 |
|    32 |   1395 |
|    64 |   1116 |
|   128 |   1027 |
|   256 |   1948 |
|   512 |    790 |
|  1024 |   2173 |
|  2048 |   2025 |
|  4096 |    104 |
|  8192 |   1243 |
| 16384 |   1676 |
| 32768 |   1285 |
| 65536 |    806 |
+-------+--------+

为了过滤超出99%百分位数的值,我创建了以下度量。基本上,它在没有过滤器上下文的情况下获得总体百分比,并与每个Axis值进行比较。

Filter = IF(CALCULATE(PERCENTILE.INC('Table'[Axis],0.99),ALL('Table'))>=MAX('Table'[Axis]),1,0)

在图表的视觉效果中,您可以使用过滤器指标排除异常值

enter image description here

在这种情况下,它将过滤表的最后一个值:65,536