dolphindb计算非重复组合数

计算两列(symbol,date)的非重复组合个数

请先 登录 后评论

2 个回答

Qing Li
symbol = [`A,`B,`C,`A]
date = [2020.07.01,2020.07.01,2020.07.01,2020.07.01]
t = table(symbol,date)
//方法1 去重后数据个数
p = select count(*) from t group by symbol,date
size(p)
//方法2 适用内存表,总数减去重复的行数
t.size() - isDuplicated([t.symbol, t.date]).sum()
请先 登录 后评论
Peter
// 方案一:去重后数据个数
size(SELECT count(*) FROM t GROUP BY symbol, date)

// 方案二:适用内存表,总数减去重复的行数
t[!isDuplicated([t.symbol, t.date])].size()

性能测试

数据量:10,000,000 行 x 2 列的表

测试方案:通过 timer 函数统计10次计算的耗时,计算单次平均耗时

测试结果

方案一:0.23s

方案二:0.64s

数据构造:

n = 10000000
symbol = rand(`a`b`c, n)
date = 2020.01.01 + rand(366, n)
t = table(symbol, date)
请先 登录 后评论