在开始详细介绍之前,这是我正在处理的示例数据。
这是抽签卡数据,其中包含所有用户的进出。
https://1drv.ms/x/s!AhiQ2f7YQHC-gbNYMGJz0l0KU70svg
我正在尝试通过计算每个用户之间的差异来计算每个用户的花费时间
先进先出(MIN)和后进先出(MAX)
我在dax Calculated列下面使用了Min InTime和MaxOutTime。
MinInTIME = CALCULATE(
MIN('BaseData'[Date-Time]),
FILTER(ALLEXCEPT('BaseData','BaseData'[EMP_ID],'BaseData'[Begin_Date]),'BaseData'[Type]="IN"))
OutTime
MAXOutTIME = CALCULATE(
MAX('BaseData'[Date-Time]),
FILTER(ALLEXCEPT('BaseData','BaseData'[EMP_ID],'BaseData'[Begin_Date]),'BaseData'[Type]="OUT"))
然后我通过使用下面的dax计算了花费的时间。
Spent Hours = SWITCH(TRUE(),
'BaseData'[MAXOutTime]=BLANK() && 'BaseData'[MinInTIME]='BaseData'[MinInTIME],BLANK(),
'BaseData'[MinInTIME]=BLANK() && 'BaseData'[MAXOutTime]= 'BaseData'[MAXOutTime],BLANK(),
'BaseData'[MAXOutTime] < 'BaseData'[MinInTIME],BLANK(),
'BaseData'[MinInTIME]='BaseData'[MinInTIME] && 'BaseData'[MAXOutTime]= 'BaseData'[MAXOutTime],FORMAT( 'BaseData'[MAXOutTime]-'BaseData'[MinInTIME],"HH:MM"))
我得到正确的价值观。但是,当我尝试使用低于dax的平均值来计算平均值时,就会出现问题。
AvgSpendHours = FORMAT(AVERAGE('BaseData'[Spent Hours]),"HH:MM")
输出:-
我将其导出到excel中并检查了值
然后它给我的平均值低于与powerbi dax平均值不匹配的平均值
在dax中为13:13,在excel中为11:45
是使用我的DAX或PowerBI还是使用Excel。
请纠正我。
谢谢。
答案 0 :(得分:0)
他们正在计算不同的事物。在Power BI中,每对平均花费OUT
减去IN
。在Excel中,您要获取的是每日平均值OUT
减去IN
的平均值。
仅用两天时间考虑一个简化示例:
IN | OUT | Spend Hours
-----------|-------------|------------
9AM 1/1/18 | 5PM 1/1/18 | 8
8AM 1/1/18 | 2PM 1/1/18 | 6
9AM 1/2/18 | 10PM 1/2/18 | 13
在1/1/18
上有两次来回活动,该日的平均时间为7
小时。当您将平均7
小时与13
中的1/2/18
小时进行平均时,您每天的Excel平均时间为10
小时。但是,如果对每一行取平均值,则每个输入/输出对将获得(8+6+13)/3 = 9
小时的Power BI平均值。