有人可以建议我们如何控制kdb +中的权限和权限,以确保数据/表被正确访问控制?
我知道有-U用户参数用于指定用户/密码,但挑战在于表级权限.
提前致谢.
我需要查询包含公司名称的数据库.我有大约50个名字的列表,我必须获取数据.但我无法使用in命令编写查询,因为名称中的空格无法识别.前
select from sales where name in (`Coca Cola, `Pepsi)
Run Code Online (Sandbox Code Playgroud)
由于"Cola"未被识别,这给了我一个错误.有没有办法写这样的查询?
此代码生成一系列日期:
firstdate: 2008.06.01
lastdate: 2008.08.31
daterange: firstdate + til (lastdate - firstdate) + 1
Run Code Online (Sandbox Code Playgroud)
是否可以生成相同的范围,不包括周末日期(周六/周日)?
我正在定义一个函数,其中包含另一个函数:
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可见吗?谢谢马可
我试图衡量我创建的数据库的数据访问时间。一天的数据大约要花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是否仍然可以缓存某些先前的结果?
我想用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)
现在,我如何传递三个或更多参数?
我想使用点符号来提取日期年份.
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中做得很好?
考虑一下表格
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) 我正在尝试使用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) 我正在尝试根据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函数中更新表。一个人应该如何实现这一功能?谢谢