尝试了解 DAX 中的 CALCULATE 和 FILTER
Trying to Understand CALCULATE and FILTER in DAX
我正在尝试使用 FILTER 和 CALCULATE DAX 表达式。我想找出产品价格低于类别平均成本的不同订单的数量:自行车。
首先,我创建了一个 Measure 来计算自行车的平均成本,即 913.61
avg product cost bikes =
CALCULATE (
AVERAGE ( AW_Product_DIM[ProductCost] ),
AW_Product_Categories_DIM[CategoryName] = "Bikes"
)
接下来,我将创建一个度量来计算总订单数。
Total Orders =
DISTINCTCOUNT ( AW_Sales[OrderNumber] )
接下来,我有一个带有 FILTER 的 CALCULATE 函数来计算订单总数,其中的产品成本低于所有产品的平均成本 913.61。
Sales less than Bike's avg =
CALCULATE (
[Total Orders],
FILTER (
AW_Product_DIM,
AW_Product_DIM[ProductCost] < [avg product cost bikes]
)
)
你能帮我理解为什么我在“销售额低于自行车的平均”列中没有得到任何值吗?配件和服装类别中的所有产品都低于自行车的平均成本 913.61。所以应该有 16983 的销售额低于 Bike 的平均配饰和 6976 的服装。所有的自行车都超过1000辆,所以那应该是空的。
请参考
其中包含我正在尝试可视化的矩阵视图。
度量是在调用它的上下文中计算的。当您在 FILTER(或任何迭代器函数)内部调用度量时,它是 calculated within the row context of the table you are iterating through 并且每一行可以是不同的值。
解决这个问题的一种方法是在 FILTER 之外计算它一次,然后为 FILTER 迭代的每一行重复使用该值,如下所示:
Sales less than Bike's avg =
VAR AvgBikeCost = [avg product cost bikes]
RETURN
CALCULATE (
[Total Orders],
FILTER (
AW_Product_DIM,
AW_Product_DIM[ProductCost] < AvgBikeCost
)
)
我正在尝试使用 FILTER 和 CALCULATE DAX 表达式。我想找出产品价格低于类别平均成本的不同订单的数量:自行车。 首先,我创建了一个 Measure 来计算自行车的平均成本,即 913.61
avg product cost bikes =
CALCULATE (
AVERAGE ( AW_Product_DIM[ProductCost] ),
AW_Product_Categories_DIM[CategoryName] = "Bikes"
)
接下来,我将创建一个度量来计算总订单数。
Total Orders =
DISTINCTCOUNT ( AW_Sales[OrderNumber] )
接下来,我有一个带有 FILTER 的 CALCULATE 函数来计算订单总数,其中的产品成本低于所有产品的平均成本 913.61。
Sales less than Bike's avg =
CALCULATE (
[Total Orders],
FILTER (
AW_Product_DIM,
AW_Product_DIM[ProductCost] < [avg product cost bikes]
)
)
你能帮我理解为什么我在“销售额低于自行车的平均”列中没有得到任何值吗?配件和服装类别中的所有产品都低于自行车的平均成本 913.61。所以应该有 16983 的销售额低于 Bike 的平均配饰和 6976 的服装。所有的自行车都超过1000辆,所以那应该是空的。
请参考
其中包含我正在尝试可视化的矩阵视图。
度量是在调用它的上下文中计算的。当您在 FILTER(或任何迭代器函数)内部调用度量时,它是 calculated within the row context of the table you are iterating through 并且每一行可以是不同的值。
解决这个问题的一种方法是在 FILTER 之外计算它一次,然后为 FILTER 迭代的每一行重复使用该值,如下所示:
Sales less than Bike's avg =
VAR AvgBikeCost = [avg product cost bikes]
RETURN
CALCULATE (
[Total Orders],
FILTER (
AW_Product_DIM,
AW_Product_DIM[ProductCost] < AvgBikeCost
)
)