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

如何在kdb+订阅TP时修改引擎侧的订阅接收表名称

实现方法

订阅TP侧TradeTab表时,要将本地接收表名改为TradeRec,可根据场景选择以下两种方案:

  • 方案一:绑定订阅返回值到目标表名(单表重命名首选)
    TP端的.u.sub接口调用后会返回(源表名; 数据流引用)格式的二元组,默认场景下订阅端会自动创建和源表同名的本地表接收数据,只要将返回的数据流引用直接赋值给指定的本地表名,就不会生成默认的同名源表,所有增量数据会直接写入目标表。
    实现代码:
// 发起订阅并接收返回结果
subRes: h(`.u.sub;`TradeTab;`long$til 10);
// 将数据流绑定到本地指定表名
TradeRec: subRes[1];

如果本地之前已经生成过默认的TradeTab表,先执行undef(TradeTab)`删除旧表避免冲突即可。

  • 方案二:自定义数据更新回调(适合多表映射、带数据转换的场景)
    如果订阅时需要同步做数据清洗转换、或者多源表映射到同一张本地表,可以重写默认的.u.upd更新回调,手动指定源表数据的写入目标:
// 自定义数据更新处理逻辑
.u.upd: {[srcTab; data]
    // 匹配源表为TradeTab时写入本地TradeRec
    if[srcTab=`TradeTab;
        // 本地表不存在时自动按源表结构初始化空表
        if[not exists(`TradeRec); `TradeRec set 0#data];
        insert[`TradeRec; data];
    ]
};
// 正常发起订阅即可
h(`.u.sub;`TradeTab;`long$til 10);

注意:多节点部署场景下,自定义的.u.upd回调需要定义在订阅节点的全局作用域,定义在局部作用域会导致回调不生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:39:45