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
。我刚刚重命名了该列。用户=分配给