标签: kdb

KDB:从内存中删除所有变量

如何删除 KDB/q 内存中当前的所有变量?

而不是像这样手动列出变量(我有很多变量):

delete a,b,c from `.
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情(下面的命令不起作用):

delete (system "v") from `.
{delete x from `.} each system "v"
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助!

memory variables memory-management kdb

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

KDB+:获取字符串表中所有子字符串的计数

我是 KDB 的新手,正在努力创建查询。将不胜感激任何帮助。

我有一个字符串表,需要获取表中所有字符串中所有特定子字符串的计数。

所以,我们假设我有字符串:

[ 
   string1: Apple is green, cherry is red, 
   string2: Ququmber is green, banana is yellow 
] 
Run Code Online (Sandbox Code Playgroud)

我想计算所有子字符串中“Apple”和“green”的数量。我想要的结果是像这样进行分组:

{ 
   Apple: 1, 
   green: 2 
} 
Run Code Online (Sandbox Code Playgroud)

但不幸的是,我不知道如何进行这样的分组。我已经弄清楚如何获取至少包含一个所需子字符串的字符串:

"select count(text) from data where any text like/: (\"*$Apple*\";\"*$green*\")"
Run Code Online (Sandbox Code Playgroud)

但这返回了所有找到的 Apple 和 green 字符串的累积结果,没有任何分组:

{
    text: 3
}
Run Code Online (Sandbox Code Playgroud)

它不允许区分每个特定子串的数量。

我将非常感谢任何帮助。

select grouping substring count kdb

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

如何聚合 KDB 中的所有列?

假设我有一个简单的表:

j:([] x: til 10; y: til 10; g: 10#`a`b`c)

x y g
-----
0 0 a
1 1 b
2 2 c
3 3 a
4 4 b
5 5 c
6 6 a
7 7 b
8 8 c
9 9 a
Run Code Online (Sandbox Code Playgroud)

如何在g不明确指定每一列的情况下聚合:

例如很好,但不起作用:

select sum by g from j

vs 不好,但有效:

select sum x, sum y by g from j

kdb

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

时间可以用作 KDB 中的列吗?

我创建了一个基于以下内容的数据透视表: https ://code.kx.com/q/kb/pivoting-tables/

我刚刚用分钟替换了符号:

t:([]k:1 2 3 2 3;p:09:00 09:30 10:00 09:00 09:30; v:10 20 30 40 50)
P:asc exec distinct p from t;
exec P#(p!v) by k:k from t
Run Code Online (Sandbox Code Playgroud)

可以说,这是行不通的:

k|
-| -----------------------------
1| `s#09:00 09:30 10:00!10 0N 0N
2| `s#09:00 09:30 10:00!40 20 0N
3| `s#09:00 09:30 10:00!0N 50 30
Run Code Online (Sandbox Code Playgroud)

我期望的是,正如文档所说,它P必须是一个符号列表。

我的问题是;时间数据类型可以用作 KDB 中的列吗?

kdb

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

kdb:我可以使用set关键字来实现@​​[`.;`upd;:;.some.function]吗?

假设有一个现有的函数定义.my.func:{[tbl;data] ...},我想将该upd函数设置为此 lambda。

下面两行等价吗?

@[`.;`upd;:;.my.func]; / #1
`upd set .my.func; / #2
Run Code Online (Sandbox Code Playgroud)

之所以这么问,是因为我在我使用的代码库中看到了很多 #1,但 #2 似乎更简洁,所以想知道它们是否有某种不同。


我检查了https://code.kx.com/q/ref/amend/ “修改于”@[d; i; v; vy]

upd这似乎只是在全局命名空间中定义函数。

  • d =`.
  • 我=`upd
  • v =:
  • 维 =.my.func

我自己运行#1/#2 后,get`.似乎也表明#1/2 是等效的。

kdb

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

为什么从 QPAD 复制的 csv 和从 q 进程保存的 csv 在大小上如此不同?

我正在尝试保存从表生成的 csv。

如果我从 QPAD“全部导出为 CSV”,则文件大小为 22MB。

如果我这样做, `:path.csv 0: csv 0: table文件是 496MB。

该文件包含相同的数据。

我确实有一些列是日期列表、符号列表,这些列在解析为 csv 时会导致一些问题。

为了克服这个问题,我用这个{`$$[1=count x;string first x;`$" "sv string x]}

即其中一个列称为 allDates,如下所示:

其他一些 所有日期 堆叠符号列
值1 , 2001.01.01 ,`符号1
值2 2001.01.01 2001.01.02 `符号2`符号3

如此巨大的尺寸差异从何而来以及如何减小尺寸。

如果我删除这 3 列(列表列表),文件会显着下降。

做一个ungroup不是一个选择。

我认为这里重要的问题是为什么 QPAD 能够处理“D”“S”等类型的列表列表的列,以及如何在不将这些列转换为空格分隔字符串的情况下实现这一点。这就是导致我保存的 csv 如此巨大的原因。

IE。我可以从 QPAD 执行“全部导出到 csv”,大小为 21MB: 在此输入图像描述

但如果我想以编程方式保存它,我需要更改这些 allDates 和 DESK_NAME 列,并且它会增加到 500MB

更新:谢谢大家。我不知道 QPAD 会截断导出数据。这令人担忧。

kdb

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

我们如何迭代并将结果存储在 kdb 的变量中

我有一个字符串,例如“https://www.google.com”,分页计数为 5,如何迭代 URL 来附加 p/page= 递增的分页数,并将结果存储在变量中作为列表?

"https://www.google.com/page=1"
"https://www.google.com/page=2"
"https://www.google.com/page=3"
"https://www.google.com/page=4"
"https://www.google.com/page=5"
Run Code Online (Sandbox Code Playgroud)

所以最终结果看起来像这样,有一个变量 query_var ,它将保存下面的字符串示例列表

query_var:("https://www.google.com/page=1";"https://www.google.com/page=2";"https://www.google.com/page=3";"https://www.google.com/page=4";"https://www.google.com/page=5");
count query_var  \\5
Run Code Online (Sandbox Code Playgroud)

kdb

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

如何获取KDB当日最高报价时间?

我有一张桌子q

t                             ap     bp     s    m
--------------------------------------------------------
2023.01.03D09:29:00.527999180 130.55 130.51 0.04 130.53
2023.01.03D09:29:00.528127764 130.54 130.51 0.03 130.525
2023.01.03D09:29:00.528406582 130.54 130.51 0.03 130.525
2023.01.03D09:29:00.532340845 130.54 130.51 0.03 130.525
2023.01.03D09:29:00.534640830 130.54 130.51 0.03 130.525
2023.01.03D09:29:00.560375666 130.55 130.51 0.04 130.53
2023.01.03D09:29:01.856393774 130.55 130.51 0.04 130.53
Run Code Online (Sandbox Code Playgroud)

我正在尝试从 中提取tfor 。max mq

我的查询是:

select from q where (t.date,m) in (select max m by t.date from q)
Run Code Online (Sandbox Code Playgroud)

这给了我'length错误in。我确信我的查询不正确,但我不确定“正确”的方法是什么。

max m如何使用by提取完整行t.date

kdb

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

create new cols based on a delimiter from a particular column

我有一个表,其中有多个列的选项卡。我对 C 类型的列文本感兴趣。现在我们想使用文本列并根据 delimeter 进行分割;并创建一个新列

所以这里的列名是rank,它的值是1等等...我们在kdb+中如何做到这一点?

我想出了下面的方法,但我不想使用它,因为它被硬编码到第 6 项等等......如果订单发生变化,或者如果国家/地区丢失,那么它会中断怎么办

res:update `$(raze(" *";"=")0:string country) from  update country:(`$";" vs' text)[;6] from res;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

kdb

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

是否可以在 Kdb+ 中创建一张只有一个空主键列的表?

我尝试创建一个只有一列的空表,并将该列设置为主键。但我失败了,直到表中出现另一列。

是否不应该创建一个只有一个键列的空表?

// this failed
et :([pk:`symbol$()])
// this makes, means simgle emtpy key column is available
emptyTable:([primaryKey:`symbol$()] c1:())
// this makes too, means single empty column is available
t1:([]c1:())
Run Code Online (Sandbox Code Playgroud)

database time-series kdb

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