You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DolphinDB中分区表pt调用size()返回0的原因咨询

为什么DolphinDB分区表调用size()返回0?

我来帮你拆解这个问题的核心原因,其实是分区键的数据类型不匹配导致数据没有真正写入分区表,具体细节如下:

先看你执行的代码:

sym = `C`MS`MS`MS`IBM`IBM`C`C`C 
price= 49.6 29.46 29.52 30.02 174.97 175.23 50.76 50.32 51.29 
qty = 2200 1900 2100 3200 6800 5400 1300 2500 8800 
timestamp = [09:34:07,09:36:42,09:36:51,09:36:59,09:32:47,09:35:26,09:34:16,09:34:26,09:38:12] 
t=Table(timestamp,sym,price,qty) 
db=database("",VALUE,09:32:00..09:40:00) 
pt=db.createPartitionedTable(t,`pt,`timestamp) 
pt.append!(t) 
share(pt,`sharet) 
size(pt)

问题根源

  • 你创建数据库时,用09:32:00..09:40:00生成的分区键是TIME类型;
  • 但源表t中的timestamp列,因为你直接使用09:34:07这种格式赋值,DolphinDB会默认解析为SECOND类型;
  • 当调用append!写入数据时,由于分区键的类型不匹配,数据并没有被成功写入到分区表中,所以size(pt)返回0。

两种解决方法

方法1:将分区键改为SECOND类型

创建数据库时,把分区范围转换为SECOND类型:

db=database("",VALUE,second(09:32:00)..second(09:40:00))

方法2:将源表的timestamp列转为TIME类型

修改源表的timestamp列定义,显式转为TIME类型:

timestamp = time([09:34:07,09:36:42,09:36:51,09:36:59,09:32:47,09:35:26,09:34:16,09:34:26,09:38:12])

修改后重新执行代码,size(pt)就会返回正确的行数9了。

内容的提问来源于stack exchange,提问作者xxq1024

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 17:22:32