6

我是 DAX 的新手。

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

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

Measure = CALCULATE([销售额总和],Table4[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

4 回答 4

8

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

所以这样做BadSumOfSales:=CALCULATE([Sum of Sales],Table3[SKU]="A1",Table4[SKU]="AB")不会给你你需要的东西。由于 SKU 必须等于 A1AB,因此它将返回空白

由于您有五个要包含在过滤器中的项目,因此您应该利用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"
))
于 2015-05-19T21:30:38.037 回答
5

在这种情况下,最好的办法是IN在 DAX 中使用 Operator。性能比管道运算符好得多,或者OR代码变得更具可读性。

这仅在最新版本的 DAX 中受支持。

GroupingSales:=CALCULATE([Sum of Sales],Table[SKU] IN {"A1","A2","A3","AB"})

您也可以使用CONTAINSROW.

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

于 2018-03-03T22:53:51.830 回答
3

只是 Or 版本的第三种替代方法。您可以使用双管道'||' 它充当过滤器中的 Or 语句。

Measure = CALCULATE([Sum of Sales],Table4[SKU]="A1" || Table4[SKU]="A2" || 
Table4[SKU]="A3" ||Table4[SKU]="A4" || Table4[SKU]="A5")  
于 2016-07-29T18:47:25.000 回答
0

好吧,我认为根据您过滤到 5 个不同 SKU 的请求,您实际上不应该使用 DAX 来解决您的问题。

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

感谢您使用 Power BI,-Lukasz

于 2015-05-11T14:33:28.177 回答