KDB+:如何用另一个不同类型的值更新 Table 中的一个值
KDB+: How to Update a Value from Table with Another Value of Different Type
tablerelevantOverrides
的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
虽然有可能,但在 table 上运行时您可能会 运行 遇到困难:
首先,您将无法将结果 table 保存到磁盘
除了没有 运行 问题
之外的任何东西 table
如果你能解决这个问题,你的查询就会降低
由于列不是向量而导致的性能。
更新函数本身会很昂贵,因为列需要
待修正
tablerelevantOverrides
的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
虽然有可能,但在 table 上运行时您可能会 运行 遇到困难:
首先,您将无法将结果 table 保存到磁盘 除了没有 运行 问题
之外的任何东西 table
如果你能解决这个问题,你的查询就会降低 由于列不是向量而导致的性能。
更新函数本身会很昂贵,因为列需要 待修正