在DolphinDB中对数组向量列去重并保留原始顺序
解决方案
要在DolphinDB中实现数组向量列的按行去重且保留元素原始顺序,可以通过自定义函数实现,核心逻辑是仅保留数组中首次出现的元素。
1. 定义保留顺序的去重函数
def keepOrderDistinct(arr) { seen = set() result = [] for (x in arr) { if (!x in seen) { seen.add(x) result.append(x) } } return result }
2. 应用函数处理目标表
直接在查询语句中调用自定义函数,无需额外group by(原始表已按sym每行对应一个独立数组):
// 构造原始表 t = table(`a`b as sym, array(INT[]).append!([1 2 1, 2 3 2]) as val) // 执行去重查询 select sym, keepOrderDistinct(val) as distinct_val from t
执行结果
sym distinct_val --- ------------ a [1,2] b [2,3]
逻辑说明
自定义函数keepOrderDistinct通过维护一个集合seen记录已出现的元素,遍历数组时仅将未出现过的元素加入结果列表,确保完全保留元素的原始出现顺序。
内容的提问来源于stack exchange,提问作者Polly
相关产品推荐
相关产品推荐

