PowerBI计算子组时间的平均值

PowerBI计算子组时间的平均值,powerbi,dax,powerbi-desktop,Powerbi,Dax,Powerbi Desktop,这可能是相对简单的,但我一直很难弄清楚如何做到这一点 我有如下数据: ┌──────┬────────────┬──────┬─────────────┐ │ TAID │ AssignedTo │ Type │ ElapsedTime │ ├──────┼────────────┼──────┼─────────────┤ │ 1 │ Person1 │ A │ .0008 │ │ 2 │ Person1 │ B │ .0007 │

这可能是相对简单的,但我一直很难弄清楚如何做到这一点

我有如下数据:

┌──────┬────────────┬──────┬─────────────┐
│ TAID │ AssignedTo │ Type │ ElapsedTime │
├──────┼────────────┼──────┼─────────────┤
│    1 │ Person1    │ A    │       .0008 │
│    2 │ Person1    │ B    │       .0007 │
│    3 │ Person2    │ A    │       .0005 │
│    4 │ Person3    │ A    │         .05 │
│    5 │ Person2    │ A    │       .0654 │
│    6 │ Person1    │ A    │       .0784 │
│    7 │ Person3    │ B    │       .4567 │
└──────┴────────────┴──────┴─────────────┘
AvgTime =
    CALCULATE (
        AVERAGE ( 'qabintaskbin'[ElapsedTime] ),
        ALLEXCEPT ( 'qabintaskbin', 'qabintaskbin'[AssignedTo] )
    )
我应该得到每个人经过的时间的平均值

我已经有了一些代码,它会占用奇怪的PowerBI运行时间并将其转换为HH:mm:ss

TaskElapsedTime = 
IF(SUM('qabintaskbin'[ElapsedTime]) >= 1,
    INT(SUM('qabintaskbin'[ElapsedTime]))*24 + 
    INT(FORMAT(SUM('qabintaskbin'[ElapsedTime]),"hh")) & ":" & 
    FORMAT(SUM('qabintaskbin'[ElapsedTime]),"mm:ss")
  ,
    FORMAT(SUM('qabintaskbin'[ElapsedTime]), "hh:mm:ss")
)
我正在研究如何分解数据并将其平均化,我发现了一些建议:

VAR TheAverage = AVERAGEX(
    KEEPFILTERS(VALUES('qabintaskbin'[AssignedTo])),
    CALCULATE(SUM('qabintaskbin'[ElapsedTime]))
)
将其与格式化代码相结合将成为:

VAR TheAverage = AVERAGEX(
    KEEPFILTERS(VALUES('qabintaskbin'[AssignedTo])),
    CALCULATE(SUM('qabintaskbin'[ElapsedTime]))
)
return IF(TheAverage >= 1,
    INT(TheAverage)*24 + INT(FORMAT(TheAverage,"hh")) & ":" & 
    FORMAT(TheAverage,"mm:ss"),
    FORMAT(TheAverage, "hh:mm:ss")
)
但这只是返回了看起来的总数

我希望它能显示每个任务的平均时间,就像示例中所有
Person1
的平均运行时间是
.0266

在写这篇文章时,我不是在数字的总和上使用
AVERAGEX
,而是用
除以
行数或其他东西


不管怎样,如果你们能帮我,我会很感激的

忽略格式方面,您应该能够这样平均:

┌──────┬────────────┬──────┬─────────────┐
│ TAID │ AssignedTo │ Type │ ElapsedTime │
├──────┼────────────┼──────┼─────────────┤
│    1 │ Person1    │ A    │       .0008 │
│    2 │ Person1    │ B    │       .0007 │
│    3 │ Person2    │ A    │       .0005 │
│    4 │ Person3    │ A    │         .05 │
│    5 │ Person2    │ A    │       .0654 │
│    6 │ Person1    │ A    │       .0784 │
│    7 │ Person3    │ B    │       .4567 │
└──────┴────────────┴──────┴─────────────┘
AvgTime =
    CALCULATE (
        AVERAGE ( 'qabintaskbin'[ElapsedTime] ),
        ALLEXCEPT ( 'qabintaskbin', 'qabintaskbin'[AssignedTo] )
    )

我想我是用这个来工作的:

ElapsedTimeAvgAssignedTo = 
var TheAverage = 
DIVIDE(
  CALCULATE(
    SUM(qabintaskbin[ElapsedTime]),KEEPFILTERS(VALUES(qabintaskbin[AssignedTo]))
  ),
  CALCULATE(
    COUNT(qabintaskbin[AssignedTo]),KEEPFILTERS(VALUES(qabintaskbin[AssignedTo]))
  ),
  ""
)
return IF(TheAverage >= 1,
    INT(TheAverage)*24 + INT(FORMAT(TheAverage,"hh")) & ":" & 
    FORMAT(TheAverage,"mm:ss"),
    FORMAT(TheAverage, "hh:mm:ss")
)
基本上,将AssignedTo过滤的经过时间的总和除以这些行的计数,得到平均值,然后将其转换为
hh:mm:ss

做过两次服务的人(7分钟一次,13分钟一次)的平均时间约为10分钟:


结果应该是什么样的?谢谢你的回复-很抱歉我的回复太慢。不幸的是,这是我尝试这一方法时得到的结果(所有方法都是相同的数字),我希望看到的是基于它们完成的服务数量的平均值。我猜我需要使用除以行数之类的方法。我不希望它根据您的图像工作。您的表中有
User
而不是
AssignedTo
。我刚刚重命名了该列。用户=分配给