首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从计算、建模到回测:因子挖掘的最佳实践

快照数据以两种形式存储:(1)各档数据分别存储为一列;(2)用 array vector (DolphinDB中一种特殊的向量,用于存储可变长度的二维数组)将所有档位的数据存储为一列。...有状态的因子,意为因子的计算需要基于之前的计算结果,如一般的滑动窗口计算,聚合计算等,都是有状态的因子计算。...多值宽表的数据冗余度很低,配合 TSDB 引擎的 array vector,存储效率很高,但是新因子或新股票的出现,需要重新生成因子表。 分区方式选择。可用于分区的列包括时间列,股票代码列和因子列。...OLAP 引擎是纯列式存储,不适合表过宽,在列数超过80以后,写入性能会逐渐下降,故不做考虑。...这是因为纵表模式 OLAP 的分区字段是时间和因子,这种情况下查询某只股票所有的因子需要扫描全部分区的全部列才能取出所需的数据;而宽表TSDB引擎只需要取三列数据,所以可以很快查出数据;纵表TSDB引擎可以按股票代码进行索引检索所以速度也比较快

6.6K22

干货 | 高频多因子存储的最佳实践

面对如此庞大的数据量,如何保证高效的数据写入是因子库存储的一大挑战,如果不能支持并充分发挥多块磁盘的 IO,写入耗时将达数小时以上。...单值模型一般有4列:时间戳、股票代码、因子编号以及因子值,如下图所示;单值模型的数据在需要面板数据的场景,需要将数据转换成面板模式。...1、新增因子:在新增因子的场景,窄表模式只需要进行 Insert 操作,将新增因子数据写入;而宽表模式需要先进行addColumn 操作,然后更新新增因子列数据,DolphinDB 目前的更新机制是重写...而宽表模式在当前设计下,如果要更新一列因子数据,需要把所有的分区数据全部重写,所以耗时非常长。 2、更新因子:量化投研中,重新计算因子数据是常见的场景。...3、删除因子:删除因子虽然不是必须的,但可以释放存储空间,以及提供其他便利。当前窄表模型的分区方案在删除指定因子时耗时在秒级 , TSDB 引擎下的宽表模式目前不支持删除因子列。

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    分组时需要求和的数据有几十列,有快捷方法吗?

    问题 - 在我以前的文章中,涉及分组依据操作的内容,需要聚合(求和等)的列通常不会太多,因此,手工操作一下也很快,但有朋友还是碰到了需要对几十列进行求和的问题,这个时候,如果还是手工一项项地设置的话...- 2.思路 - 首先,如果一时没想到快捷的方法,而工作上又要马上出数据,那就直接手工操作,其实即使几十列也不见得要很久(虽然比较烦,但是,在实际工作中,对于很多简单的操作问题,如果也不是经常会碰到...再回到这个问题,实际就是怎么在分组时,实现批量处理的问题,下面直接通过一个简单的例子来进行说明(数据就不造几十列的了,不然不知道该怎么截图,用下面的方法,两列跟几十列是一样的)。...; 2、其中要注意的是,原List.Sum([数量])内需要引用的是需要求和的列的数据,而不是列名本身,即不是List.Sum("数量"),因此,需要通过Table.Column函数来通过列名获得该列的数据...问题还没完 - 通过上面的修改,我们实现了将列名列表转换成了分组函数里的聚合参数列表,但是,有几十列,如果手写几十个列名也够烦的,而且都得加上双引号!

    95320

    有孩子吗?使用Timekpr-nExt限制 Linux 中每个账户的电脑使用

    使用 Timekpr-nExt 在 Linux 上限制电脑使用 如果你家里有小孩,他们花太多时间在电脑上,你可能想对他们的使用进行一些限制。...可以让你根据一天的时间、一天、一周或者一月的小时数来限制某些账户的电脑使用。你也可以设置时间间隔来强制账户用户休息。...Timekpr-nExt 的功能 除了一个令人讨厌的风格化的名字,Timekpr-nExt 有以下功能: 将系统使用限制设置为按日智能限制、每日、每周或每月限制 你还可以根据时间和小时设置访问限制 用户可以看到关于他们还剩多少时间的通知...在 Linux 中安装 Timekpr-nExt 对于基于 Ubuntu 的 Linux 发行版(如 Mint、Linux Lite 等),有一个官方 PPA 可用。...并不是每个人都会觉得它有用,但家里有小孩的人如果觉得有必要的话,可以使用它。 你是否使用其他应用来监控/限制儿童访问计算机?

    1.8K20

    代理http服务商为什么有流量使用限制的购买套餐?这种划算吗?

    代理http提供商这样设置的意义有哪些?通过上述分析,我们可以看到,设立流量限制的购买套餐对于收费代理http服务来说具有重要的意义。...5、灵活性更高相比于时间限制收费模式,流量限制收费模式更加灵活,用户可以根据自己的需要购买不同的套餐,从而更好地满足自己的需求。代理http提供商流量限制收费模式相比较与时间限制收费模式有哪些好处?...在选择代理http服务时,很多用户会面临一个选择:流量限制收费模式和时间限制收费模式,哪种更好?这里我们来分析一下流量限制收费模式相比较与时间限制收费模式有哪些好处。...1、更加灵活流量限制收费模式相比时间限制收费模式更加灵活,用户可以根据自己的需求购买不同的套餐,从而更好地满足自己的需求。...总之,流量限制收费模式相比时间限制收费模式具有更多的优势,尤其是在使用场景需要更加灵活和个性化的情况下。因此,选择流量限制收费模式的代理http服务更加合适。

    1.1K20

    新型行情中心:基于实时历史行情的指标计算和仿真系统

    通常以物联网为主要应用场景的时序数据库都有这个限制,例如InfluxDB和TDengine都要求一个时间序列在一个时间戳上具有唯一值。...但是档位比较多,或者档数可变的情况下,用一个数组来表示多档数据是一种更通用更高效的解决方案。因此数据库支持数组类型,对于解决行情中心的存储问题非常有帮助。...表5:DolphinDB 宽表存储 如表5所示,在一张宽表中存储4500只股票的1098个因子。DolphinDB支持32767列大宽表。一部分时序数据库不支持大宽表或者存在明显的性能问题。...例如ClickHouse会把每列数据都存为一个文件,在大宽表中多列数据文件读写就会遇到显著的性能下降。DolphinDB自研的TSDB存储引擎能够保证大宽表下的高性能读写。...增量计算 图13:DolphinDB 增量算法 在流数据计算中,有大量的计算需要随着时间窗口移动,例如上图13所示的 moving average,会计算最新10笔数据的均价。

    3.5K21

    Citus 11 官方手册脑图 - PostgreSQL 超大规模分布式数据库解决方案上手指南

    查找哪个分片包含特定租户的数据 查找表的分布列 检测锁 查询分片的大小 查询所有分布式表的大小 识别未使用的索引 监控客户端连接数 查看系统查询 活动查询 为什么查询等待 索引命中率 缓存命中率 常见错误信息...Citus 如何处理工作节点的故障? Citus 如何处理协调节点的故障转移? Citus 是否不支持任何 PostgreSQL 功能? 对数据进行哈希分区时如何选择分片数?...如何更改哈希分区表的分片数? citus 如何支持 count(distinct) 查询? 分布式表在哪些情况下支持唯一性约束? 如何在 Citus 集群中创建数据库角色、功能、扩展等?...如果工作节点的地址发生变化怎么办? 哪个分片包含特定租户的数据? 我忘记了表的分布列,如何找到? 我可以通过多个键分发表吗? 为什么 pg_relation_size 报告分布式表的零字节?...博文 Postgres 中使用 HyperLogLog 的高效汇总表 没有 HLL 的汇总表 — 以 GitHub 事件数据为例 没有 HLL,汇总表有一些限制 HLL 来拯救 HLL 和汇总表一起使用

    4.4K30

    硕士毕业半年的茫茫社招路

    《恰同学少年》,我的文章在此。等一下,这不是介绍计算机学习的文章吗,怎么突然出现一部红色电视剧?...,我还会继续做今天要做的这些事吗?...印象比较深的是有位领导问我说“才毕业半年就辞职,不担心之后找工作的难度吗?”我说,如果一个方向,我不想继续做它十年,那我就不想做了。...最终我面的公司部门有:字节跳动抖音数据策略团队、Pony.AI小马智行、快手、DolphinDB智臾科技、还有几家量化公司(比较好奇他们在同样问题上的解决方案)。...有句话说“面试官是一家公司招人的门面”,这句话绝没有夸张的成分。所以很自然的,我会把在DolphinDB的面试看作是一个很好的提前了解潜在的未来同事的机会。

    1.3K31

    大数据面试杀招——Hive高频考点,就怕你都会!

    行列过滤 列处理:在SELECT中,只拿需要的列,如果有,尽量使用分区过滤,少用SELECT *。...合理设置Reduce数 Reduce个数并不是越多越好 (1)过多的启动和初始化Reduce也会消耗时间和资源; (2)另外,有多少个Reduce,就会有多少个输出文件...十二、了解过动态分区吗,它和静态分区的区别是什么?能简单讲下动态分区的底层原理吗? 都到了这一步,没有撤退可言。...静态分区与动态分区的主要区别在于静态分区是手动指定,而动态分区是通过数据来进行判断 详细来说,静态分区的列是在编译时期,通过用户传递来决定的;动态分区只有在 SQL 执行时才能决定 简单理解就是静态分区是只给固定的值...,动态分区是基于查询参数的位置去推断分区的名称,从而建立分区 十三、使用过Hive的视图和索引吗,简单介绍一下 可能有的朋友在学习的过程中没机会使用到视图和索引,这里菌哥就简单介绍一下如何在面试的时候回答

    2.2K20

    mysql如何进行分区_mysql如何进行分区_mysql分区有哪些方法「建议收藏」

    大家知道mysql如何分区的吗?下面由学习啦小编为大家整理的mysql分区的方法,希望大家喜欢! mysql分区的方法 一、概述 当 MySQL的总记录数超过了100万后,会出现性能的大幅度下降吗?...2.LIST 分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。...3.KEY分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL服务器提供其自身的哈希函数。必须有一列或多列包含>整数值。...partitions子句中的值是一个非负整数,不加的partitions子句的话,默认为分区数为1。...注意:phpMyAdmin对上载的文件大小有限制,php本身对上载文件大小也有限制,如果原始sql文件 比较大,可以先用gzip对它进行压缩,对于sql文件这样的文本文件,可获得1:5或更高的压缩率。

    3.8K20

    系统设计:URL短链设计

    如果我们需要一个字节来存储一个字母数字字符,我们可以将所有这些键存储在: 6(每个键的字符数)*68.7B(唯一键)=412 GB。 KGS不是单点故障吗?是的。...我们应该对自定义别名施加大小限制吗?我们的服务支持自定义别名。用户可以选择任何他们喜欢的“密钥”,但提供自定义别名不是强制性的。...例如:我们决定将所有以字母“E”开头的URL放在DB分区中,但后来我们意识到,我们有太多以字母“E”开头的URL。 B基于散列的分区:在这个方案中,我们对存储的对象进行散列。...然后根据散列计算要使用的分区。在我们的例子中,我们可以使用“key”或实际URL的散列来确定存储数据对象的分区。...我们的散列函数将把URL随机分配到不同的分区(例如,我们的散列函数总是可以将任何键映射到[1…256]之间的数字),这个数字将代表我们存储对象的分区。

    6.3K165

    YashanDB逻辑规格

    密码长度最大值127# 表规格名称规格类型规格值列数最大值4096记录数最大值不限制行长度最大值行存:64512Bytes列存:32000KB列长度最大值8000BytesLOB列长度最大值不限制# 索引规格名称规格类型规格值索引列数最大值...32索引键值长度最大值6000Bytes索引数单表最大索引数255索引层数最大值24# 访问约束(AC)规格名称规格类型规格值列数最大值31列长度最大值8000Bytes访问约束数单表最大访问约束数255...2# 数据分区规格名称规格类型规格值分区数最大值分区表/索引可以创建的最大分区数量1M - 1分区列数最大值16间隔分区(interval)仅支持单列分区# 语法规格名称规格类型规格值单个SQL语句长度最大值...64K存储过程参数个数最大值4095自定义函数参数个数最大值4095自定义高级包元素个数最大值1024窗口函数的分区数量最大值1000窗口函数的ORDER BY列数量最大值1000窗口函数数量最大值128...)聚合函数聚合物化区最大值32KB多个聚合函数如果返回的结果会如果是变成数据,则会缓存在聚合物化区,该物化区的规格限制为32K

    2300

    别看不起分区表:我要为你点个赞

    p0~p31所有32个分区: 说明:二级索引查询具体查询性能与索引列的可选性有很大的关系,由于笔者构造的索引列的可选性为1,所以查询性能很好。...ENUM枚举类型的列不能被作为分区表达式。但是,这个限制有两个特殊情况: [LINEAR] KEY分区方式,只要不是TEXT或者BLOB类型,其他任何类型列都可以作为分区键。...那么它就会受到单数据库实例的连接数限制、 IO瓶颈、 swap空间、 FD等诸多限制。...我们先对分区表一些我认为完全可以接受的限制做一个说明。 分区最大数 8192个分区数限制,虽然不像分库分表可以无限制扩容下去,但是即使按照单表千万的行业标准,也能妥妥的容纳几百亿的的数据。...,它们都会受到单个数据库实例引发的连接数、存储能力、并发能力等的限制。

    40320

    一场比较有深度的面试

    一、你能简单描述一下HBase吗?能画出它的架构图吗? HBase是一个面向列的 NoSQL 分布式数据库,它利用HDFS作为底层存储系统。那么,HBase相对于传统的关系型数据库有什么不同呢?...1、HBase是schema-free的,它的列是可以动态增加的(仅仅定义列族),并且为空的列不占物理存储空间; 2、HBase是基于列存储的,每个列族都由几个文件保存,不同的列族的文件是分离的; 3、...2、散列原则:由于rowkey是按字典有序的,故应避免rowkey连续有序而导致在某一台RegionServer上堆积的现象。例如可以拼接随机数、将时间戳倒序等。...下面是HBase的整体架构图: 图片.png 二、你说了解kafka,能简单描述一下Kafka吗?能画出它的架构图吗?...,周期长,这样其实已经断开很长一段时间,没有及时性; 3、keep-alive不能主动通知应用层; 4、另外,想要通过心跳包来获取服务器的数据更新,所以选择自己在应用层实现; 还有一个问题就是一台机器的连接数有限制

    61330

    HAWQ技术解析(十七) —— 最佳实践

    因此,队列里的80个查询将等待以后执行。限制活跃语句数量有助于控制和保护HDFS的资源使用。你甚至能够在资源队列忙碌时修改其并发数。...你的查询谓词中有可识别的访问模式吗?检查你的查询负载中的WHERE子句,找到查找始终用于访问数据的表列。例如,如果你的大部分查询都通过日期查找数据,那么按月或周的日期分区设计可能是有益的。...选择尽可能平均划分数据的条件作分区。如果分区包含基本相同的记录数,ch查询性能的提升基于创建的分区数量。...多级分区要非常仔细,因为分区文件数量会快速增长。例如,如果一个表通过日期和城市分区,有1000和日期数据和1000个城市,则总的分区数是一百万。...面向列的表每列存储在一个物理表中,因此如果该表有100列,系统需要管理一亿个表文件。

    1.4K70

    Mysql大表优化方案

    ,例如InnoDB单个索引的互斥访问、ext3文件系统的inode锁竞争 可以备份和恢复单个分区 分区的限制和缺点: 一个表最多只能有1024个分区 如果分区字段中有主键或者唯一索引的列,那么所有主键列和唯一索引列都必须包含进来...,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择 HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。...这个函数可以包含MySQL中有效的、产生非负整数值的任何表达式 KEY分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL服务器提供其自身的哈希函数。...必须有一列或多列包含整数值 分区适合的场景有: 最适合的场景数据的时间序列性比较强,则可以按时间来分区,如下所示: CREATE TABLE members ( firstname VARCHAR...实现语言 支持语言 最后更新 Github星数 MySQL Fabric MySQL官方 代理架构 MySQL 有 有 有 无 是 python 无限制 4个月前 35 Cobar 阿里巴巴 代理架构

    2.8K71

    大数据框架(分区,分桶,分片)

    当然,可以依据多个列进行分区,即对某个分区的数据按照某些列继续分区。...向分区表导入数据的时候,要通过关键字partition((column name="xxxx")显示声明数据要导入到表的哪个分区 设置分区的影响 首先是hive本身对分区数有限制,不过可以修改限制的数量...,也是可以修改的; NN的内存肯定会限制,这是最重要的,如果分区数很大,会影响NN服务,进而影响一系列依赖于NN的服务。...假设n=分区数/消费者数量,m=分区数%消费者数量,那么前m个消费者每个分配n+1个分区,后面的(消费者数量-m)个消费者每个分配n个分区。...如果Region数量过多,MSLAB总的空间占用就会比较大。比如当前节点有1000个包含1个列族的Region,MSLAB就会使用1.95GB的堆内存,即使没有数据写入也会消耗这么多内存。

    60220
    领券