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

KDB中用fills填充空子列表遇'nyi报错,求正确实现方案

问题原因

fills 函数目前不支持对列表类型的列进行填充(报错 'nyi 表示该功能尚未实现),因为 fills 仅针对原子类型(如数值、字符串等)生效。

解决方法

方法一:使用 scan 函数(简洁高效)

直接通过 scan 遍历列元素,累积填充空列表:

t: update a: {if[0=count y; x; y]} scan a from t;

逻辑说明:scan 会依次处理 a 列的每个元素,函数判断如果当前元素是空列表(count y=0),就返回前一个非空的累积值;否则保留当前元素,自动完成最近非空值的填充。

方法二:通过索引间接填充(适配复杂场景)

先处理索引再映射回原列表:

// 1. 生成索引数组:非空元素位置设为自身索引,空元素位置设为0N
idxArr: `long$0N;
idxArr[where 0 < count'[t.a]]: til count t;
// 2. 用fills填充索引数组(fills支持原子类型的索引)
filledIdx: fills idxArr;
// 3. 根据填充后的索引更新a列
t: update a: a[filledIdx] from t;

逻辑说明:先标记所有非空列表的位置,再用 fills 填充索引数组得到每个位置对应的最近非空元素索引,最后通过索引映射替换空列表。

验证结果

两种方法执行后,表 t 的输出均符合预期:

q) show t
a  
---
1 2
1 2
1 2
5 6
5 6
5 6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 04:12:44