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

如何确认DolphinDB中记录值是否符合分区方案?

确认分区表记录是否符合分区方案的方法

首先得解释下你遇到的现象:DolphinDB中DATE类型和MONTH类型支持隐式转换,当你插入2010.01.15这个DATE值时,系统会自动将它转换为对应的MONTH值2010.01M,所以这条记录能成功匹配到对应的分区。不过要确认记录是否真的符合分区规则,可以通过以下几种方式:

1. 直接查询对应分区的记录

加载分区表后,筛选目标分区的记录,看插入的数据是否存在:

// 加载分区表
pt = loadTable("dfs://valuedb", `pt)
// 查询2010.01M分区的记录
select * from pt where month = 2010.01M

如果返回结果包含你插入的x=10的那条数据,说明它已经被正确放到了符合规则的分区中。

2. 查看分区元数据

使用getPartitionMeta函数查看目标分区的详细信息,包括记录数、存储路径等,验证数据是否被计入该分区:

db = database("dfs://valuedb")
// 获取2010.01M分区的元数据
getPartitionMeta(db, 2010.01M)

返回结果里的rowCount字段会显示该分区的记录数,对比插入前后的数值变化就能确认数据是否被正确存储。

3. 检查存储的字段类型

查询表中month列的实际存储类型,确认DATE值已经被转换为MONTH类型:

select typeof(month) from pt limit 1

结果会返回MONTH,说明系统已经自动完成了类型转换,存储的是符合分区要求的类型。

额外:如何防止非MONTH类型数据插入

如果你想严格限制只能插入MONTH类型的month列数据,可以在插入前添加类型校验,比如用assert断言:

t1 = table(2010.01.15 as month , 10 as x)
// 断言month列类型必须为MONTH,否则报错
assert typeof(t1.month) == MONTH, "month列必须为MONTH类型,当前类型为" + string(typeof(t1.month))
pt.append!(t1)

这样当插入DATE类型数据时,系统会直接抛出错误,提前拦截不符合要求的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 19:12:43