DolphinDB基础函数解析:时间序列聚合引擎createTimeSeriesAggregator()

  • 时间序列聚合引擎

    关于聚合引擎,参见《DolphinDB基础概念理解:流数据聚合引擎

  • createTimeSeriesAggregator()

    createTimeSeriesAggregator(name, windowSize, step, metrics, dummyTable, outputTable, timeColumn, [useSystemTime=false], [keyColumn], [garbageSize])
    
    参数 意义 备注
    name 表示时间序列聚合引擎的名称,是时间序列聚合引擎的唯一标识 可以包含字母、数字、下划线,但必须以字母开头
    windowSize 表示数据窗口的长度,是一个正整数 windowSize必须是step的整数倍,否则会抛出异常;
    对流数据进行聚合计算,每次要截取一段静态数据集用于计算,这个截取出来的静态数据集我们也称为数据窗口
    step 表示计算的时间间隔,是一个正整数 windowSize和step的精度取决于useSystemTime参数
    metrics 是元代码,详情可参考元编程 可以是系统内置或用户自定义的聚合函数(使用defg关键字定义),如<[sum(qty), avg(price)]>;
    可以对聚合结果使用表达式,如<[avg(price1)-avg(price2)]>;
    也可以对计算列进行聚合运算,如<[std(price1-price2)]>
    dummyTable 表对象 提供一个样本表对象,它可以不包含数据,但它的结构必须与订阅的流数据表结构相同;
    系统利用dummyTable的schema来决定信息每一列的数据类型
    outputTable 表对象,用于保存计算结果。 它的第一列必须是时间类型,用于存放发生计算的时间戳(此处是发布表时间序列中的时间,并非本地系统时间),并且该列的数据类型要与dummyTable的时间列一致;
    如果keyColumn参数不为空,那么outputTable的第二列为keyColumn;
    如果keyColumn参数为空,那么从第二列开始,每列用于保存聚合结果。
    timeColumn 表示输入流数据表的时间列名称,是字符串标量
    [useSystemTime] 表示聚合引擎的驱动方式 useSystemTime = true:表示时间驱动方式,windowSize和step的单位是毫秒。每当到达一个预定的时间点,聚合引擎就会激活并以设定的窗口截取流数据进行计算。在此模式下,系统内部会给每一个进入的数据添加一个毫秒精度的系统时间戳作为数据窗口截取的依据;
    useSystemTime = false(默认):表示数据驱动方式,windowSize和step的单位与timeColumn的时间精度一样。只有当数据进入系统时,聚合引擎才会被激活,此时窗口的截取依据是timeColumn列内容,时间的精度也取决于timeColumn列的时间精度。
    [keyColumn] 表示分组列,是字符串标量 聚合引擎会按照keyColumn对输入数据分组,并在每组中进行聚合计算;
    指定分组计算的组别,以对流数据分组进行聚合计算。比如以股市报价数据中的每支股票为一组进行聚合计算
    [garbageSize] 正整数 默认值是50,000;
    如果没有指定keyColumn,当内存中历史数据的数量超过garbageSize时,系统会清理本次计算不需要的历史数据;
    如果指定了keyColumn,意味着需要分组计算时,内存清理是各分组独立进行的。当一个组的历史数据记录数超出garbageSize时,会清理该组不再需要的历史数据。若一个组的历史数据记录数未超出garbageSize,则该组数据不会被清理。
  • 规整尺度alignmentSize

    为了便于观察和对比计算结果,系统会对第一个数据窗口的起始时间进行规整。系统会根据step参数和数据的时间精度来确定整数类型的规整尺度alignmentSize

    假设第一条数据的时间的最小精度(ss, mmm)为X,那么第一个数据窗口的左边界的最小精度为
    X / a l i g n m e n t S i z e ∗ a l i g n m e n t S i z e X/alignmentSize*alignmentSize X/alignmentSizealignmentSize
    其中, / / /表示整除。

    例如,第一条数据的时间为2018.10.08T01:01:01.365step=100,那么X=365,第一个数据窗口的左边界的最小精度为 365 / 100 ∗ 100 = 300 365/100*100=300 365/100100=300,第一个数据窗口的起始时间为2018.10.08T01:01.300

    官方文档的这段描述有歧义,补充说明:

    第一个数据窗口的起始时间为2018.10.08T01:01.300。即第一个数据窗口WindowSize坐落在时间间隔[2018.10.08T01:01:01.300, 2018.10.08T01:01:01.400),依据step以此累加,得到每次进行计算的时间点,准确来讲此处是不存在时间区间的,在时间这一列上,有价值的是隐居step得到的一个个点。

    数据窗口一般不是针对时间列而言,只是通过时间节点给

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值