可用makeKey函数,例如:
tmp = table(1 3 4 5 6 as a, take(`A`B, 5) as b, rand(10.0, 5) as val) share tmp as new old = table(2 3 4 7 8 as a, take(`A`B, 5) as b, rand(10.0, 5) as val) select * from new where makeKey(a, b) not in makeKey(old.a, old.b)
请教这个sql怎么写比较高效呢?
同时比较表new和表old中的2个字段a和b,求表new中有而old中没有的记录,其中new是共享表,old是普通内存表,两者字段完全一样,两个表中字段a的值各自都是唯一的,但是总的记录的行数可能不一样.不过总的行数都在1万以内.。我现在是将new全部append到old中通过isDuplicated去重选最后的记录,
不知道是不是有表链接的方法更高效,我试了网上的相关例子,但是没找到在dolphindb这里可以跑的。
这个在kdb+里可以把table当作dict的list用except运算来快速实现。在ddb里找找有没有类似的函数?