KDB:如何创建序列号

KDB:如何创建序列号,kdb,Kdb,我想创建一个列,如果另一列的值发生变化,该列的值将增加。以下是一个例子: Party sequence ABC 1 ABC 1 ABC 1 OOO 2 OOO 2 PIM 3 AAW 4 ABC 5 TOM 6 TOM 6 TOM 6 我试过的是 update sequence: ?[party=prev party;prev sequence;(prev sequence) + 1] 然而,我一直得

我想创建一个列,如果另一列的值发生变化,该列的值将增加。以下是一个例子:

Party   sequence
ABC     1
ABC     1
ABC     1
OOO     2
OOO     2
PIM     3
AAW     4
ABC     5
TOM     6
TOM     6
TOM     6
我试过的是

update sequence: ?[party=prev party;prev sequence;(prev sequence) + 1]
然而,我一直得到的是一个错误:“更正提示:长度”
如何完成此任务?

Difference将为每个更改的对象提供一个布尔值,然后您可以对布尔值进行滚动求和:

q)update sequence:sums differ party from ([]party:`ABC`OOO`PIM`AAW`ABC`TOM where 3 2 1 1 1 3)
party sequence
--------------
ABC   1
ABC   1
ABC   1
OOO   2
OOO   2
PIM   3
AAW   4
ABC   5
TOM   6
TOM   6
TOM   6

Difference将为每个更改的对象提供一个布尔值,然后您可以对布尔值进行滚动求和:

q)update sequence:sums differ party from ([]party:`ABC`OOO`PIM`AAW`ABC`TOM where 3 2 1 1 1 3)
party sequence
--------------
ABC   1
ABC   1
ABC   1
OOO   2
OOO   2
PIM   3
AAW   4
ABC   5
TOM   6
TOM   6
TOM   6

事实并非如此——这只是我精确地重新创建了您的示例表。解决方案就是更新顺序:总和与你的表不同,不管partyyeah的内容是什么,它都会起作用。对不起,现在是晚上11点11分,我的大脑根本不工作。一个简单的问题,如果有另一个变量,当这个变量发生变化时,我想将序列值设置为0。例如,日期变量。所以,当日期更改时,序列将重置为0Ok,不用担心!然后,您将按日期执行
。因此,
更新顺序:总和与表中的日期不同。保持为1是什么意思?检查此示例:
update sequence:summes party by date from([]日期:2020.01.01 2020.01.02)cross([]party:`ABC`OOO`PIM`AAW`ABC`TOM,其中3 2 1 1 3)
序列在第二个日期重置。这不是你的意思吗?你的桌子有什么不同?谢谢,现在可以用了。我不确定我做错了什么。我真的应该去睡觉了。谢谢你,穆希特没有——那只是我精确地重新创建了你的样本表。解决方案就是更新顺序:总和与你的表不同,不管partyyeah的内容是什么,它都会起作用。对不起,现在是晚上11点11分,我的大脑根本不工作。一个简单的问题,如果有另一个变量,当这个变量发生变化时,我想将序列值设置为0。例如,日期变量。所以,当日期更改时,序列将重置为0Ok,不用担心!然后,您将按日期执行
。因此,
更新顺序:总和与表中的日期不同。保持为1是什么意思?检查此示例:
update sequence:summes party by date from([]日期:2020.01.01 2020.01.02)cross([]party:`ABC`OOO`PIM`AAW`ABC`TOM,其中3 2 1 1 3)
序列在第二个日期重置。这不是你的意思吗?你的桌子有什么不同?谢谢,现在可以用了。我不确定我做错了什么。我真的应该去睡觉了。非常感谢你