如何在DolphinDB中合并同ID行并整合非空列值
在DolphinDB中合并相同ID的行并整合非空值
针对你需要合并相同id的行、整合各列非空值的需求,DolphinDB有两种高效且简洁的实现方式:
方法1:使用firstNotNull聚合函数
firstNotNull函数会返回分组内指定列的第一个非空值,完美匹配你的场景——同id下每个列仅存在一个非空值,直接提取该值即可。
示例代码:
// 构建示例表 sqltb = table(1 1 1 as id, 1 NULL NULL as val1, NULL 2 NULL as val2, NULL NULL 3 as val3) // 合并行 result = select firstNotNull(val1) as val1, firstNotNull(val2) as val2, firstNotNull(val3) as val3 from sqltb group by id
执行后得到的结果:
id val1 val2 val3 1 1 2 3
方法2:使用max/min聚合函数
由于同id下每个列只有一个非空值,其余均为NULL,而max/min函数会自动忽略NULL,直接取到唯一的非空值。这种方法在列数量较多时更简洁:
示例代码:
// 基础写法 result = select max(val1) as val1, max(val2) as val2, max(val3) as val3 from sqltb group by id // 列数量多时的简化写法 cols = `val1`val2`val3 result = select [max(col) as col for col in cols] from sqltb group by id
性能说明
两种方法均基于DolphinDB原生分组聚合逻辑,处理大规模数据时性能优异,无需额外循环或复杂操作,是此类场景的最优解。
内容的提问来源于stack exchange,提问作者xiyan zheng
相关产品推荐
相关产品推荐

