2017-08-15 105 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" 
..