的.最简单形式的运算符用于索引列表.您如何在此代码中解释其在英语中的用法?
if[x~"last";upd:{[t;x].[t;();,;r::select by sym from x]}]
Run Code Online (Sandbox Code Playgroud)
我也不理解这一行中的空列表和::运算符,但也许它们一旦有意义就会有意义.被清除了.
我将字符串存储在变量名res下的列表中.接下来,我构建一个查询字符串列表的查询.然而,似乎没有读取变量.
这就是我的意思:
q) hdl: (to a port)
q) res: `string1`string2`string3
**q) ans: hdl"select count i by date,sym from trade where date=xxx, sym in `res"**
Run Code Online (Sandbox Code Playgroud)
当我执行命令时,我总是得到一个空的结果集.我知道结果集不能为空.那么如何修复我的查询(以粗体显示)以返回结果?
请注意我正在unix框中的aq会话中执行任务.
Q/KDB中有一些函数让我们在滑动窗口(msum,mavg等)上聚合.但是这些函数会考虑先前行的数量.
我想要一个可以在滑动窗口上聚合但有时间而不是行数的函数.例如在最后5分钟.
这样的功能存在吗?如果没有,我该如何设计呢?我不想使用while循环,因为它会因为大量数据而导致我的程序运行速度过慢.
谢谢您的帮助
要将元素向上插入字典,我会
q) d[`x]:12345
Run Code Online (Sandbox Code Playgroud)
这将修改现有的字典,并且操作成本接近O(1)或O(log N)取决于基础实现(哈希表或树)(我不知道)。
但是,要删除密钥,我必须使用:
q) d:(enlist `x) _ d
Run Code Online (Sandbox Code Playgroud)
这至少O(N)是因为它复制了完整的词典而不删除其中的项目,O(N)然后由于指针而将其分配给d了O(1)。
这看起来像删除操作歧视!也许就地删除没有很好的文档记录,但是存在于某个地方?
我有以下查询用于从分区表中删除行,但它不起作用.用于删除分区表中的行的方法是什么?
delete from SecurityLoan where lender=`SCOTIA, date in inDays, portfolio in portfoliolist
Run Code Online (Sandbox Code Playgroud)
请注意,inDays并portfoliolist在列表
在KDB中,为什么我可以这样做:
{[x;y]x+y} ./: enlist[(1;1);(2;1)]
Run Code Online (Sandbox Code Playgroud)
但不是这个:
{[x]x+1} ./: enlist[1;2]
Run Code Online (Sandbox Code Playgroud)
如果我使用这个:
{[x]x+1} each enlist[1;2]
Run Code Online (Sandbox Code Playgroud)
然后它工作.为什么采取2个参数会产生影响?
我对 kdb+q 很陌生。我遇到过从字符串中提取数字的问题。
有什么建议?
例子:
"AZXER_1234_MARKET" should output 1234 //Assume that there is only one number in the
Run Code Online (Sandbox Code Playgroud)
细绳
kdb凡人/神!!
我有一个日期时间字符串数组,但格式不同
> leads[`firstConversion]
"Wed May 20 2020 08:56:54 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:56 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:56 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:56 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:57 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:58 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:58 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:59 GMT-0700 (PDT)"
"Wed May 20 2020 08:57:00 GMT-0700 (PDT)"
"Wed May 20 2020 08:57:01 GMT-0700 (PDT)"
"Wed May 20 2020 09:06:32 GMT-0700 …Run Code Online (Sandbox Code Playgroud) 我正在学习有关 q 的教程。这是初始设置。
buys:2 1 4 3 5 4
sells:2 4 3 2
Run Code Online (Sandbox Code Playgroud)
然后我定义了以下函数
f:{x & (sums buys)}
Run Code Online (Sandbox Code Playgroud)
我尝试用它
f (sums sells)
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误
'length
[1] f:{x & (sums buys)}
Run Code Online (Sandbox Code Playgroud)
我注意到如果我这样做,它会起作用
q)f each (sums sells)
2 2 2 2 2 2
2 3 6 6 6 6
2 3 7 9 9 9
2 3 7 10 11 11
Run Code Online (Sandbox Code Playgroud)
但是,以下输出列表的一元函数应用起来没有问题
q){(x*x;x)} (1 2 3)
1 4 9
1 2 3
Run Code Online (Sandbox Code Playgroud)
这两个函数的类型签名对我来说似乎是相同的。为什么其中一个得到评估,而另一个则引发错误?
我有一个这样的表:
test:([]column1:`A`B`C`D`E;column2:`Consumer`RealEstate`27`85`Technology)
Run Code Online (Sandbox Code Playgroud)
我需要编写一个更新查询,其中 column2 的字符数为 2 或更少,但我找不到任何方法来引用在 where 子句中使用的符号的字符长度。我将如何编写这样的查询,以便我的结果如下?
test:([]column1:`A`B`C`D`E;column2:`Consumer`RealEstate`NewCategory`NewCategory`Technology)
Run Code Online (Sandbox Code Playgroud)