如何在 power bi 中找到总持续时间?
How to find total duration of time in power bi?
我在 Power bi 中将文本时间格式设置为 table。
我想通过将所有时间(以天、小时、分钟、秒为单位)相加来找到总持续时间
像这样:-
如何为此编写 Dax?
提前致谢!!
如果您的输入值表示“HH:mm:ss”格式,您可以执行以下步骤以获得所需的输出。
步骤 1:加载数据后,复制“时间”列,然后使用分隔符“:”拆分该列,如下图所示:“
以上操作的输出如下。请将列名称重命名为小时、分钟和秒。还将这些列的数据类型更改为 number/whole 数字。
Step-2: 使用脚本添加自定义列-
total_second =
([Hour] * 60 * 60)
+ ([Minute] *60)
+ ([Second])
输出如下,每行总秒数-
步骤 3:应用更改返回报告。
Step-4: 创建一个 Measure 如下-
custom_second_to_day =
var DayCount = INT(total_time[m_total_second]/(24*60*60))
var HoursCount = MOD(INT(total_time[m_total_second]/(60*60)),24)
var MinCount = MOD(INT(total_time[m_total_second]/60),60)
var SecCount = MOD(total_time[m_total_second],60)
RETURN DayCount & " Days & " & HoursCount & " Hours & " & MinCount & " Minutes & " & SecCount & " Seconds"
测量的最终输出将是 - “2 天 & 21 小时 & 56 分钟 & 51 秒”
虽然您已经排除了我的第一个答案,但我想让您知道另一种选择。我将其作为单独的答案发布,因为我不想混淆两个答案。
您也可以使用 DAX 完成所有操作,而无需我在之前的回答中解释的步骤。您可以直接从值列表中进行操作,例如-
DAX查询是(有点大,但你可以试试)-
total_seconds_dax =
var total_second =
SUMX(
total_time,
INT(
MID(
total_time[Time],
1,
SEARCH(":",total_time[Time],1,0) - 1
)
)
) * 60 * 60
+
SUMX(
total_time,
INT(
MID(
total_time[Time],
SEARCH(":",total_time[Time],1,0) + 1,
SEARCH(
":",
total_time[Time],
SEARCH(":",total_time[Time],1,0) + 1
,0
)
-
(SEARCH(":",total_time[Time],1,0) + 1)
)
)
) * 60
+
SUMX(
total_time,
INT(
MID(
total_time[Time],
SEARCH(
":",
total_time[Time],
SEARCH(":",total_time[Time],1,0) + 1
,0
) + 1
,
LEN(total_time[Time]) -
SEARCH(
":",
total_time[Time],
SEARCH(":",total_time[Time],1,0) + 1
,0
)
)
)
)
var DayCount = INT(total_second/(24*60*60))
var HoursCount = MOD(INT(total_second/(60*60)),24)
var MinCount = MOD(INT(total_second/60),60)
var SecCount = MOD(total_second,60)
RETURN DayCount & " Days & " & HoursCount & " Hours & " & MinCount & " Minutes & " & SecCount & " Seconds"
total_duration_dax_2 =
var total_second =
SUMX(
TIME2,
INT(
VALUE(LEFT(TIME2[Table2],2))
)
) * 60 * 60
+
SUMX(
TIME2,
INT(
VALUE(MID(TIME2[Table2],4,2))
)
) * 60
+
SUMX(
TIME2,
INT(
VALUE(RIGHT(TIME2[Table2],2))
)
)
var DayCount = INT(total_second/(24*60*60))
var HoursCount = MOD(INT(total_second/(60*60)),24)
var MinCount = MOD(INT(total_second/60),60)
var SecCount = MOD(total_second,60)
RETURN DayCount & " Days & " & HoursCount & " Hours & " & MinCount & " Minutes & " & SecCount & " Seconds"
结果相同
我在 Power bi 中将文本时间格式设置为 table。
我想通过将所有时间(以天、小时、分钟、秒为单位)相加来找到总持续时间 像这样:-
如何为此编写 Dax?
提前致谢!!
如果您的输入值表示“HH:mm:ss”格式,您可以执行以下步骤以获得所需的输出。
步骤 1:加载数据后,复制“时间”列,然后使用分隔符“:”拆分该列,如下图所示:“
以上操作的输出如下。请将列名称重命名为小时、分钟和秒。还将这些列的数据类型更改为 number/whole 数字。
Step-2: 使用脚本添加自定义列-
total_second =
([Hour] * 60 * 60)
+ ([Minute] *60)
+ ([Second])
输出如下,每行总秒数-
步骤 3:应用更改返回报告。
Step-4: 创建一个 Measure 如下-
custom_second_to_day =
var DayCount = INT(total_time[m_total_second]/(24*60*60))
var HoursCount = MOD(INT(total_time[m_total_second]/(60*60)),24)
var MinCount = MOD(INT(total_time[m_total_second]/60),60)
var SecCount = MOD(total_time[m_total_second],60)
RETURN DayCount & " Days & " & HoursCount & " Hours & " & MinCount & " Minutes & " & SecCount & " Seconds"
测量的最终输出将是 - “2 天 & 21 小时 & 56 分钟 & 51 秒”
虽然您已经排除了我的第一个答案,但我想让您知道另一种选择。我将其作为单独的答案发布,因为我不想混淆两个答案。
您也可以使用 DAX 完成所有操作,而无需我在之前的回答中解释的步骤。您可以直接从值列表中进行操作,例如-
DAX查询是(有点大,但你可以试试)-
total_seconds_dax =
var total_second =
SUMX(
total_time,
INT(
MID(
total_time[Time],
1,
SEARCH(":",total_time[Time],1,0) - 1
)
)
) * 60 * 60
+
SUMX(
total_time,
INT(
MID(
total_time[Time],
SEARCH(":",total_time[Time],1,0) + 1,
SEARCH(
":",
total_time[Time],
SEARCH(":",total_time[Time],1,0) + 1
,0
)
-
(SEARCH(":",total_time[Time],1,0) + 1)
)
)
) * 60
+
SUMX(
total_time,
INT(
MID(
total_time[Time],
SEARCH(
":",
total_time[Time],
SEARCH(":",total_time[Time],1,0) + 1
,0
) + 1
,
LEN(total_time[Time]) -
SEARCH(
":",
total_time[Time],
SEARCH(":",total_time[Time],1,0) + 1
,0
)
)
)
)
var DayCount = INT(total_second/(24*60*60))
var HoursCount = MOD(INT(total_second/(60*60)),24)
var MinCount = MOD(INT(total_second/60),60)
var SecCount = MOD(total_second,60)
RETURN DayCount & " Days & " & HoursCount & " Hours & " & MinCount & " Minutes & " & SecCount & " Seconds"
total_duration_dax_2 =
var total_second =
SUMX(
TIME2,
INT(
VALUE(LEFT(TIME2[Table2],2))
)
) * 60 * 60
+
SUMX(
TIME2,
INT(
VALUE(MID(TIME2[Table2],4,2))
)
) * 60
+
SUMX(
TIME2,
INT(
VALUE(RIGHT(TIME2[Table2],2))
)
)
var DayCount = INT(total_second/(24*60*60))
var HoursCount = MOD(INT(total_second/(60*60)),24)
var MinCount = MOD(INT(total_second/60),60)
var SecCount = MOD(total_second,60)
RETURN DayCount & " Days & " & HoursCount & " Hours & " & MinCount & " Minutes & " & SecCount & " Seconds"
结果相同