如何通过遍历多个列表来生成数据表? (KDB)
How to generate datatable by iterating through multiple lists? (KDB)
我有一个函数 quotes[ticker;startDate;endDate]
和一个函数 indexConstituents[index;startDate;endDate]
产生以下结果:
daterange: 2017.12.05,2017.12.06;
quotes'[AAPL;daterange]
date time sym price
2017.12.05 09:45 AAPL 101.20
2017.12.06 09:45 AAPL 102.30
quotes'[GOOG;daterange]
date time sym price
2017.12.05 10:00 GOOG 800.50
quotes'[BBRY;daterange]
date time sym price
2017.12.06 11:15 BBRY 02.10
和
indexConstituents'[DJIA;daterange]
date sym shares divisor
2017.12.05 AAPL 20 2
2017.12.05 GOOG 5 1
2017.12.06 AAPL 10 1.5
2017.12.06 BBRY 100 1
我需要一种方法 运行 indexConstituents 正常运行以在一组日期内生成成分列表(如上面的第二个 table),然后从 table 1 为每个成分 获取数据。最后,我需要加入来自两个 table 的数据以产生以下结果:
data:
date time sym price shares divisor
2017.12.05 09:45 AAPL 101.20 20 2
2017.12.06 09:45 AAPL 101.30 10 1.5
2017.12.05 10:00 GOOG 800.50 5 1
2017.12.06 11:15 BBRY 02.10 200 1
前两个 table 的代码:
([] date:2017.12.05,2017.12.06; time:09:45,09:45; sym:`AAPL,`AAPL; price:101.20,102.30)
([] date:2017.12.05,2017.12.05,2017.12.06,2017.12.06; sym:`AAPL,`GOOG,`AAPL,`BBRY; shares:20f,5f,10f,100f; divisor:2f,1f,1.5f,1f)
我认为最好的方法是将 indexConstituents'[DJIA;daterange]
的结果 table 分配给一个变量,这样我们就可以取出 sym
列并应用 distinct
给它。
然后您可以使用该符号列表作为 quotes
的第一个参数。
最后将两个结果 table 连接在一起。
idx:indexConstituents'[DJIA;daterange];
q:quotes\:/:[distinct idx`sym;daterange];
q lj 2!idx
希望对您有所帮助!
我有一个函数 quotes[ticker;startDate;endDate]
和一个函数 indexConstituents[index;startDate;endDate]
产生以下结果:
daterange: 2017.12.05,2017.12.06;
quotes'[AAPL;daterange]
date time sym price
2017.12.05 09:45 AAPL 101.20
2017.12.06 09:45 AAPL 102.30
quotes'[GOOG;daterange]
date time sym price
2017.12.05 10:00 GOOG 800.50
quotes'[BBRY;daterange]
date time sym price
2017.12.06 11:15 BBRY 02.10
和
indexConstituents'[DJIA;daterange]
date sym shares divisor
2017.12.05 AAPL 20 2
2017.12.05 GOOG 5 1
2017.12.06 AAPL 10 1.5
2017.12.06 BBRY 100 1
我需要一种方法 运行 indexConstituents 正常运行以在一组日期内生成成分列表(如上面的第二个 table),然后从 table 1 为每个成分 获取数据。最后,我需要加入来自两个 table 的数据以产生以下结果:
data:
date time sym price shares divisor
2017.12.05 09:45 AAPL 101.20 20 2
2017.12.06 09:45 AAPL 101.30 10 1.5
2017.12.05 10:00 GOOG 800.50 5 1
2017.12.06 11:15 BBRY 02.10 200 1
前两个 table 的代码:
([] date:2017.12.05,2017.12.06; time:09:45,09:45; sym:`AAPL,`AAPL; price:101.20,102.30)
([] date:2017.12.05,2017.12.05,2017.12.06,2017.12.06; sym:`AAPL,`GOOG,`AAPL,`BBRY; shares:20f,5f,10f,100f; divisor:2f,1f,1.5f,1f)
我认为最好的方法是将 indexConstituents'[DJIA;daterange]
的结果 table 分配给一个变量,这样我们就可以取出 sym
列并应用 distinct
给它。
然后您可以使用该符号列表作为 quotes
的第一个参数。
最后将两个结果 table 连接在一起。
idx:indexConstituents'[DJIA;daterange];
q:quotes\:/:[distinct idx`sym;daterange];
q lj 2!idx
希望对您有所帮助!