DAX 转换为分钟和秒

DAX to convert to Minutes and Seconds

我有以下 DAX:

(sum(usage[session_duration])/100)/sum(usage[engaged_sessions])

我遇到的问题是 returns 取决于过滤器 2.49,而它应该是 returning 4.09。 4 代表分钟数,9 代表秒数。

我写了以下内容:

Var FirstTotal = (sum(usage[session_duration])/100)/sum(usage[engaged_sessions])
Var SecondTotal = FirstTotal*100
Var ThirdTotal = SecondTotal/60
VAR WholeNumberThirdTotal = INT(ThirdTotal)
Var FirstDot = FIND(".",ThirdTotal,1,0)
Var FourthTotal = MID(ThirdTotal, FirstDot, 2)
Var FifthTotal = FourthTotal*60

RETURN WholeNumberThirdTotal & "." & FifthTotal

这似乎是 return 正确的结果。我遇到的问题是我不能在带有日期字段的图表中使用它。它只适用于卡片。

有人知道我该如何改进吗?

在我看来 returns 一个以秒为单位的值:

SUM ( usage[session_duration] ) / SUM ( usage[engaged_sessions] )

也就是说,没有 /100 你有 249s,与 4m + 9s 相同。

您可以为此添加格式以获得您想要的显示:

VAR Sec = SUM ( usage[session_duration] ) / SUM ( usage[engaged_sessions] )
RETURN
    FORMAT ( INT ( Sec / 60 ), "0" ) & "." & FORMAT ( MOD ( Sec, 60 ), "00" )

正如您所指出的,这是一个文本值,因此不能用作图表视觉效果中的数值。您可以将 249 转换为十进制值 4.09,就像这样容易:

VAR Sec = SUM ( usage[session_duration] ) / SUM ( usage[engaged_sessions] )
RETURN
    INT ( Sec / 60 ) + MOD ( Sec, 60 ) / 100

如果您在条形图中使用它,条形的高度将与 4.09 分钟(即 4m + 5.4s)成正比,而不是 4m + 9s(4.15 m)。

由于 Power BI 没有可用于度量的持续时间类型,如果您使用的是单个度量,则必须牺牲一些图表的准确性,或者不以您喜欢的格式在图表上显示标签。如果您不需要在图表上显示标签,您可以只使用 Sec / 60 作为图表和显示数字的格式化版本。