最近在做一个项目,用到了Power Automate从excel online中获取一个表提交到流数据集中。
原始数据表:
在读取日期列的时候,它总是返回错误:
Error parsing request for dataset sobe_wowvirtualserver|69bcf21f-xxxxx-46ac-xxxx-c8b799xxx34a: Error encountered by JSON parser when reading input data for column '<pi>报修时间</pi>': <pi>Could not convert string to DateTime: 44570.8943287037. Path '[0].报修时间', line 6, position 30.</pi>
错题点:
因为设置流数据集的日期列为时间格式,而从excel获得的日期却是数字格式的,因此报错。
这显然不是我们想要的。我们期望的是:
经过一番研究与参考,终于搞清楚了2件事:
所以对于该数字的处理也就有了思路:
44570.8943读取的时候是个字符串,带着小数点
代码:
addDays(
'1899-12-30', int(substring(string(items('Apply_to_each')?['开始时间']), 0,
indexOf(string(items('Apply_to_each')?['开始时间']),'.'))), 'yyyy-MM-dd')
结果:
你问我为啥不是从1899-12-31开始,而是从1899-12-30开始?
我也不知道,因为如果从1899-12-31开始算,得到的结果是1月10日,结果多了一天。好像是因为有个bug默认1900年是闰年?无所谓了。
如果我们想得到更准确的时间,就得使用addSeconds这个表达式了:
让人无法看懂的表达式:
addSeconds(
'1899-12-31 00:00:00',
int(
string(
mul(
float(
items('Apply_to_each')?['开始时间'])
,86400)
)
)
)
步骤:
哎,实在不想说啥:
int 将整数的字符串版本转换为实际整数。 int('<value>') 举例:int('10') https://docs.microsoft.com/zh-cn/azure/logic-apps/workflow-definition-language-functions-reference#int
运行结果:
成功~!当然,其实写法有很多,自己可以摸索。
总之:
经过千辛万苦,可算是搞成功了,正常进入了流数据集:
而经过较长时间的探索,我只能说,PowerAutomate所谓的被称为“低代码”,目前来看,只是在某些方面合格吧。
本文分享自 PowerBI生命管理大师学谦 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!