我在KDB +面临一个非常奇怪的问题.从kdb + server返回的数据类型是-79.我无法找到.
任何人都知道那种类型.?
我正试图在KDB/q中调整一些交易数据.虽然我的数据与网站上的工作示例略有不同(参见一般的枢轴功能:http://code.kx.com/q/cookbook/pivoting-tables/),但我无法使用该功能,即使经过几个小时的尝试(我对KDB很新).
简而言之,我试图从这张表中走出来:
q)5# trades_agg
date sym time exchange buysell| shares
--------------------------------------| ------
2009.01.05 aaca 09:30 BATS B | 484
2009.01.05 aaca 09:30 BATS S | 434
2009.01.05 aaca 09:30 NASDAQ B | 235
2009.01.05 aaca 09:30 NASDAQ S | 429
2009.01.05 aaca 09:30 NYSE B | 309
Run Code Online (Sandbox Code Playgroud)
到这一个:
date sym time | BATSsharesB BATSsharesS NASDAQsharesB ...
----------------------| -----------------------------------------------
2009.01.05 aaca 09:30 | 484 434 235 ...
... | ...
Run Code Online (Sandbox Code Playgroud)
我将提供一个工作示例来说明事情:
// Create data
qpd:5*2*4*"i"$16:00-09:30
date:raze(100*qpd)#'2009.01.05+til 5 …Run Code Online (Sandbox Code Playgroud) 我试图将空值更新为0f,以便它可以用于聚合.
以下是我的代码:
update x:0f from data where date=2016.07.01,null x;
Run Code Online (Sandbox Code Playgroud)
但它不能在分区表上工作,我怎么能在分区表上更新?
在kdb + / q中,如何通过一系列功能通过管道传递数据,以使上一步的输出成为下一步的输入?
例如:
q)t:([]sym:`a`c`b;val:1 3 2)
q)`sym xkey `sym xasc t / how to achieve the same result as this?
Run Code Online (Sandbox Code Playgroud)
我猜想有些变化over或/可以工作:
?? over (xasc;xkey)
Run Code Online (Sandbox Code Playgroud)
优点:如何实现t从右侧插入的方式(本着q语法左右读法的精神)?
(xasc;xkey) ?? t
Run Code Online (Sandbox Code Playgroud) 我想在同一个脚本中加载多个脚本:
我可以运行这个:
\l first_script.q
/ more q code
Run Code Online (Sandbox Code Playgroud)
但是如果我尝试运行这个:
\l first_script.q;
\l second_script.q;
/ more q code
Run Code Online (Sandbox Code Playgroud)
......它解析';' 作为文件名的一部分.有谁知道加载多个q文件的方法?
这就是我们通常将CSV(包含5个字符串列)导入表格的方式.
table: ("SSSSS" ;enlist ",") 0: `input.csv
Run Code Online (Sandbox Code Playgroud)
但是,我有一个包含255列的CSV文件.我需要输入255 S才能以这种方式导入它们吗?
我想在Python脚本中执行KDB函数.但是,KDB函数包含在单独的Q文件中.那么如何读取此Q文件,然后在Python中的Q文件中查询函数?
我想在q / kdb中创建一个长度可变的列表,x其中包含e重复的相同元素。例如:
x:4;
e:`this;
expected_result:`this`this`this`this
Run Code Online (Sandbox Code Playgroud) 我希望通过KX仪表板可视化一些数据。数据应通过轮询定期更新。我已经手动测试了到我的KDB服务器实例的轮询和连接,并且可以正常工作。
但是,我无法为JSON文件创建合适的GET请求,然后将其插入到将在KX仪表板中直观显示的表中。
我在这里遵循Timestored的指南:http ://www.timestored.com/kdb-guides/kdb-http-webserver
查询发出:
q) httpGet:{[host;location] (`$":http://",host)"GET ",location," HTTP/1.0\r\nHost:",host,"\r\n\r\n"};
q) b: httpGet[ "www.google.com"; "/"]
Run Code Online (Sandbox Code Playgroud)
超时错误:
conn. OS reports: Connection timed out
[16] httpGet:{[host;location] (`$":http://",host)"GET ",location," HTTP/1.0\r\nHost:",host,"\r\n\r\n"}
Run Code Online (Sandbox Code Playgroud)
我将对如何创建适当的GET请求并检索JSON(即https://jsonplaceholder.typicode.com/)并将其解析为现有表进行可视化的示例表示赞赏。
我尝试从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代码是否会使脚本/函数更高效和更优化?