标签: kdb

KDB使用预先存在的表的模式创建空表

想象一下,我有一个填充表T_old与给定的模式(让我们说混合的int,浮点数,符号等)我现在想要创建一个新的空/空表T_new,它具有与T_old完全相同的模式.我该怎么做呢?最后,我希望这两个操作都有效:T_old uj T_new和T_new uj T_old.有什么建议?

schema kdb

0
推荐指数
1
解决办法
1110
查看次数

KDB性能:快速搜索第一项

我有一个大约20K项目的排序列表v.我想在第一个v [i]> K的点处将其拆分为2个列表

N:20000;
v:asc N?100000;     / N random numbers sorted
K:200;              / threshold
v1:v[where v<=K];   / "v<=K" has O(N) complexity, "where" has O(N) too
v2:(count v1) _ v;  / list is sorted, this holds.
Run Code Online (Sandbox Code Playgroud)

问题:如何避免v <= 200,所以它不计算长度为N的整个中间布尔向量,换句话说,在第一次匹配后找不到值?我实际上需要一个索引来执行拆分.假设K靠近列表的开头.

这是与绩效相关的问题.(注意忽略在"asc"上花费的时间.)

kdb q-lang

0
推荐指数
1
解决办法
129
查看次数

简化多个更新语句 - KDB

我有一个包含多个标志的表,我想将这些标志映射到它们所代表的值.

tab:([] t:til 4 ; f1:1100b;f2:1010b;f3:0101b;f4:0011b )
Run Code Online (Sandbox Code Playgroud)

如何简化这些多个更新语句?

tab:update f1s:`googl from tab where f1
tab:update f2s:`appl from tab where f2
tab:update f3s:`amzn from tab where f3
Run Code Online (Sandbox Code Playgroud)

kdb

0
推荐指数
1
解决办法
122
查看次数

比较两个不同实例中的表

我想比较所有表和模式在两个不同的实例中是相同的.我怎么能够遍历那个?

schemas:
(0# tab) ~ (h"0#tab")
Run Code Online (Sandbox Code Playgroud)

但是有10个表.什么是比较模式的最快方法?

kdb

0
推荐指数
1
解决办法
142
查看次数

基于行信息的条件更新字段

在KDB我有这个表:

q)tab

items sales prices adjust factor
--------------------------------
nut   6     10     1b     1.2
bolt  8     20     1b     1.5
cam   0     15     1b     2
cog   3     20     0b     0n
nut   6     10     0b     0n
bolt  8     20     0b     0n
Run Code Online (Sandbox Code Playgroud)

我想根据条件计算第4列,例如:

 if[adjust; prices * factor;]  
Run Code Online (Sandbox Code Playgroud)

目的是获得以下结果:

items sales prices newPrices
----------------------------
nut   6     10     12
bolt  8     20     30
cam   0     15     30 
cog   3     20     20
nut   6     10     10
bolt  8     20     20
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗?

kdb

0
推荐指数
1
解决办法
104
查看次数

无法获取q中的书面文件内容?

我复制了q for mortals如下的确切示例:

q)h:hopen `:D:/q4m/raw
q)h[42]
548i
q)h 10 20 30
548i
q)hclose h
q)get `:D:/q4m/raw
'D:/q4m/raw
  [0]  get `:D:/q4m/raw
Run Code Online (Sandbox Code Playgroud)

查看目录,在那里创建文件.为什么我get不能呢?

相反,如果我这样做:

q)h:hopen `:D:/q4m/L
q)h[42]
628i
q)h[10 20 30]
628i
q)hclose h
q)get `:D:/q4m/L
0 1 2 3 4 42 10 20 30
Run Code Online (Sandbox Code Playgroud)

事情变得正常,为什么?

kdb

0
推荐指数
1
解决办法
113
查看次数

有没有办法在kdb中迭代字母表?

我正在编写一个函数来选择数据库中以字母"A"开头的所有符号,后跟"B",直到字母"Z".我有一个虚拟表设置3个字符,如下所示...

t:([]symbol:`A`App`B`Bapp`C`Capp; price:104.3 124.3 134.2 103.4 402.7 209.8; ID:1 2 3 4 5 6)
Run Code Online (Sandbox Code Playgroud)

以及从符号看起来像x的表中选择的函数...

fetch:{[x;y]select from x where symbol like y}
Run Code Online (Sandbox Code Playgroud)

然后我为每个字母调用函数并将其复活到一个新表...

fetchedA:h (`fetch; `t; "A*")
fetchedB:h (`fetch; `t; "B*")
fetchedC:h (`fetch; `t; "C*")
Run Code Online (Sandbox Code Playgroud)

新的空表和upsert函数......

newNormData:([]symbol:`$(); price:`float$(); ID:`int$())
newNorm:{[x] `newNormData upsert x}

h (`newNorm; fetchedA)
h (`newNorm; fetchedB)
h (`newNorm; fetchedC)
Run Code Online (Sandbox Code Playgroud)

我不想为每个服务器进行26次函数调用,而是要进行1次调用,遍历字母表中的每个字符.在kdb/q中执行此操作的正确方法是什么?

kdb

0
推荐指数
1
解决办法
196
查看次数

删除无键表中多余的重复条目

我有下表,并希望删除所有重复的行。我创建了一个列dup,用于计算重复项的数量。

delete from table where dup>1 将删除重复项的所有条目,但我仍希望表中保留1个条目。

ISIN         RIC      BLOOMBERG dup
-----------------------------------
LU1681046006 CWEm.BS  CWEM EB   2
LU1681046006 CWEm.BS  CWE EB    2
LU1681046006 CWEm.BS  CWEM EB   2
LU1681046006 CWEm.BS  CWE EB    2
LU1681046006 CWEm.CHI CWEM IX   2
LU1681046006 CWEm.CHI CWE IX    2
LU1681046006 CWEm.CHI CWEM IX   2
LU1681046006 CWEm.CHI CWE IX    2
LU1681046006 CWE.MI   CWE IM
LU1681046006 WDNR.DE  WDNR GY
Run Code Online (Sandbox Code Playgroud)

因此,结果表应如下所示:

ISIN         RIC      BLOOMBERG dup
-----------------------------------
LU1681046006 CWEm.BS  CWEM EB   2
LU1681046006 CWEm.BS  CWE EB    2
LU1681046006 CWEm.CHI CWEM IX …
Run Code Online (Sandbox Code Playgroud)

k kdb

0
推荐指数
1
解决办法
79
查看次数

通过KDB中的子字符串重命名表列?

如何在KDB中使用其子字符串重命名列?

例:

初始表

    name  | number
------------------
  foo/bar |  999
  foo/log |  999
  foo/ton |  999
  foo/tin |  999
Run Code Online (Sandbox Code Playgroud)

name如果是/字符,查询应通过某个定界符截断该列。

结果表1

    name  | number
------------------
    foo   |  999
    foo   |  999
    foo   |  999
    foo   |  999
Run Code Online (Sandbox Code Playgroud)

或者删除字符串之间的子字符串,即/字符。

结果表2

    name  | number
------------------
   foobar |  999
   foolog |  999
   footon |  999
   footin |  999
Run Code Online (Sandbox Code Playgroud)

kdb

0
推荐指数
1
解决办法
174
查看次数

KDB:尝试在一个位置读取多个csv文件

我正在尝试运行以下代码以读取位置C:/ q / BitCoin / Input上所有可用的csv文件。遇到错误并且不知道解决方案是什么?csv文件是具有三个字段的标准文件。

raze{[x] 
inputdir:`:C:/q/BitCoin/Input;
filelist1:key inputdir;
filelist2:` sv' inputdir,'filelist1;
filelist3:string filelist2;
r:flip`Time`Qty`Price!("ZFF";",")0:x; 
select from r
} each `$filelist3
Run Code Online (Sandbox Code Playgroud)

硬编码文件名并在以下代码下运行可以工作,但我不想硬编码

raze {[x] 
r:flip`Time`Qty`Price!("ZFF";",")0:x; 
select from r 
} each (`$"C:/q/BitCoin/Input/bitbayPLN.csv";`$"C:/q/BitCoin/Input/anxhkAUD.csv")
Run Code Online (Sandbox Code Playgroud)

低于错误

执行查询期间发生错误。服务器发送了响应:filelist3

有人可以帮助解决问题吗?

kdb

0
推荐指数
1
解决办法
103
查看次数

标签 统计

kdb ×10

k ×1

q-lang ×1

schema ×1