平均测量

Averaging From Measure

我是 Power BI 的新手,我正在尝试了解一些功能。

我尝试了两种方式:

1 - 明确在 AVERAGEX 函数中进行计算 平均 X = AVERAGEX(产品, 产品[数量]*产品[折扣])

2 - 我试图通过先在度量中计算 Products[Amount]*Products[Discount] 来简化上述内容,然后在 AVERAGEX 中使用它 平均 = AVERAGEX(产品, [总和])

但是,我在 table

的最后一行得到 2 个不同的值

问题是 AVERAGEX 迭代的 table 中存在重复行。

AVERAGEX(Products, [Sumx]) 将对 Products 的每一行计算一次 [Sumx],每次用一个 row-context 对应于迭代访问的行。

{("Red", 50, TRUE(), 2)} 行的第一个和第二个副本都将被访问;并设置为迭代步骤的当前 row-context。

在每个迭代步骤中,[Sumx] 会将此 row-context 转换为过滤器上下文(由于隐式 context-transition 测量适用),并将获得过滤器上下文 ("Red", 50, TRUE(), 2)。此筛选器上下文匹配两行 Products,因此内部 SUMX(Products,Products[Amount]*Products[Discount]) 将迭代两行。

最终结果是 AVERAGEX(Products, [Sumx]) 计算出以下错误值:

(
    2000*2
   +(50*2+50*2) //Both `{("Red", 50, TRUE(), 2)}` rows included in filter context of SUMX
   +(50*2+50*2) //Both `{("Red", 50, TRUE(), 2)}` rows included in filter context of SUMX again.
)
/3 //3 rows in Products (when Color="Red")

AVERAGEX(Products, Products[Amount]*Products[Discount]) 不会将上下文转换应用于行上下文并迭代此新过滤器上下文中的行,因此 Products[Amount]*Products[Discount] 计算为 [= 当前迭代行的正确值14=].