PowerBI:使用度量来获得排名
PowerBI: Using a measure to get a rank
我是 PowerBi 的新手,但我找不到问题的答案。
我有这样的数据集:
Timestamp ErrorType Duration (ms)
16/05/10 8:00 3 100
16/05/10 8:00 4 1000
17/05/10 10:00 3 100
18/05/10 8:00 3 200
18/05/10 10:00 4 200
18/05/10 10:00 5 50
19/05/10 10:00 5 10
19/05/10 10:00 5 10
这些名称很有希望是不言自明的:时间戳是问题发生的时间,ErrorType 是知道错误类型的代码,而 Duration 表示问题持续了多长时间。我想做的基本上是采取一种措施来给我错误类型的等级,同时考虑我可以在页面上使用的任何过滤器。
例如,如果我将自己限制在 17/05 到 19/05 的时间段内,则 3 的度量将给我 1,而 4 的度量将给我 2,反之则相反我应该在所有时间范围内采样吗?在所有情况下,5 的度量将给我 3。第一种情况在下面的 table 中说明:
ErrorType Rank
3 1
4 2
5 3
这背后的想法是能够使用图表在指定时间范围内的重要性对图表进行颜色编码。例如,对于在指定时间范围内持续时间最长(累积)的错误,则应为红色;第二个是橙色;以及前八个。那部分我知道怎么做。
我已经尝试了一些方法,但它就是行不通,出于某种原因,它说在我刚刚创建的 Table 中找不到名为“总计”的列。 ..
Color =
VAR TotalTime = CALCULATE(
SUM('AuFilDeLEau'[Duration]),
ALLSELECTED('AuFilDeLEau'[ErrorCode])
)
VAR ColumnTotalTime = (SUMMARIZE(Table, Table[Duration], "Total", SUM(Table[Duration])))
VAR RankforColor = (RANKX(ColumnTotalTime, [Total],TotalTime))
return RankforColor
目前,这只为每个 ErrorType 返回 1。
我希望我的问题很清楚,你将能够帮助我,提前致谢^^
编辑:试过 smpa01 的解决方案,没有用,它是这样做的:
编辑:尝试了 smpa01 的第二个解决方案,成功了。标记为已解决。谢谢!
_rank =
VAR _1 =
MAX ( 'Table'[ErrorType] )
VAR _2 =
RANKX (
FILTER ( ALLSELECTED ( 'Table' ), 'Table'[ErrorType] = _1 ),
CALCULATE ( MAX ( 'Table'[Duration] ) ),
,
ASC,
DENSE
)
RETURN
_2
编辑:修改数据后添加此部分
_revisedRank =
IF (
HASONEVALUE ( 'Table'[ErrorType] ) = TRUE (),
RANKX (
ALL ( 'Table'[ErrorType] ),
CALCULATE ( SUM ( 'Table'[Duration (ms)] ) ),
,
DESC
)
)
我是 PowerBi 的新手,但我找不到问题的答案。
我有这样的数据集:
Timestamp ErrorType Duration (ms)
16/05/10 8:00 3 100
16/05/10 8:00 4 1000
17/05/10 10:00 3 100
18/05/10 8:00 3 200
18/05/10 10:00 4 200
18/05/10 10:00 5 50
19/05/10 10:00 5 10
19/05/10 10:00 5 10
这些名称很有希望是不言自明的:时间戳是问题发生的时间,ErrorType 是知道错误类型的代码,而 Duration 表示问题持续了多长时间。我想做的基本上是采取一种措施来给我错误类型的等级,同时考虑我可以在页面上使用的任何过滤器。
例如,如果我将自己限制在 17/05 到 19/05 的时间段内,则 3 的度量将给我 1,而 4 的度量将给我 2,反之则相反我应该在所有时间范围内采样吗?在所有情况下,5 的度量将给我 3。第一种情况在下面的 table 中说明:
ErrorType Rank
3 1
4 2
5 3
这背后的想法是能够使用图表在指定时间范围内的重要性对图表进行颜色编码。例如,对于在指定时间范围内持续时间最长(累积)的错误,则应为红色;第二个是橙色;以及前八个。那部分我知道怎么做。
我已经尝试了一些方法,但它就是行不通,出于某种原因,它说在我刚刚创建的 Table 中找不到名为“总计”的列。 ..
Color =
VAR TotalTime = CALCULATE(
SUM('AuFilDeLEau'[Duration]),
ALLSELECTED('AuFilDeLEau'[ErrorCode])
)
VAR ColumnTotalTime = (SUMMARIZE(Table, Table[Duration], "Total", SUM(Table[Duration])))
VAR RankforColor = (RANKX(ColumnTotalTime, [Total],TotalTime))
return RankforColor
目前,这只为每个 ErrorType 返回 1。 我希望我的问题很清楚,你将能够帮助我,提前致谢^^
编辑:试过 smpa01 的解决方案,没有用,它是这样做的:
编辑:尝试了 smpa01 的第二个解决方案,成功了。标记为已解决。谢谢!
_rank =
VAR _1 =
MAX ( 'Table'[ErrorType] )
VAR _2 =
RANKX (
FILTER ( ALLSELECTED ( 'Table' ), 'Table'[ErrorType] = _1 ),
CALCULATE ( MAX ( 'Table'[Duration] ) ),
,
ASC,
DENSE
)
RETURN
_2
编辑:修改数据后添加此部分
_revisedRank =
IF (
HASONEVALUE ( 'Table'[ErrorType] ) = TRUE (),
RANKX (
ALL ( 'Table'[ErrorType] ),
CALCULATE ( SUM ( 'Table'[Duration (ms)] ) ),
,
DESC
)
)