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

KDB中如何用前值填充表的空值与空字符串?

KDB/Q 填充表中空值(含字符串空串)的解决方案

问题场景

现有KDB表:

t:([] c1:1 0n 3 4;c2:("abcd";"efgh";"igkl";""))

表结构如下:

c1 c2    
---------
1  "abcd"
  "efgh"
3  "igkl"
4  ""

需要用前一行有效值填充表中的缺失值(数值列的0n、字符串列的空串""),预期结果:

c1 c2    
---------
1  "abcd"
1  "efgh"
3  "igkl"
4  "igkl"

直接执行fills t时报错:"length: Incompatible list lengths."

原因分析

fills函数默认仅识别数值类型的缺失值0n和字符串类型的缺失值0N,但原表中字符串列的空串""不属于fills可处理的缺失值范畴,直接作用于表时,函数无法正确解析字符串列的空串,导致列长度匹配错误。

解决方案

先将字符串列中的空串""转换为字符串类型的缺失值0N,再对表应用fills:

针对指定列处理

// 先替换c2列的空串为字符串缺失值,再执行fills
fills update c2:?[c2="";0N$"";c2] from t

通用处理(自动识别所有字符串列)

如果表中有多个字符串列,可批量处理:

// 遍历所有字符串列,替换空串为0N后执行fills
fills {[col] ?[col="";0N$"";col]}[;] t where type each t=10h

执行上述代码后,即可得到预期的填充结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:42:48