如何在 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"

结果相同