DAX - 通过在多列上使用过滤器来计算计数
DAX - Calculate counts by using filter on multible columns
我正在尝试通过表格中的过滤器获取不同的计数。场景如下。
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
我想获得 'ID' 的 3 个不同的不同计数。过滤器如下:
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。如果在同一个查询中使用,我将丢失它们。
一种简单的方法是像这样创建一个计算列:
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]
)
我正在尝试通过表格中的过滤器获取不同的计数。场景如下。
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
我想获得 'ID' 的 3 个不同的不同计数。过滤器如下:
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。如果在同一个查询中使用,我将丢失它们。
一种简单的方法是像这样创建一个计算列:
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]
)