DAX查询以获取同一表中列的平均值

时间:2016-01-13 15:21:56

标签: powerpivot dax

我们有一个名为 MetricsTable 的表格,其中包含 A1 列。

我们希望在此表中添加计算列 AvgA1 ,以计算按的值过滤的 A1 列的平均值。我们的DAX查询应该是什么?关键是我们想要从同一个表中的值中计算平均值。

| id | A1 |集团| AvgA1

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

| 1 | 20 |组别1 | 20

| 2 | 10 |第2组| 30

| 3 | 50 |第2组| 30

| 4 | 30 |第2组| 30

| 5 | 35 |组3 | 35

此致

1 个答案:

答案 0 :(得分:2)

可能您应该使用度量并将该度量放入数据透视表的“值”部分:

AverageA1:=
AVERAGE( Metrics[A1] )

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

如果由于您的问题中未列举的原因而严格需要成为表格中的列,则以下内容将起作用:

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

CALCULATE()接受一个表达式和一个0-N参数列表来修改评估该表达式的过滤器上下文。

ALLEXCEPT()接受一个表,以及一个1-N字段列表,用于保存上下文。此列定义的评估中的当前(行)上下文是该行上每个字段的值。我们从ALL字段中删除上下文,除了在ALLEXCEPT()的参数2-N中命名的那些字段。因此,我们保留[Group]的行上下文,并计算表格中的平均值,其中[Group]与当前上下文中的相同。