我测试了一下是因为您的 array vector 有空元素,而 interval 指定了 fill 方法,调用的是内置的 ffill 函数,目前 fill 空值的函数不支持 array vector 数据形式,所以会报错。
目前解决方案是把空值手动填个 0 或者什么标志元素进去,然后调用 interval,之后再过滤。需要注意 array vector 字段的更新必须是整列,更新较为麻烦,可以参考下述脚本:
bid = array(DOUBLE[], 0, 20).append!([1.479 1.4787 1.4784 1.4667, 1.4796 1.479 1.4782 1.4781 1.4783, 1.4791 1.4785 1.4698 1.4720, 1.4699 1.469 1.4707 1.4704 1.4697, 1.4789 1.477 1.4780])
bidSize = array(INT[], 0, 20).append!([[], 100 200 200 300 0, 100 200 100 0, 0 100 200 0 300, 100 0 0])
TradeDate = 2022.01.01T10:00:00 + [1, 4, 12, 19, 21]
SecurityID = rand(`APPL`AMZN`IBM, 5)
t1 = table(SecurityID as `sid, TradeDate as `date, bid as `bid, bidSize as `bidSize)
tmp = exec bidSize from t1
bidSize1=each(def(mutable x)->iif(x.count()==0, [0], x), tmp)
newBidSize=array(INT[]).append!(bidSize1)
update t1 set bidSize=newBidSize