DAX - 使用多列上的过滤器计算计数

时间:2017-02-07 19:30:03

标签: filter dax tabular

我试图通过表格上的过滤器获得不同的计数。 Scenaria就像下面一样。

ID ¦ProductName ¦ color ----------¦ ------------------ ¦------ 1 ¦Crankarm ¦ NA 2 ¦Bearing Ball ¦ Black 1 ¦Bearing Ball ¦ Black 3 ¦Bearing Ball ¦ Black 4 ¦Blade ¦ Black 2 ¦Crankarm ¦ Black 5 ¦Bearing Ball ¦ Black 6 ¦Bearing Ball ¦ Black 6 ¦Blade ¦ Black 7 ¦Blade ¦ Black 7 ¦Blade ¦ Black 3 ¦Blade ¦ Black 5 ¦Crankarm ¦ Black 9 ¦Decal ¦ NA

我希望获得3种不同的“ID”特色。过滤器如下所示: 1. ProductName ='Bearing Ball' and Color = 'Black' >(ID=2,1,3,5,6 > Distinct count:5) 2. ProductName ='Blade' and Color = 'Black' >(ID=4,6,7,7,3 > Distinct count:4) 3. ProductName ='Crankarm' and Color = 'Black' >(ID=2,5 > Distinct count:2) 并将总结所有3个不同的计数。我的衡量标准的最终结果将是:5 + 4 + 2 = 11。

我通过以下代码计算了所有3种产品的测量值。并且在另一个度量中有3个度量的SUM结果。(FinalResult:= [BB] + [BL] + [CR])但它不起作用。

BB:= CALCULATE ( DISTINCTCOUNT ( Product[ID] ), FILTER ( VALUES (Product ), Product[ProductName] = "Bearing Ball" && Product[Color] = "Black" ) ) BL:= CALCULATE ( DISTINCTCOUNT ( Product[ID] ), FILTER ( VALUES (Product ), Product[ProductName] = "Blade" && Product[Color] = "Black" ) )

CR:= CALCULATE ( DISTINCTCOUNT ( Product[ID] ), FILTER ( VALUES (Product ), Product[ProductName] = "Crankarm" && Product[Color] = "Black" ) )

通过添加OR,我无法在同一查询中获得不同的计数,因为不同的ProductName可以具有相同的ID。如果在相同的查询中使用,我将丢失它们。

1 个答案:

答案 0 :(得分:0)

一种简单的方法是创建一个计算列,如下所示:

IDNameColor = [ID] &"-"& [ProductName]  & "-" & [Color]

然后在这样的度量中使用该计算列来获得产品数量:

Total Count :=
CALCULATE (
    DISTINCTCOUNT ( 'Product'[IDNameColor] ),
    FILTER (
        ALL ( 'Product' ),
        ( [Color] = "Black"
            && [ProductName] = "Bearing Ball" )
            || ( [Color] = "Black"
            && [ProductName] = "Blade" )
            || ( [ProductName] = "Crankarm"
            && [Color] = "Black" )
    )
)

如果您希望它受到过滤器的影响,可以删除ALL('Product')功能。

或者,如果您不想创建计算列,则度量可以是这样的:

Total Count :=
COUNTAX (
    FILTER (
        DISTINCT ( 'Product' ),
        ( [Color] = "Black"
            && [ProductName] = "Bearing Ball" )
            || ( [Color] = "Black"
            && [ProductName] = "Blade" )
            || ( [ProductName] = "Crankarm"
            && [Color] = "Black" )
    ),
    [ID] & [ProductName]
        & [Color]
)

如果有帮助,请告诉我。