标签: kdb

Kdb +:如何控制权限和权利

有人可以建议我们如何控制kdb +中的权限和权限,以确保数据/表被正确访问控制?

我知道有-U用户参数用于指定用户/密码,但挑战在于表级权限.

提前致谢.

kdb

5
推荐指数
1
解决办法
748
查看次数

符号文字中的空格字符

我需要查询包含公司名称的数据库.我有大约50个名字的列表,我必须获取数据.但我无法使用in命令编写查询,因为名称中的空格无法识别.前

select from sales where name in (`Coca Cola, `Pepsi)
Run Code Online (Sandbox Code Playgroud)

由于"Cola"未被识别,这给了我一个错误.有没有办法写这样的查询?

kdb

5
推荐指数
1
解决办法
3075
查看次数

除了周末天之外,如何在kdb中生成日期范围?

此代码生成一系列日期:

firstdate: 2008.06.01
lastdate: 2008.08.31
daterange: firstdate + til (lastdate - firstdate) + 1
Run Code Online (Sandbox Code Playgroud)

是否可以生成相同的范围,不包括周末日期(周六/周日)?

kdb

5
推荐指数
1
解决办法
7113
查看次数

使用q在函数内部定义函数时的变量可见性

我正在定义一个函数,其中包含另一个函数:

find_badTicks:{ [tab;sec] // dummy function, for debug..
  Ndays: 10i ;
  dates: select distinct date from tab where sym = sec ;
  closures: select last price by date from tab where sym = sec ;
  returns: 1 _ select ( (price)-(prev price) )%(prev price)  from closures  ;
  stdevs: {[x;y] sd[ (Ndays-1)#y _ x ] } [ (returns)[;`price] ] each til ( (1 - (Ndays-1)) + count (returns)[;`price] ) ;
  :tab 
}
Run Code Online (Sandbox Code Playgroud)

如果我编译该函数,它将起作用。如果我一行一行地运行,那行得通。但是,如果尝试调用该函数,则会出现错误:

  q)testTab: find_badTicks [testTab ; `ENI.IM.Equity] ;
  'Ndays
Run Code Online (Sandbox Code Playgroud)

如果我在嵌套函数中删除Ndays,显式编写为10,则它可以工作。是的,我想这是嵌套函数内部的局部变量可见性的问题,在函数执行中:即嵌套函数看不到Ndays,这是函数find_badTicks的局部变量。您知道如何在内部函数中使Ndays可见吗?谢谢马可

kdb

5
推荐指数
1
解决办法
3444
查看次数

q如何缓存数据?

我试图衡量我创建的数据库的数据访问时间。一天的数据大约要花1秒的时间。总的来说,我运行了以下代码。我正在使用kdb studio,每天总共有〜1MM笔交易

\t ans: raze {select from trade where date=x, sym=`ABC} each 20#dtl
Run Code Online (Sandbox Code Playgroud)

dtl是整个日期列表。我关闭了服务器,然后再次运行它,令人惊讶的是这花费了不到1秒的时间。因为这与我上面观察到的相反,所以我运行了

\t ans: raze {select from trade where date=x, sym=`ABC} each 20#20_dtl
Run Code Online (Sandbox Code Playgroud)

现在花了约21秒。我的问题是,如果我关闭kdb服务器,q是否仍然可以缓存某些先前的结果?

kdb

5
推荐指数
1
解决办法
1000
查看次数

将多个参数传递给select中的函数

我想用select来计算一个新列,它是几列的函数.

我的实际应用程序将涉及select中的分组,因此我将传递给函数的列条目将包含列表.但这个简单的例子说明了我的问题

t:([] a:1 2 3; b:10 20 30; c:5 6 7)

/ Pass one argument, using projection (set first two arguments to 1)
select s:{[x;y;z] x+y+z}[1;1;] each a from t 

/ Pass two arguments using each-both (set first arg to 1)
select s:a {[x;y;z] x+y+z}[1;;]'b from t 
Run Code Online (Sandbox Code Playgroud)

现在,我如何传递三个或更多参数?

kdb

5
推荐指数
1
解决办法
4064
查看次数

如何在KDB中使用.year内部函数?

我想使用点符号来提取日期年份.

q) myDate:2014.01.01;
q) myDate.year
2014i           / works OK
Run Code Online (Sandbox Code Playgroud)

但是当进入一个功能时,

f:{[x] :x.year};
f[myDate]
Run Code Online (Sandbox Code Playgroud)

我收到错误(我使用Studio for KDB +)

An error occurred during execution of the query.
The server sent the response:
x.year
Run Code Online (Sandbox Code Playgroud)

出了什么问题?

kdb q-lang

5
推荐指数
1
解决办法
1290
查看次数

KDB; 从符号列中剥离字符

任何想法如何在KDB中做得很好?

考虑一下表格

X:([]a:1 2 3;b:`abc11`abc22`abc33;c:10 20 30)
Run Code Online (Sandbox Code Playgroud)

我现在想要一个新的表Y,它在第二列的符号中删除了"abc",这样:

Y:([]a:1 2 3;b:`11`22`33;c:10 20 30)
Run Code Online (Sandbox Code Playgroud)

symbols kdb q-lang

5
推荐指数
1
解决办法
5437
查看次数

KDB + / q:什么是远程查询的规范实现?

我正在尝试使用qpython从python客户端实现多行查询。

我想执行以下查询:

a = """
/declare a function that pivots a table on index
piv:{[t;k;p;v]f:{[v;P]`${raze "_" sv x} each string raze P,'/:v};v:(),v; k:(),k; p:(),p;G:group flip k!(t:.Q.v t)k;F:group flip p!t p;key[G]!flip(C:f[v]P:flip value flip key F)!raze{[i;j;k;x;y]a:count[x]#x 0N;a[y]:x y;b:count[x]#0b;b[y]:1b;c:a i;c[k]:first'[a[j]@'where'[b j]];c}[I[;0];I J;J:where 1<>count'[I:value G]]/:\:[t v;value F]};

/get aggregated trades table 
tt:0!select last_price:last price, last_qty: last qty, low_qty: min qty by exch,sym,side,1 xbar time.second from trades

/apply pivot function on aggregated trade table
piv[`tt;`second;`exch`sym`side;`last_price`last_qty`low_qty]
"""
Run Code Online (Sandbox Code Playgroud)

以下qpython客户端仅调用远程kdb + / q服务器即可检索对上述查询的响应

with qconnection.QConnection(host='localhost', port=5001, …
Run Code Online (Sandbox Code Playgroud)

python client time-series kdb

5
推荐指数
0
解决办法
115
查看次数

KDB \ Q:如何从置顶函数中运行迭代联合联接?

我正在尝试根据kdb tick架构从tick函数中对表运行迭代联合联接:

table1:([]time:`timespan$();sym:`symbol$();var1:`float$());

if[not system"t";system"t 1000";
    .z.ts:{
        table2: ...
        table1:table1 uj table2 / throws non descriptive error
        `table1 uj table2 / throws type error
    }
Run Code Online (Sandbox Code Playgroud)

非描述性错误:

'table1
[0]()

我试图维护一个本地表,该表保留最后500行左右(带有动态列),以便运行进一步的处理。但是我似乎无法从tick函数中更新表。一个人应该如何实现这一功能?谢谢

kdb

5
推荐指数
1
解决办法
94
查看次数

标签 统计

kdb ×10

q-lang ×2

client ×1

python ×1

symbols ×1

time-series ×1