2017-08-15 60 views
0

我目前正在研究一个与kdb +数据库交互的python项目。未来的数据库版本会有一些小的变化,因为我不能继续使用我的python编程,所以我认为我会自己做一下,而不是等待kdb开发人员的更新。在KDB中编写符号

我与吐出看起来像这样随机产生的符号模拟数据库工作:

我已经看了看周围,并beleive的符号由线产生的instr1instr2instr81.gen.uni:$"instr",/: string til .gen.cfg.uniSize;

我想要达到的目的是让符号为exchangeX.instrY而不是仅仅是instrY(其中X和Y只是一些生成的数字)。

因为convieniece我已将线更改为$"instr",/: string til 4,所以我的大脑并没有受到太多伤害。

如何实现这样的事情?我发现了sv函数,因此我尝试了许多变种sv ($"exchange",/: string til 4;$"instr",/: string til 4),但似乎没有任何工作。

谢谢你的时间!

PS:我已经删除了一些反引号在这里和那里,因为SO的格式

回答

1

是用于产生这种数据的有用:下面http://code.kx.com/q/ref/random/#roll

功能将生成的符号的随机列表。

PARAMATERS:

X - 你所需要的

符号的数y - 不同的交易所数量

ž - 不同的乐器

q){` sv' flip `$("exch",/:string x?y;"inst",/:string x?z)} 


q){` sv' flip `$("exch",/:string x?y;"inst",/:string x?z)}[100;4;10] 
`exch0.inst2`exch3.inst3`exch3.inst0`exch2.inst0`exch3.inst4`exch3.inst4`exch2.inst0`exch0.inst3`exch3.inst4`exch0.inst5`exch3.inst0`exch1.inst5`exch1.inst7`exch2.inst4`exch2.inst3`exch3.inst1`exch3.inst6`exch2.inst2`exch2.inst.. 
q) 
+0

谢谢你的回答!虽然当我把它放在生成器文件里面时它仍然不起作用,但它是做我想做的! –

1

的这是你在找什么?我间隔了一小会儿。使用辊操作者

`$"exchange" ,/: (string til 4) ,' ".inst" ,/: string til 4 
+0

您好!是的,它确实看起来像那样!当我尝试将其转换回生成器格式并将其放入生成器文件时,它不能按预期工作:''.gen.uni:'$“exchange”,/ :(字符串直到.gen.cfg.uniSize) ,'“.inst”,/:字符串直到.gen.cfg.uniSize''。任何想法可能? –

+0

它对我来说很好。当你说它没有按预期工作时,你期望什么? – notlightnorchroma

+0

那么你的答案完美无缺。事情是,我试图在模拟数据生成器中实现这件事。因此,我不想在最后有一个固定的“直到4”,而是使用已经在脚本中的'.gen.cfg.uniSize'变量(同样,我没有写它,只是试图实现这个所以我可以继续我的Python代码)。我不确定这个变量是什么,但如果我查找定义,我发现这个''.gen.cfg.uniSize:.cr.getCfgField ['this;'group;'cfg.uniSize];'' –

0

Adverbs去除一些重复的号码。用于从任何的4个交流任何10个仪器100点的例子:

"."sv/:flip("exchange";"inst"),/:'string 100?/:4 10 

为了打破下来一点:100?/:4 10返回两个100的载体,一个0-3绘制的,其他的从0-99,礼貌/:each-right)副词。 string将它们转换为字符串。我们称之为n

q)show n:string 100?/:4 10 
,"3" ,"2" ,"3" ,"0" ,"3" ,"3" ,"1" ,"2" ,"3" ,"3" ,"3" ,"3" ,"3" ,"1" ,"1" ,".. 
,"9" ,"5" ,"2" ,"3" ,"7" ,"7" ,"6" ,"7" ,"2" ,"0" ,"3" ,"5" ,"0" ,"5" ,"2" ,".. 

每个右副词修改join功能,所以:

q)"exchange",/:n 0 
"exchange3" 
"exchange2" 
"exchange3" 
.. 

,我们可以修改导出的功能,/:each-both'的前缀字符串在所述第一向量与"exchange"和第二个与"inst"

q)("exchange";"inst"),/:'n 
"exchange3" "exchange2" "exchange3" "exchange0" "exchange3" "exchange3" "exch.. 
"inst9"  "inst5"  "inst2"  "inst3"  "inst7"  "inst7"  "inst.. 

现在,我们只需要flip向量对的成对

q)flip("exchange";"inst"),/:'n 
"exchange3" "inst9" 
"exchange2" "inst5" 
"exchange3" "inst2" 
"exchange0" "inst3" 
"exchange3" "inst7" 
.. 

的矢量和修改sv每个右加入每对:

q)"."sv/:flip("exchange";"inst"),/:'n 
"exchange3.inst9" 
"exchange2.inst5" 
"exchange3.inst2" 
"exchange0.inst3" 
"exchange3.inst7" 
..