标签: kdb

从分区数据库中删除表太大而无法加载到内存中的行

你不能直接从分区数据库中删除数据行,所以我看到的方法是:

  • 使用日期的 where 子句将表加载到内存中

  • 从内存中的表中删除行

  • 将表重新保存到磁盘,覆盖旧数据

但这假设该分区可以加载到内存中。如果做不到,那我能做什么呢?

我查看了 dbmaint.q 脚本,但似乎没有修改行的解决方案,只有列。

kdb

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

是否可以在 kdb 输出中打印彩色输出?

我有一组单元测试,我想立即运行它们,并有一个包含多行的表,其中“通过”的为绿色,“失败”的为红色。

我希望输出看起来像这样: 期望的输出

我知道我必须使用 ANSI 颜色代码,但到目前为止我无法使其与neg[1]命令一起使用,甚至无法使用system""

这可能吗?

kdb

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

kdb查询:按时间和类别对Id进行分组

我想统计Id的数量并将它们按类别分组在特定时间下

样本数据:

tab:([]time:1000?.z.t;category:1000?`a`b`c`d;id:1000?`abc`cdb`jiw`opw`jiofsef`lksfj)
Run Code Online (Sandbox Code Playgroud)

我期待的结果就像

按组划分的 ID 时间编号

00:00 - 05:00 300

05:00 - 12:00 100

12:00 - 17:00 200

17:00 - 24:00 400

这里的时间差距可能不完全相同。任何想法?

这就是我到目前为止所得到的:

select count id by category from tab
Run Code Online (Sandbox Code Playgroud)

kdb

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

如何将新列添加到 kdb 表的中间?

我在 kdb/Q 中有一个表,如下所示:

table_a:([] Symbol:`X`Y`Z; StartDate:2023.09.01 2023.09.02 2023.09.03;Name:`Maria`Sam`Sydney);
Run Code Online (Sandbox Code Playgroud)

它给了我一个看起来像这样的表:

象征 开始日期 姓名
X 2023.09.01 玛丽亚
2023.09.02 山姆
Z 2023.09.03 悉尼

我想要的是在 StartDate 和 Name 列之间创建一个新列,因此看起来像这样:

象征 开始日期 结束日期 姓名
X 2023.09.01 2023.09.01 玛丽亚
2023.09.02 2023.09.08 山姆
Z 2023.09.03 2023.09.14 悉尼

我查找了文档,但看起来只有将行附加到表末尾的选项。有没有办法让我在使用 Q 之间添加新列,或者我是否必须重建当前表?

kdb

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

将 kdb q 中的数据从 yyyy.mm.dd 格式化为 Mmm-yy

我有一个包含日期的表格: ([] date: 2023.09.09 2024.07.01 2027.02.06) 并且需要将其转换为格式“Mmm-yy”

日期
9 月 23 日
7 月 24 日
2 月 27 日

format date kdb

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

重命名 kdb q 中的列

如何将列从 TotalPercent 重命名为“%”

总百分比
98
87

输出为

%
98
87

在 kdb q 中

kdb

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

'exec' 和 'select' 的区别;素数分解算法

首先,我无法理解execselectin之间的区别kdbexec参考并没有多大帮助!

其次,我正在尝试编写一个程序来解决欧拉问题 5。我通过使用modand解决了它each,但它很慢并且需要大量空间。我相信我可以通过将 20 的素数分解的值相加来做到这一点。那是对的吗?如果是这样,任何人都可以帮助我这样做吗?我写了以下内容来获得素数分解。它还不能接收列表。

f1:{(x mod y) = 0}
f2:{if[f1[a;y]&(not max f1[y;x],0);x:x,y];x}
f3:{x+:1;y:f2[y;x];if[x<a;y:.z.s[x;y]];y}
f3[1;()
Run Code Online (Sandbox Code Playgroud)

algorithm kdb

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

如何取消分配 KDB 中的变量?

假设我写过:

d: 3
Run Code Online (Sandbox Code Playgroud)

如果我想删除这个变量,我该如何取消分配呢?

我尝试过delete d_d但这些都不起作用。

kdb

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

如何在布尔值列表中搜索第一个 true?

我试图找到第一个真实值的索引:

1b?001b

Expected result: 2
Actual result: ,0b
Run Code Online (Sandbox Code Playgroud)

两个问题:

  • 我该如何解决这个问题?
  • 我的代码实际上在做什么?

kdb

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

查询完成后强制终止 q 会话

我试图在查询完成后强制终止(而不是关闭)aq 会话,以节省计算机上的资源。

目前它正在使用:

conn.sendAsync("exit 0")

问题是,如果我在它之后再次运行查询(尝试重新打开连接并运行另一个查询),它可能会失败,因为之前的连接仍会被终止asynchronous

因此,我尝试对synchronous查询执行相同的操作,但在尝试时:

conn.sendSync("exit 0")

我得到:

ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
python-BaseException
Run Code Online (Sandbox Code Playgroud)

我可以指定一个超时,以便 q 会话在 10 秒后自动终止,或者也许还有另一种方法来强制终止 q 会话?

我的代码如下所示:

conn = qc.QConnection(host='localhost', port=12345, timeout=10000)
conn.open()
res = None
try:
    res = conn.sendSync(query, numpy_temporals=True)
except Exception as e:
    print(f'Error running {query}: {e}')
conn.sendSync("exit 0")
conn.close()
Run Code Online (Sandbox Code Playgroud)

python asynchronous synchronous kdb qpython

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

标签 统计

kdb ×10

algorithm ×1

asynchronous ×1

date ×1

format ×1

python ×1

qpython ×1

synchronous ×1