1+1>2 ?多数据源关联分析系列…

news2024/9/27 0:57:02

数据表连接的 join 操作,相信大家都不陌生吧?

在数据分析时,经常需要对多个不同的数据源进行关联操作,因此各类数据库的 SQL 语言都包含了丰富的 join 语句,以支持批计算关联

而在金融的业务场景中,流数据实时关联更为常见。从简单的 OHLC 数据,到逐笔委托、逐笔成交、快照行情数据,从个股日频指标到中高频复杂因子,数据每分钟每几秒就会产生更新。对这些流数据实时融合,可以使因子指标计算更高效,也能满足更丰富的信息输出需求。

流数据实时关联难在哪?

- 对齐难

不同数据源的数据结构字段顺序时间频率等不完全一致,如何满足不同应用场景的关联需求,将多个数据表进行匹配和对齐,是算法层面需要解决的问题。

- 触发难

批计算的关联操作针对全量输入数据,计算结果也是一次性输出;而流数据实时关联中,数据是源源不断的,且无法预知下一条记录何时到来。增量计算应该什么时候触发呢?这是技术实现上要解决的问题。

- 缓存难

为了在每一条输入到来后,能尽快且尽可能正确地输出结果,历史数据流的缓存是基础,面对源源不断的数据,如何设置缓存和清理机制最高效?这就对内存管理机制提出了要求。

- 计算难

金融市场数据多以面板形式出现,支持面板数据分析向量化计算的函数可以极大方便用户的数据预处理,加速业务流程,如何在流数据实时关联场景下延续这些计算函数的优秀性能,也是一款流数据处理引擎需要考虑的问题。

股票、指数、逐笔、快照…. 围绕这些不同行情数据源而产生的上述问题,使用 DolphinDB,全部轻松解决。

系列之流数据实时关联

DolphinDB 提供了多种流数据连接引擎,支持对不断增长的数据流进行实时关联处理,在大数据流量下依然能够保持毫秒级的时延性能,用户直接调用引擎即可实现流数据实时关联。

这里我们罗列了一下用户经常会用到的一些场景:

1. 根据行情快照和逐笔成交数据实时计算复杂高频因子;

2. 在逐笔成交数据的基础上丰富委托信息并实时输出;

3. 根据逐笔成交数据实时匹配最近一次报价;

4. 对多个数据源降频采样,计算分钟指标并将结果关联到同一张表中;

5. 根据快照数据实时匹配股票历史日频指标;

6. 实时计算股票与某指数的分钟收益率相关性。

我们将以一个系列的形式,为大家详细展示,如何快速实现以上业务场景。

场景一 行情快照和逐笔成交数据

第一期,我们以依赖行情快照和逐笔成交数据实时计算复杂高频因子为例。

行情快照和逐笔成交数据包含着不同的信息,很多高频因子的计算同时依赖行情快照和成交数据。对于复杂因子计算来说,融合后的数据可以更方便地作为后续复杂因子的计算的输入。

通常的做法是在行情快照数据的基础上,融合前后两个快照之间的逐笔成交数据

如下图所示,我们需要将每条行情快照记录与一个时间窗口内的全部逐笔成交记录进行聚合匹配。这个时间窗口的上下界由两条行情快照数据的时刻决定,输出与原始的每一条行情快照记录一一对应。对于一个窗口中的逐笔成交记录,既需要计算交易量总和这样的聚合值,也希望以一个字段保留窗口内的全部逐笔成交明细。

DolphinDB 提供了 Window Join 引擎的特殊窗口来实现此场景。

// create table
share streamTable(1:0, `Sym`TradeTime`Side`TradeQty, [SYMBOL, TIME, INT, LONG]) as trades
share streamTable(1:0, `Sym`Time`Open`High`Low`Close, [SYMBOL, TIME, DOUBLE, DOUBLE, DOUBLE, DOUBLE]) as snapshot
share streamTable(1:0, `Time`Sym`Open`High`Low`Close`BuyQty`SellQty`TradeQtyList`TradeTimeList, [TIME, SYMBOL, DOUBLE, DOUBLE, DOUBLE, DOUBLE, LONG, LONG, LONG[], TIME[]]) as output

// create engine
wjMetrics = <[Open, High, Low, Close, sum(iif(Side==1, TradeQty, 0)), sum(iif(Side==2, TradeQty, 0)), TradeQty, TradeTime]>
fillArray = [00:00:00.000, "", 0, 0, 0, 0, 0, 0, [[]], [[]]]
wjEngine = createWindowJoinEngine(name="windowJoin", leftTable=snapshot, rightTable=trades, outputTable=output, window=0:0, metrics=wjMetrics, matchingColumn=`Sym, timeColumn=`Time`TradeTime, useSystemTime=false, nullFill=fillArray)

// subscribe topic
subscribeTable(tableName="snapshot", actionName="appendLeftStream", handler=getLeftStream(wjEngine), msgAsTable=true, offset=-1, hash=0)
subscribeTable(tableName="trades", actionName="appendRightStream", handler=getRightStream(wjEngine), msgAsTable=true, offset=-1, hash=1)

输出结果如下,其中最后两列为 array vector 类型数据,记录了窗口中全部成交记录的 TradeQty 字段明细、TradeTime 字段明细。

关于 Window join 的具体用法、参数介绍,大家可以点击阅读原文查看我们的用户手册。

下期预告

委托信息怎么补充?

Left Semi Join 引擎级联

敬请期待……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/367054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

系统崩溃如何恢复数据?4步,教您快速抢救丢失的数据

电脑保存着很多个人文件和数据&#xff0c;如果碰到电脑系统崩溃&#xff0c;可能会导致文件无法访问&#xff0c;甚至我们的数据会发生丢失的情况。系统崩溃如何恢复数据&#xff1f;我们先来了解下Windows操作系统发生崩溃的常见原因&#xff1a;一次性打开太多软件&#xff…

AG9300方案替代|替代AG9300设计Type-C转VGA方案|CS5260设计原理图

AG9300方案替代|替代AG9300设计Type-C转VGA方案|CS5260设计原理图 安格 AG9300是一款实现USB TYPE-C到VGA数据的单片机解决方案转换器。ALGOLTEK AG9300支持USB Type-C显示端口交替模式&#xff0c;AG9300可以将视频和音频流从USB Type-C接口传输到VGA端口。在AG9300&#xff0…

LeetCode 707. 设计链表

LeetCode 707. 设计链表 难度&#xff1a;middle\color{orange}{middle}middle 题目描述 设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性&#xff1a;valvalval 和 nextnextnext。valvalval 是当前节点的值&#xff0c;nextnextnext 是指向下…

FastCGI sent in stderr: "PHP message: PHP Fatal error

服务器php7.2卸载安装7.4之后,打开网站一直无法访问,查看nginx错误日志发现一直报这个错误:2023/02/23 11:12:55 [error] 4735#0: *21 FastCGI sent in stderr: &#xff02;PHP message: PHP Fatal error: Uncaught ReflectionException: Class translator does not exist in …

OpenGL超级宝典学习笔记:原子计数器

前言 本篇在讲什么 本篇为蓝宝书学习笔记 原子计数器 本篇适合什么 适合初学Open的小白 本篇需要什么 对C语法有简单认知 对OpenGL有简单认知 最好是有OpenGL超级宝典蓝宝书 依赖Visual Studio编辑器 本篇的特色 具有全流程的图文教学 重实践&#xff0c;轻理论&#…

比特数据结构与算法(第四章_中)堆的分步构建

不清楚堆的概念和性质公式可以先到上一篇看看链接&#xff1a;比特数据结构与算法&#xff08;第四章_上&#xff09;树和二叉树和堆的概念及结构_GR C的博客-CSDN博客堆的逻辑结构是完全二叉树&#xff0c;物理&#xff08;存储&#xff09;结构是数组1.完整Heap.h和以前学的数…

计算机网络概述 第一部分

前言 为了准备期末考试&#xff0c;同时也是为了之后复习方便&#xff0c;特对计算机网络的知识进行了整理。本篇内容大部分是来源于我们老师上课的ppt。而我根据自己的理解&#xff0c;将老师的PPT整理成博文的形式以便大家复习查阅&#xff0c;同时对于一些不是很清楚的地方…

centos7搭建svn配置

基本概述 Apache Subversion&#xff08;简称SVN&#xff0c;svn&#xff09;&#xff0c;一个开放源代码的版本控制系统&#xff0c;相较于RCS、CVS&#xff0c;它采用了分支管理系统&#xff0c;它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS转移到Subversion。…

【Vue3源码】第五章 ref的原理 实现ref

【Vue3源码】第五章 ref的原理 实现ref 上一章节我们实现了reactive 和 readonly 嵌套对象转换功能&#xff0c;以及shallowReadonly 和isProxy几个简单的API。 这一章我们开始实现 ref 及其它配套的isRef、unRef 和 proxyRefs 1、实现ref 接受一个内部值&#xff0c;返回一…

3款实用又强的软件,值得收藏,不妨试试

1、白描 白描是一款高效准确的OCR文字识别、翻译与文件扫描软件&#xff0c;文字识别、表格识别转Excel、识别后翻译、文件扫描等功能&#xff0c;都非常方便&#xff0c;免费使用无任何广告。白描可以自动识别文档边界&#xff0c;生成清晰的扫描件&#xff0c;高效批量处理文…

Java8 Stream流Collectors.toMap当key重复时报异常(IllegalStateException)

一、问题 在使用Collectors.toMap(Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends U> valueMapper)&#xff08;两个参数的&#xff09;时&#xff0c;如果 key 有重复&#xff0c;则会报异常&#xff08;IllegalStateException…

工赋开发者社区 | (案例)中译语通:差别化纺纱柔性智慧工厂

中译语通&#xff1a;差别化纺纱柔性智慧工厂01应用成效中译语通科技股份有限公司是一家大数据和人工智能高科技公司。在机器翻译、跨语言大数据、产业链科技、科研数据分析、数字城市和工业互联网等领域拥有自主研发的先进系统平台&#xff0c;能够为全球企业级用户提供全方位…

[oeasy]python0091_仙童公司_八叛逆_intel_8080_altair8800_牛郎星

编码进化 个人电脑 计算机 通过电话网络 进行连接 极客 利用技术 做一些有趣的尝试 极客文化 是 认真研究技术的 文化 计算机 不再是 高校和研究机构高墙里面的 神秘事物而是 生活中常见的 家用电器 ibm 蓝色巨人脚步沉重 dec 小型机不断蚕食低端市场甚至组成网络干掉大型机…

【仔细理解】计算机视觉基础1——特征提取之Harris角点

Harris角点是图像特征提取中最基本的方法&#xff0c;本篇内容将详细分析Harris角点的定义、计算方法、特点。 一、Harris角点定义 在图像中&#xff0c;若以正方形的小像素窗口为基本单位&#xff0c;按照上图可以将它们划分三种类型如下&#xff1a; 平坦区域&#xff1a;在任…

【C++】Visual Studio C++使用配置Json库文件(老爷式教学)

在visual studio中使用C调用Json的三方库有很多种办法&#xff0c;这里简述一种比较方便的方法。绝对好用&#xff0c;不好用你砍我。 文章目录在visual studio中使用C调用Json的三方库有很多种办法&#xff0c;这里简述一种比较方便的方法。绝对好用&#xff0c;不好用你砍我。…

百度前端一面高频react面试题指南

React 高阶组件、Render props、hooks 有什么区别&#xff0c;为什么要不断迭代 这三者是目前react解决代码复用的主要方式&#xff1a; 高阶组件&#xff08;HOC&#xff09;是 React 中用于复用组件逻辑的一种高级技巧。HOC 自身不是 React API 的一部分&#xff0c;它是一…

Python 零基础入门必看,这些知识点你都掌握了吗?

导读 Python 作为当今最受欢迎的编程语言之一&#xff0c;几乎各个领域都会涉及到&#xff0c;所以学习 Python 自然刻不容缓&#xff01;作为一个没有接触过 Python 的小白&#xff0c;一开始要想的不是如何使用以及各种高深莫测的玩法&#xff0c;从最基础的了解以及构建环境…

node笔记

一、FS模块 fs.readFile查询文件 fs.writeFile修改文件 __dirname表示当前文件所处的目录&#xff08;双下划线&#xff09; 二、path模块 什么是path 路径模块 path模块是Node.,js 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性&#xff0c;用来满足用户…

Spring 之bean的生命周期

文章目录IOCBean的生命周期运行结果实例演示实体类实例化前后置代码初始化的前后置代码application.xml总结今天我们来聊一下Spring Bean的生命周期&#xff0c;这是一个非常重要的问题&#xff0c;Spring Bean的生命周期也是比较复杂的。IOC IOC&#xff0c;控制反转概念需要…

华为OD机试题,用 Java 解【合规数组】问题

最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…