【发布时间】:2022-11-28 21:30:21
【问题描述】:
该列由十进制格式的分钟组成。这将被转换为时间格式。
例子:第5条记录是61分6秒。
这将显示为 1 小时 1 分 6 秒 - (01:01:06)。
如何在 power query editor/power BI 中解决这个问题?
【问题讨论】:
标签: powerbi visualization powerquery powerbi-desktop data-transform
该列由十进制格式的分钟组成。这将被转换为时间格式。
例子:第5条记录是61分6秒。
这将显示为 1 小时 1 分 6 秒 - (01:01:06)。
如何在 power query editor/power BI 中解决这个问题?
【问题讨论】:
标签: powerbi visualization powerquery powerbi-desktop data-transform
只需将分钟小数除以 (24 * 60) 即可将其转换为时间格式:
let
Source = Table.FromList({"0.3", "2.7", "46.8", "61.6"}),
#"Renamed Columns" = Table.RenameColumns(
Source,{{"Column1", "minutes_watched"}}),
#"Changed Type" = Table.TransformColumnTypes(
#"Renamed Columns",{{"minutes_watched", type number}}),
#"Added Custom" = Table.AddColumn(
#"Changed Type", "Custom", each [minutes_watched] / 60 / 24),
#"Changed Type1" = Table.TransformColumnTypes(
#"Added Custom",{{"Custom", type time}})
in
#"Changed Type1"
【讨论】:
添加列...自定义列..带公式
= #duration(0,0,Number.From(Text.Split(Text.From([minutes_watched]),"."){0}),Number.From(Text.Split(Text.From([minutes_watched]),"."){1}))
【讨论】:
很多选择。您可以在 Power Query 中执行此操作,在 DAX 中将其作为度量值或计算列。
这是一个简单的计算列:
Formatted =
VAR _hrs = QUOTIENT ( [minutes_watched] , 60 )
VAR _mins = INT ( [minutes_watched] - _hrs * 60 )
VAR _sec = MOD ( [minutes_watched] , 1.0 )
RETURN
FORMAT(_hrs,"00")&":"&FORMAT(_mins,"00")&":"&FORMAT(_sec,"00")
这也处理了超过 24 小时的怪人观看,此时 TIME 数据类型将溢出:
它也很容易写成一种衡量标准,其中观看的分钟数可以是一个聚合:
Formatted Minutes :=
VAR _agg_time = [Sum minutes watched] // Aggregation measure of choice goes here
VAR _hrs = QUOTIENT ( _agg_time , 60 )
VAR _mins = INT ( _agg_time - _hrs * 60 )
VAR _sec = MOD ( _agg_time , 1.0 )
RETURN
FORMAT(_hrs,"00")&":"&FORMAT(_mins,"00")&":"&FORMAT(_sec,"00")
这给你这个结果:
【讨论】: