PowerBI时间函数限制问题
我有一个秒数的列,我正在尝试将它转换为PowerBI时间函数限制问题,powerbi,dax,powerbi-desktop,Powerbi,Dax,Powerbi Desktop,我有一个秒数的列,我正在尝试将它转换为HH:mm:ss格式。 如果值不为空或高于32767,则所有操作都正常工作,因为这是错误的 我的问题是:我如何仍然以HH:mm:ss格式转换32767以上的值 到目前为止,我得到的是: time_elapsed = IF(ISBLANK([time_in_sec]);"NaN";FORMAT(TIME(0;0;[time_in_sec]);"HH:mm:ss")) 但这甚至没有检查,因为我不知道如何在处理整型列时将空字段作为空字段传递,而不是Null或“N
HH:mm:ss
格式。
如果值不为空或高于32767,则所有操作都正常工作,因为这是错误的
我的问题是:我如何仍然以HH:mm:ss
格式转换32767以上的值
到目前为止,我得到的是:
time_elapsed = IF(ISBLANK([time_in_sec]);"NaN";FORMAT(TIME(0;0;[time_in_sec]);"HH:mm:ss"))
但这甚至没有检查,因为我不知道如何在处理整型列时将空字段作为空字段传递,而不是Null或“Nan”或其他任何内容
对于所有其他情况,函数格式(时间(0;0;[TIME_in_sec]);“HH:mm:ss”)
运行良好
所以有两个问题-如何将大于32767的数字转换为HH:mm:ss
,以及如何只传递空字段。
如果是负整数,它也应该返回空字段。1)可能存在空格字符或其他不可打印字符。在这种情况下,该值不被视为空白。我们需要查看您的数据样本,以准确说明发生了什么
2) 您可以自己实现将秒转换为HH:MI:SS格式的公式,如下所示:
// calculated column
hh_mi_ss =
VAR hr = FLOOR( query[column] / 3600, 1 ) // hours
VAR mn = FLOOR( MOD( query[column], 3600) / 60, 1) // minutes
VAR ss = FLOOR( MOD ( MOD( query[column], 3600) , 60 ), 1) // seconds
RETURN FORMAT( TIME(hr, mn,ss), "HH:mm:ss" )
正确答案解决了我的问题,我只需要添加IF函数来调节负数、零和空单元格的外观。
所以我用了:
hh_mi_ss = if([time_column]>0,(
VAR hr = FLOOR( [time_column] / 3600, 1) // hours
VAR mn = FLOOR( MOD( [time_column]; 3600) / 60, 1) // minutes
VAR ss = FLOOR( MOD ( MOD( [time_column], 3600) ,60 ), 1) // seconds
RETURN FORMAT( TIME(hr, mn,ss), "HH:mm:ss" ));
"Empty, 0 or negative value")
在我的语言环境中,我不得不将
,
替换为代码>在函数的参数中。我仍然有“函数'TIME'的参数的数据类型错误,或者结果太大或太小。”我现在看到原始数据中有一些负值…我必须修改我的帖子。但是除了负值(也就是整数)之外,我没有任何其他类型的数据出现。我会尝试在你的答案中加入一些IF,看看它是否有效