需要帮助平均嵌套DAX函数

时间:2018-12-29 22:58:44

标签: dax

需要在运算符(“ op”)之间找到前6个生产“值”。其次,将它们平均化。我需要DAX代码的帮助。

我尝试使用topN创建单独的表以查找最大值。然后使用averageX,CurrentGroup和GroupBy。错误是GroupBy语句必须找到CurrentGroup的平均值,必须引用CurrentGroup或常量。

Table = 
GROUPBY (
    GROUPBY (
        fat,
        'fat'[op],
               "topn", TOPN( 6, fat, fat[Value],DESC)
    ),
    'fat'[op],
    "mn",SUMX( CURRENTGROUP (), [topn] )
)

这在R中更容易实现:

  dt<-read.table("data2.csv", TRUE) 
  library(plyr)
  n=6 #or other
  df1<-ddply(dt,~name,summarise,mean=mean(tail(sort(val),n)))
A sample of the input and expected output is linked:

1 个答案:

答案 0 :(得分:0)

如果我的理解正确,您想对每个6取最高的op值并将其取平均值以得到一行。

如果这是正确的,那么我建议这样的事情:

AvgTop6 = 
SUMMARIZECOLUMNS(
    fat[op],
    "Mean",
    CALCULATE(
        AVERAGE(fat[Value]),
        FILTER(fat, RANK.EQ(fat[Value], fat[Value]) <= 6)
    )
)