Types KDB+;:如何使用其他不同类型的值更新表中的值

Types KDB+;:如何使用其他不同类型的值更新表中的值,types,kdb,Types,Kdb,表relevantOverrides的meta如下所示: security j startDate d endDate d dataItem s val f 我有一个更新查询: relevantOverrides:update val:163390j from relevantOverrides where security = 18767 val列具有浮点类型,但我需要将更新后的值作为整数插入 由于列表是原子类型的,因此无法轻松添加不同类型的数字 执行所需操作的一种方法是附加泛型null

relevantOverrides
meta
如下所示:

security j
startDate d
endDate d
dataItem s
val f
我有一个更新查询:

 relevantOverrides:update val:163390j from relevantOverrides where security = 18767

val列具有浮点类型,但我需要将更新后的值作为整数插入

由于列表是原子类型的,因此无法轻松添加不同类型的数字

执行所需操作的一种方法是附加泛型null(::)或要更新的类型的值(在本例中为long),这将使列表变为混合列表

然后,在从列表中删除泛型null并进行更新之前,可以更新where子句指定的索引处的值

q)t
security startDate  endDate    dataItem val
-------------------------------------------------
2        2011.11.15 2003.11.17 dol      2.310108
8        2015.03.27 2015.01.12 nca      0.8724017
6        2012.06.15 2015.05.03 dfp      1.024432
9        2012.04.15 2001.07.18 hon      8.671096
0        2000.09.02 2009.12.29 ofm      7.278528

q)update val:-1_ @[val,(::);where security=6;:;163390j] from t
security startDate  endDate    dataItem val
------------------------------------------------
2        2011.11.15 2003.11.17 dol      2.310108
8        2015.03.27 2015.01.12 nca      163390
6        2012.06.15 2015.05.03 dfp      1.024432
9        2012.04.15 2001.07.18 hon      8.671096
0        2000.09.02 2009.12.29 ofm      7.278528
虽然这是可能的,但在手术台上操作时,您可能会遇到困难:

  • 首先,您将无法将结果表保存到磁盘 除了一张平桌子以外的任何东西都不会遇到问题

  • 如果你能够绕过这个问题,你将有一个较低的查询 由于列不是向量而导致的性能

  • 根据列的需要,update函数本身将非常昂贵 被激怒


由于列表是原子类型的,因此无法轻松添加不同类型的数字

执行所需操作的一种方法是附加泛型null(::)或要更新的类型的值(在本例中为long),这将使列表变为混合列表

然后,在从列表中删除泛型null并进行更新之前,可以更新where子句指定的索引处的值

q)t
security startDate  endDate    dataItem val
-------------------------------------------------
2        2011.11.15 2003.11.17 dol      2.310108
8        2015.03.27 2015.01.12 nca      0.8724017
6        2012.06.15 2015.05.03 dfp      1.024432
9        2012.04.15 2001.07.18 hon      8.671096
0        2000.09.02 2009.12.29 ofm      7.278528

q)update val:-1_ @[val,(::);where security=6;:;163390j] from t
security startDate  endDate    dataItem val
------------------------------------------------
2        2011.11.15 2003.11.17 dol      2.310108
8        2015.03.27 2015.01.12 nca      163390
6        2012.06.15 2015.05.03 dfp      1.024432
9        2012.04.15 2001.07.18 hon      8.671096
0        2000.09.02 2009.12.29 ofm      7.278528
虽然这是可能的,但在手术台上操作时,您可能会遇到困难:

  • 首先,您将无法将结果表保存到磁盘 除了一张平桌子以外的任何东西都不会遇到问题

  • 如果你能够绕过这个问题,你将有一个较低的查询 由于列不是向量而导致的性能

  • 根据列的需要,update函数本身将非常昂贵 被激怒