KDB为分区数据库元数据表添加列索引列的最优方法
在KDB+中为表添加按分组的列索引列的最优方法
你有如下结构的表t1,存储了分区数据库中所有表的元数据:
q)t1 tables cols -------------- tab1 col1 tab1 col2 tab1 col3 tab2 col1 tab2 col2 tab2 col3
需要添加indexOfCol列,标记每个表对应列的索引(从0开始),得到如下输出:
q)t1 tables cols indexOfCol ------------------------- tab1 col1 0 tab1 col2 1 tab1 col3 2 tab2 col1 0 tab2 col2 1 tab2 col3 2
最优解决方案
使用KDB+原生的分组更新语法,利用by子句结合i变量即可实现:
update indexOfCol:i by tables from t1
说明
by tables表示按tables列分组处理- 分组上下文里的
i会自动返回每组内的行索引,从0开始计数 - 这个写法是KDB+中最简洁且性能最优的实现,原生分组操作经过底层优化,适合处理大规模元数据表
内容的提问来源于stack exchange,提问作者CleanSock
相关产品推荐
相关产品推荐

