Azure流分析将int64输出为int32

时间:2018-08-30 08:35:03

标签: azure casting azure-table-storage azure-stream-analytics

我有一个Stream Analytics作业,它将时间戳转换为自Epoch以来的毫秒数。

为此,我使用一个JavaScript函数,该函数使用以下代码返回bigint

new Date(date).getTime()

当我在Azure门户中测试此作业时,我得到正确的结果,例如: 2018-08-29T13:01:54.0000000Z成为1535547714000

enter image description here

但是当我运行该作业并将其输出存储在Azure表中时,1535547714000变为-2050577968

我注意到,如果将bigint 1535547714000投射到int中,则会得到-2050577968。因此,我检查了列的类型,奇怪的是,它是Int64

enter image description here

TL; DR: 作业输出bigint,列类型为 bigint Int64,但是不知何故,介于两者之间的某个值似乎被转换为{{1} }。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

罗道夫。如果要将数据传输到Azure表存储中,则必须遵循其规则。

基于doc,Azure表存储仅支持int32int64类型,不支持bigint类型。因此,实际上没有任何神秘的机制可以将您的数据类型转换为bigint数据到表中,然后将其转换为相应的Int64类型。但是,应该为{{1} },无法转换为int。您可以将feedback提交给Azure来发布此问题。

作为一种解决方法,您可以尝试获取数据并将其转换为Azure Table Storage Azure触发函数中的Int64。请参阅此doc

希望它对您有帮助。