在Power BI中使用TOPN功能时的ASC参数

时间:2019-10-08 17:50:55

标签: powerbi dax

我有以下数据:

enter image description here

然后采取以下措施:

amount = SUM( play[amount] )

然后我尝试在以下两种方法中使用ASC/DESC函数的TOPN参数:

Top 2 customer per category ASC = 
VAR rnk = VALUES( play[customer] )

RETURN
CALCULATE(
    [amount],
    TOPN(
        2,
        ALL( play[customer] ),
        [amount],
        ASC
    ),
    RNK
)

Top 2 customer per category DESC = 
VAR rnk = VALUES( play[customer] )

RETURN
CALCULATE(
    [amount],
    TOPN(
        2,
        ALL( play[customer] ),
        [amount],
        DESC
    ),
    RNK
)

现在,如果我使用这两种措施,它看起来将如下所示:

enter image description here

这是怎么回事? 为什么度量Top 2 customer per category ASC什么都没显示? 如何修改该度量,以使其显示每个类别的底部两个值?

1 个答案:

答案 0 :(得分:1)

这里的问题是TOPN的第二个参数应该是一个表,而不是未过滤的列。

无论category是什么,ALL(play[customer])都会返回表:

customer
--------
xx
yy
zz
jj
qq
ff

尽管在[amount]过滤器上下文中仍对评估category进行了评估,但是对于category = "a"来说,您可以得到

customer  [amount]
------------------
xx          10
yy          12
zz          13
jj
qq
ff

对于category = "b",您会得到

customer  [amount]
------------------
xx
yy
zz
jj          15
qq          16
ff           9

这些空格被认为小于任何数字,因此它们是您对ASC进行排序时选择的空格。

请尝试以下略作修改的措施:

Top 2 customer per category ASC =
VAR rnk = VALUES ( play[customer] )
RETURN
    CALCULATE (
        [amount],
        TOPN ( 2, CALCULATETABLE ( play, ALL ( play[customer] ) ), [amount], ASC ),
        RNK
    )

使用CALCULATETABLEcategory过滤器上下文被保留。


P.S。要生成上面的表,您可以编写一个新的计算表,如下所示:

Top2Table =
CALCULATETABLE (
    ADDCOLUMNS ( ALL ( play[customer] ), "amount", [amount] ),
    play[category] = "a" <or "b">
)