如何删除 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)
感谢您的帮助!
我是 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)
它不允许区分每个特定子串的数量。
我将非常感谢任何帮助。
假设我有一个简单的表:
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
我创建了一个基于以下内容的数据透视表: 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 中的列吗?
假设有一个现有的函数定义.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这似乎只是在全局命名空间中定义函数。
`.`upd:.my.func我自己运行#1/#2 后,get`.似乎也表明#1/2 是等效的。
我正在尝试保存从表生成的 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 会截断导出数据。这令人担忧。
我有一个字符串,例如“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) 我有一张桌子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?
我有一个表,其中有多个列的选项卡。我对 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)
我尝试创建一个只有一列的空表,并将该列设置为主键。但我失败了,直到表中出现另一列。
是否不应该创建一个只有一个键列的空表?
// 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)