美文网首页DAX从入门到精通
DAX从入门到精通 5-7 介绍allselected函数

DAX从入门到精通 5-7 介绍allselected函数

作者: PowerBI入门到实践 | 来源:发表于2019-08-25 20:27 被阅读0次

    allselect是个很有效的函数,它可以只使用透视表上的页面筛选器和切片器,来计算值。例如,我们建立如下的一个透视表。


    image.png

    这个报表里面,我们显示了当前行对应的产品的销售占总额的百分比。这里比较困难的地方是product color同时使用于行以及切片器。按照我们现有的知识,我们会这样写函数。

    [SalesPct] :=
    DIVIDE (
    [Sales Amount],
    CALCULATE (
    [Sales Amount],
    ALL ( Product[Color] )
    ))
    

    使用all函数,我们移除了color字段上的筛选器。但是,all函数会移除来自于所有筛选器的筛选条件,即来自与行以及切片器,导致了结果的错误。下面的透视表中,我们可以看到结果,这里总计不是100%,而是一个更小的数值。


    image.png

    这个问题的是,即使用户选择的是部分的颜色,分母计算的还是所有产品的总和。但是对于每一行,你计算百分比的时候,每行除的值都是大于当前选择的颜色的总和。

    所以,我们需要的是只显示选择的颜色的值的总和,而不是所有颜色的产品的值的和。我们把这种计算称为在可见情况下的计算,也就是可以按用户所选来计算总额。这里我们使用的函数是allselected。我们按这个函数来计算:

    [SalesPct] :=
    DIVIDE (
    [Sales],
    CALCULATE (
    [Sales],
    ALLSELECTED ( Product[Color] )
    ))
    

    这个函数的结果,初步来看,是正确的。

    allselected只返回筛选器选择的行的值。换句话说,也就是allselect忽略了透视表行列上的筛选条件,返回总的值。

    allselected的参数可以使用下面三种不同的方式:

    单一的列,例如allselected(product[color]),只返回选择的color的总额。

    整个表,allselected返回表所选择的所有行。

    没有参数,即allselected(),返回可见所有表的全部记录。

    通过allselected可以动态的计算百分数和比率。在第10章中,我们会深入的讨论allselected,揭示一些更深更复杂的知识。

    相关文章

      网友评论

        本文标题:DAX从入门到精通 5-7 介绍allselected函数

        本文链接:https://www.haomeiwen.com/subject/ndpkectx.html