小编Uts*_*Uts的帖子

在 q kdb 中使用 select/fby 两次优化查询

我正在解决 fby 的经典问题,以从交易表中找到每个符号的最高价格。
表:tr

time                          sym  src price size
-------------------------------------------------
2019.03.11D09:00:00.277000000 GOOG L   36.01 1427
2019.03.11D09:00:04.123000000 GOOG O   36.01 708
2019.03.11D09:00:08.123000000 MSFT N   35.5  7810
2019.03.11D09:00:10.123000000 MSFT O   31.1  1100
Run Code Online (Sandbox Code Playgroud)

当我申请 fby 时:

select from tr where price=(max;price) fby sym
Run Code Online (Sandbox Code Playgroud)

输出是:

time                          sym  src price size
-------------------------------------------------
2019.03.11D09:00:00.277000000 GOOG L   36.01 1427
2019.03.11D09:00:04.123000000 GOOG O   36.01 708
2019.03.11D09:00:08.123000000 MSFT N   35.5  7810
Run Code Online (Sandbox Code Playgroud)

但是,正如我们所看到的,我进行了两次 sym GOOG 交易,因为最高价格是相同的。因此,现在我想获得每个符号的输出以及每个符号的最后交易时间(以及最大价格)。所以,我使用下面的查询

select from (select from tr where price=(max;price) fby sym) where time=(last;time) fby sym
Run Code Online (Sandbox Code Playgroud)

获取输出: …

kdb

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

Comparison of sublist and take operator(#) in q kdb

While fetching a subset of data from a table when I use sublist or take operator(#), most of the times take operator is slow compared to sublist function.

5 observations posted in comment after querying table t in hdb which consists of 231131 rows and 71 cols.

\t 10000 10 sublist select from t where date=.z.d-5 /Time taken - 62j 92j 68j  63j 65j 
\t 10000 10#select from t where date=.z.d-5 / Time taken - 544j 546j 567j 569j 585j …
Run Code Online (Sandbox Code Playgroud)

kdb

4
推荐指数
1
解决办法
204
查看次数

仅选择表中的那些列在q kdb中不具有空值

我有一张桌子:

q)t:([] a:1 2 3; b:```; c:`a`b`c)
a b c
-----
1   a
2   b
3   c
Run Code Online (Sandbox Code Playgroud)

从此表中,我只想选择不具有空值的列,在这种情况下,输出中应该省略列b(类似于pandas中的dropna方法)。

expected output
a c
---
1 a
2 b
3 c
Run Code Online (Sandbox Code Playgroud)

我尝试了很多类似的事情

select from t where not null cols
Run Code Online (Sandbox Code Playgroud)

但没有用。

kdb

3
推荐指数
1
解决办法
232
查看次数

ssh到具有不同用户名的另一台服务器

我必须编写一个shell脚本,使用其他用户名ssh到另一台服务器而不实际要求用户输入密码?由于约束,我无法使用基于密钥的身份验证.让源服务器 - abc.efg.com源用户名 - 汤姆源密码 - tom123

目标服务器 - xyz.efc.com目标用户名 - bob目标密码 - bob123

我必须将bash脚本放在源服务器中.如果可以使用expect工具和/或sshpass完成某些事情,请告诉我.

我可以在bash脚本中对目标服务器的密码进行硬编码,但我无法承担交互式会话,只是当我运行脚本时,我想看到目标服务器使用另一个用户名登录.

提前致谢.

unix ssh shell expect

2
推荐指数
1
解决办法
2万
查看次数

如何从kdb中的字符串中删除空格和下划线?

如何从字符串中删除空格和下划线?

Input String: 
s:"Monday comes_after Sunday";

Expected Output:
"MondaycomesafterSunday"
Run Code Online (Sandbox Code Playgroud)

kdb

2
推荐指数
1
解决办法
98
查看次数

是否可以在q脚本中编写k代码?

我尝试从q函数调用k的count函数,但是它给出了错误。

{
  "k)"# 1 2 3 4 5 //~ count 1 2 3 4 5
 }[]
Run Code Online (Sandbox Code Playgroud)

因此,我有以下问题:
1.是否可以在q脚本中编写k代码?
2.如果是,那么我们如何在q脚本中编写k个代码?在q脚本/函数中使用k代码是否会使脚本/函数更高效和更优化?

kdb

2
推荐指数
1
解决办法
180
查看次数

在q kdb中的某些条件下使用group by优化查询

我们有一个表t如下

q)t:([] sym:10?`GOOG`AMZN`IBM; px:10?100.; size:10?1000; mkt:10?`ab`cd`ef)
Run Code Online (Sandbox Code Playgroud)

我们的要求是,如果“ mkt”列的值为“ ef”,则按“ sym”列对表“ t”进行“分组”,对于其余市场(“ ab`cd”),我们需要所有值(而不是“分组” )。对于此用例,我在下面编写了可以按预期工作的查询,

q)(select px, size, sym, mkt from select by sym from t where mkt=`ef), select px, size, sym, mkt from t where mkt in `ab`cd
Run Code Online (Sandbox Code Playgroud)

请以一种方式帮助我优化上述查询,即

sudo code - 
if mkt=`ef: 
    then use group by on table
else if mkt in `ab`cd
    don't use group by on table
Run Code Online (Sandbox Code Playgroud)

kdb

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

q kdb中表中应用于“ i”列的属性-性能

当我在查询下面运行以获取表的计数时,运行查询所需的大小和时间几乎相同。/表t有97029个记录和124个列

Q.1。-以下查询中的第i列是否使用has函数在内部使用唯一属性在恒定时间内返回输出?

\ts select last i from t where date=.z.d-5 / 3j, 1313248j 
/ time taken to run the query and memory used is always same not matter how many times we run same query
Run Code Online (Sandbox Code Playgroud)

当我运行以下查询时:
第一次所需的时间和内存很高,但是从下一次运行开始,所需的时间和内存却很少。

Q.2。第一次运行查询时,kdb是否缓存输出,并在下次显示来自缓存的输出?

Q.3在查询下面运行时,是否在第i列上应用了属性?

\ts select count i from t where date=.z.d-5 / 1512j, 67292448j
\ts select count i from t where date=.z.d-5 / 0j, 2160j
Run Code Online (Sandbox Code Playgroud)

在以下查询中运行时:
Q.4在以下查询中运行时,第i列是否应用了任何属性?

\ts count select from t where date=.z.d-5 / 184j, 37292448j 
 /time taken to run the query and …
Run Code Online (Sandbox Code Playgroud)

kdb

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

q kdb中的异常/错误处理-Try-Catch-Finally(Java)/ Try-Except-Finally(Python)的替代方法

由于我们在Java中有try-catch,因此我可以在q kdb中找到trap-at。
但是我的要求是try-catch-finally,即在try块中,我打开odbc连接,最后我要关闭odbc连接。

Sudo code:

try{
  con=openODBCConnection(dbName);
  //n statements;
}catch(Exception e){
   catchingNotSoImpException(e)
}finally{
 closeODBCCon(con);
}
Run Code Online (Sandbox Code Playgroud)

kdb

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

读取 q kdb 中的 csv 文件,无需手动指定列类型

kdb 有什么方法可以读取 csv 文件,就像 pandas 中的 read_csv() 函数一样简单。

我通常使用类似下面的代码来读取 kdb 中的 csv

("I*FS";enlist ",")0:`:a.csv / where a.csv is a csv file with Integer, String, Float and Symbol columns
Run Code Online (Sandbox Code Playgroud)

很多时候在实际情况下,我们要读取的csv文件有超过100列,那么很难提供列类型来运行。
kdb 有没有办法读取 csv,其中 kdb 可以自行理解列的类型?就像是

("*";enlist ",")0:`:a.csv / this fails
Run Code Online (Sandbox Code Playgroud)

kdb

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

标签 统计

kdb ×9

expect ×1

shell ×1

ssh ×1

unix ×1