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

Filter DAX-使用多表列上的过滤器计算计数,filter,dax,tabular,Filter,Dax,Tabular,我试图通过表格上的过滤器获得不同的计数。Scenaria如下图所示 ID△ProductName△color ----------¦ ------------------ ¦------ 1°曲柄臂△NA 2?轴承球?黑色 1¦轴承球¦黑色 3°轴承球?黑色 4°刀片黑色 2°曲臂?黑色 5?轴承球?黑色 6?轴承球?黑色 6°刀片黑色 7°刀片黑色 7°刀片黑色 3°刀片黑色 5°曲臂?黑色 9°贴花a 我想得到3个不同的“ID”计数。过滤器如下所示: 1.ProductName='B

我试图通过表格上的过滤器获得不同的计数。Scenaria如下图所示


ID△ProductName△color
----------¦ ------------------  ¦------
1°曲柄臂△NA
2?轴承球?黑色
1¦轴承球¦黑色
3°轴承球?黑色
4°刀片黑色
2°曲臂?黑色
5?轴承球?黑色
6?轴承球?黑色
6°刀片黑色
7°刀片黑色
7°刀片黑色
3°刀片黑色
5°曲臂?黑色
9°贴花a

我想得到3个不同的“ID”计数。过滤器如下所示:

1.ProductName='Bearing Ball'和Color='Black'>(ID=2,1,3,5,6>不同计数:5)
2.ProductName='Blade'和Color='Black'>(ID=4,6,7,7,3>不同计数:4)
3.ProductName='Crankarm'和Color='Black'>(ID=2,5>不同计数:2)
并将所有3个不同的计数相加。我测量的最终结果是:5+4+2=11

我分别按照以下代码计算了所有3种产品的测量值。在另一个度量中求三个度量的和结果(最终结果:=[BB]+[BL]+[CR]),但它不起作用

BB:=计算(
DISTINCTCOUNT(产品[ID]),
滤器(
价值(产品),
产品[ProductName]=“轴承球”和产品[Color]=“黑色”)
)
BL:=计算(
DISTINCTCOUNT(产品[ID]),
滤器(
价值(产品),
产品[ProductName]=“刀片”和产品[Color]=“黑色”)
)

CR:=计算(
DISTINCTCOUNT(产品[ID]),
滤器(
价值(产品),
产品[ProductName]=“曲柄臂”和产品[Color]=“黑色”)
)


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

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

IDNameColor = [ID] &"-"& [ProductName]  & "-" & [Color]
Total Count :=
COUNTAX (
    FILTER (
        DISTINCT ( 'Product' ),
        ( [Color] = "Black"
            && [ProductName] = "Bearing Ball" )
            || ( [Color] = "Black"
            && [ProductName] = "Blade" )
            || ( [ProductName] = "Crankarm"
            && [Color] = "Black" )
    ),
    [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')
函数

a或者,如果不想创建计算列,则度量可以如下所示:

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

如果有帮助,请告诉我。

第一个代码工作正常。第二个没有。谢谢。