在PowerPivot中,我尝试基于两个列值在表中找到最小值。我的数据包含多个日期,多个时间段的多个人。对于每个日期的每个人,我需要确定数据中最早的时间段。
我每天都可以在数据中使用此数据,它可以很好地工作,但是当我在数据中添加多天时,它只能确定每个人的最短时间段,而不是列出每个日期的每个人的最短时间段。
>=
IF (
CALCULATE (
MIN ( [start] ),
FILTER ( actual, [Agent_User_Name] = EARLIER ( [Agent_User_Name] ) )
)
= [start],
TRUE (),
FALSE ()
)
Agent_User_Name date start
Susan 1/1/19 08:00
Susan 1/1/19 08:45
Susan 1/1/19 10:00
Susan 1/2/19 08:30
Susan 1/2/19 09:00
Timothy ....
我试图确定Susan在1/1/19的最早时间是08:00,在1/2/19的最早时间是08:30,并将该记录最早记为真或假。
答案 0 :(得分:1)
如果要创建计算列:
=
VAR Min_Time =
CALCULATE (
MIN ( Actual[Start] ),
ALLEXCEPT ( Actual, Actual[Agent_User_Name], Actual[date] )
)
RETURN
IF ( Actual[Start] = Min_Time, TRUE (), FALSE () )
在这里,对于每一行,我们在整个开始列中找到min start(这就是我们使用ALL的原因),但是保留当前行的Agent_User_Name和Date过滤器(这就是EXCEPT的原因)。实际上,它将开始列按当前用户和日期分组。
结果:
您也可以将其设为动态指标:
=
MINX (
SUMMARIZE (
Actual,
Actual[Agent_User_Name],
Actual[date],
"Min_Time", MIN ( Actual[start] )
),
[Min_Time]
)
结果:
编辑:
VAR适用于Excel 2016或更高版本。如果您使用的是旧版Excel,请重新编写不带变量的公式:
= IF (
Actual[Start]
= CALCULATE (
MIN ( Actual[Start] ),
ALLEXCEPT ( Actual, Actual[Agent_User_Name], Actual[date] )
),
TRUE (),
FALSE ()
)
不像VAR那样清晰易读,但应该可以。如果可以,请尽快切换到Excel 2016-Power Pivot引擎要好得多。