DAX 查询以获取同一 table 内的列的平均值

DAX Query to get average of a column within the same table

我们有一个名为 MetricsTable 的 table,它有列 A1Group 简单地。

我们要向此 table 添加一个计算列 AvgA1,它计算由 A1 过滤的列的平均值Group 的值。我们的 DAX 查询应该是什么?关键是我们要从相同 table.

内的值计算平均值

|编号 | A1|集团 |平均 A1

| -- | --- | --- ------| ----

| 1 | 20 |第1组| 20

| 2 | 10 |第2组| 30

| 3 | 50 |第2组| 30

| 4 | 30 |第2组| 30

| 5 | 35 |第3组| 35

此致

您可能应该使用度量并将该度量放入数据透视表 table 的 'Values' 部分:

AverageA1:=
AVERAGE( Metrics[A1] )

然后它将根据数据透视表 table 中的过滤器和切片器选择进行更新,并在各个维度类别中适当地小计。

如果由于您的问题中未列举的原因,它严格需要成为 table 中的一列,则以下方法可行:

AverageA1 =
CALCULATE(
    AVERAGE( Metrics[A1] )
    ,ALLEXCEPT( Metrics, Metrics[Group] )
)

CALCULATE() 采用表达式和 0-N 个参数的列表来修改计算该表达式的过滤器上下文。

ALLEXCEPT() 采用 table 和一个包含 1-N 个字段的列表,从中保留上下文。此列定义评估中的当前(行)上下文是该行上每个字段的值。我们从 ALLEXCEPT() 的参数 2-N 中命名的那些字段除外的所有字段中删除上下文。因此,我们保留 [Group] 的行上下文,并计算 table 的平均值,其中 [Group] 与当前上下文相同。