在DAX中使用多个过滤器

时间:2015-05-06 18:29:49

标签: excel pivot dax powerbi

我是DAX的新手。

我目前正在使用Power BI并试图创建使用几个不同SKU(或ID)的销售总额

我可以用它来过滤到1个sku(“A1”):

Measure = CALCULATE([销售总和],表4 [SKU] =“A1”)

但我想过滤到五种不同的SKU。

示例数据:

2      1,050.54
3     43,925.20
4      8,596.00
5      1,630.00
8      3,330.00
A1        45.24
A2       499.87
A3    53,567.05
A4       337.92
A5     4,265.00
AB    12,651.94
ACC    7,634.95
ADV   -1,769.95
ANT        1.60
AUTO   9,655.40
BOOT     268.00

这可能吗?

4 个答案:

答案 0 :(得分:5)

CALCULATE定义为CALCULATE(<expression>,<filter1>,<filter2>…)这意味着您可以同时使用多个过滤器。但是,多个过滤器将同时 。这意味着数据必须满足这两个条件。

这样做BadSumOfSales:=CALCULATE([Sum of Sales],Table3[SKU]="A1",Table4[SKU]="AB")无法满足您的需求。由于SKU必须等于A1 AB,它将返回空白

由于您希望在过滤中包含五个项目,因此您应该使用SWITCH功能。这将允许您适应应返回TRUE的多个条件,然后让您返回FALSE以获取其他任何内容

TotalsSumOfSales:=CALCULATE([Sum Of Sales],
SWITCH(Table4[SKU],
    "A1",TRUE(),
    "A2",TRUE(),
    "A3",TRUE(),
    "4" ,TRUE(),
    "5" ,TRUE(),
    "8" ,TRUE(),
      FALSE()  
))

解决此问题的另一种方法是使用OR函数。这是一个很好的选择,但只有在一次有两个过滤器时才能正常工作。如果你有两个以上,你将不得不做一些可能变得复杂的嵌套。因此,对于您的情况,我会坚持使用SWITCH,但这里是一个示例:

OrTotalSumOfSales:=CALCULATE([Sum of Sales],
OR(
    Table4[SKU]="A1",
    Table4[SKU]="A2"
))

答案 1 :(得分:1)

只是替代Or版本的第三种方式。  您可以使用双管&#39; ||&#39;在过滤器中充当Or语句。

Measure = CALCULATE([Sum of Sales],Table4[SKU]="A1" || Table4[SKU]="A2" || 
Table4[SKU]="A3" ||Table4[SKU]="A4" || Table4[SKU]="A5")  

答案 2 :(得分:1)

在这种情况下,最好的想法是在DAX中使用declare -fp fname运算符。性能优于管道运算符或IN,代码变得更易读。

仅在最新版本的DAX中支持此功能。

OR

您也可以使用GroupingSales:=CALCULATE([Sum of Sales],Table[SKU] IN {"A1","A2","A3","AB"})

更多信息:https://www.sqlbi.com/articles/the-in-operator-in-dax/

答案 3 :(得分:0)

我认为根据您的要求筛选到5个不同的SKU,您实际上不应该使用DAX来解决您的问题。

如果您只是在Excel中插入数据透视表,则可以将SKU添加到行并将销售额添加到值。如果需要,可以调整聚合(但我认为默认为SUM),因此您应该已经拥有了正确的数据。剩下的只是将其过滤到您想要的SKU。您只需创建一个表,即可在Power View中执行相同的操作。然后,您可以将SKU添加到筛选器窗格并选择所需的5 skus。

感谢您使用Power BI, -Lukasz