如何 link 在分区的 table kdb 中生成正确的行
how to link results to a correct rows in a partitioned table kdb
我在 lst 中有一列基于以下条件的日期并且运行良好,我需要通过设置或更新插入或任何方式将其 link 到分区数据库的适当行。
(这些是由许多列组成的相应日期的分区 tables)
tbp:2016.11.01
tb:2016.11.02
lst: distinct select b_market_order_no,instrumentID,mkt from tb where event=`OvernightOrder
我根据 lst 中的条件得到一列日期,现在我必须 link 它到数据库中 table,tb 的适当行。我对 "set" 命令所做的只是盲目地添加日期,我猜是每一行,直到用完为止。不确定如何将适当的行位置传递给设置,或者即使这是正确的方法。或者需要使用upsert!或者有完全不同的需求需要实施!
(`$":PATH/2016.11.02/order/b_orig_date") set select b_orig_date from tbp where ([]b_market_order_no;instrumentID;mkt) in lst
我认为这就是您想要的,同样为了简单起见,我指的是 table 作为带有适当日期的订单 where 子句:
编辑:添加。Q.par 还要注意 3!因为需要 b_market_order_no、instrumentID、mkt 全部作为键控列
编辑:如果您将 hdb 加载到 q 进程中,则一般使用:
dirPath:string .Q.par[`:.;2016.11.02;`order]
(`$dirPath,"/b_orig_date") set exec b_orig_date from
(select b_market_order_no, instrumentID, mkt from order where date = 2016.11.02) lj
3!select b_market_order_no, instrumentID, mkt, b_orig_date from order where
date = 2016.11.01,([]b_market_order_no;instrumentID;mkt) in lst
此外,如果这是 2016.11.02/order 的全新专栏,您将需要编辑 .d
(`$dirPath,"/.d") set (get `$dirPath,"/.d"),`b_orig_date
可能还需要使用 dbmaint.q
在整个组屋中添加此列
https://github.com/KxSystems/kdb/blob/master/utils/dbmaint.q
答案:
dirPath:string .Q.par[`:.;2016.11.02;`order]
(`$dirPath,"/b_orig_date") set exec b_orig_date from
(select b_market_order_no, instrumentID, mkt from tb) lj
3!select b_market_order_no, instrumentID, mkt, b_orig_date from tbp where
([]b_market_order_no;instrumentID;mkt) in lst
我在 lst 中有一列基于以下条件的日期并且运行良好,我需要通过设置或更新插入或任何方式将其 link 到分区数据库的适当行。
(这些是由许多列组成的相应日期的分区 tables)
tbp:2016.11.01
tb:2016.11.02
lst: distinct select b_market_order_no,instrumentID,mkt from tb where event=`OvernightOrder
我根据 lst 中的条件得到一列日期,现在我必须 link 它到数据库中 table,tb 的适当行。我对 "set" 命令所做的只是盲目地添加日期,我猜是每一行,直到用完为止。不确定如何将适当的行位置传递给设置,或者即使这是正确的方法。或者需要使用upsert!或者有完全不同的需求需要实施!
(`$":PATH/2016.11.02/order/b_orig_date") set select b_orig_date from tbp where ([]b_market_order_no;instrumentID;mkt) in lst
我认为这就是您想要的,同样为了简单起见,我指的是 table 作为带有适当日期的订单 where 子句:
编辑:添加。Q.par 还要注意 3!因为需要 b_market_order_no、instrumentID、mkt 全部作为键控列
编辑:如果您将 hdb 加载到 q 进程中,则一般使用:
dirPath:string .Q.par[`:.;2016.11.02;`order]
(`$dirPath,"/b_orig_date") set exec b_orig_date from
(select b_market_order_no, instrumentID, mkt from order where date = 2016.11.02) lj
3!select b_market_order_no, instrumentID, mkt, b_orig_date from order where
date = 2016.11.01,([]b_market_order_no;instrumentID;mkt) in lst
此外,如果这是 2016.11.02/order 的全新专栏,您将需要编辑 .d
(`$dirPath,"/.d") set (get `$dirPath,"/.d"),`b_orig_date
可能还需要使用 dbmaint.q
在整个组屋中添加此列https://github.com/KxSystems/kdb/blob/master/utils/dbmaint.q
答案:
dirPath:string .Q.par[`:.;2016.11.02;`order]
(`$dirPath,"/b_orig_date") set exec b_orig_date from
(select b_market_order_no, instrumentID, mkt from tb) lj
3!select b_market_order_no, instrumentID, mkt, b_orig_date from tbp where
([]b_market_order_no;instrumentID;mkt) in lst