求助:基于多列条件的KDB+左连接实现方案
KDB+ 条件左连接实现方案
针对你需要根据不同platform值选择不同关联键的左连接需求,可以通过动态生成统一关联键的方式一次性完成操作,具体实现如下:
实现思路
先为两张表生成匹配的动态关联键joinKey,再结合platform列作为复合连接键执行左连接:
- 当
platform="Reuters"时,用userID作为关联键 - 当
platform="wallstreet"时,用Order表的Sym关联System表的name(若实际关联列不同,替换对应字段即可) - 其他
platform的记录会保留左连接的空匹配结果
代码实现
可以分步骤执行,也可以合并为单条语句:
分步写法
- 为Order表添加动态关联键:
orders: update joinKey: $[platform="Reuters"; userID; platform="wallstreet"; Sym; 0N] from orders
- 处理System表,添加对应关联键并设置复合主键:
system_keyed: `platform`joinKey xkey update joinKey: $[platform="Reuters"; userID; platform="wallstreet"; name; 0N] from system
- 执行条件左连接:
result: orders lj system_keyed
单语句写法
result: update joinKey: $[platform="Reuters"; userID; platform="wallstreet"; Sym; 0N] from orders lj `platform`joinKey xkey update joinKey: $[platform="Reuters"; userID; platform="wallstreet"; name; 0N] from system
说明
- 代码中的
0N作为默认值,确保非目标platform的记录不会匹配到System表的行,符合左连接的预期行为 - 如果Order表中用于关联wallstreet平台的不是
Sym列,直接替换成实际列名即可
内容的提问来源于stack exchange,提问作者coderinq
相关产品推荐
相关产品推荐

