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,看看它是否有效