将空日期 0Nd 添加到 kdb 中空单元格的日期列

Add Null date 0Nd to date column for empty cells in kdb

尝试用空日期更新空单元格,即日期列为 0Nd data: update date:0Nd^date from data where product not like "Debet:Loan";

注意:列类型为日期

Class product date
First Debet:Instru:*
First Debet:Instru:*
First Debet:Loan 2020.10.12
First Debet:Loan 2020.10.12

更改后 table 应该看起来像

Class product date
First Debet:Instru:* 0Nd
First Debet:Instru:* 0Nd
First Debet:Loan 2020.10.12
First Debet:Loan 2020.10.12

我认为这里的混淆在于,如果单元格为空且列(列表)的数据类型不混合,控制台会将单元格显示为空。

例如:

q)0Nd~first 0N 2021.01.01d
1b

这里的null实际上是0Nd类型,因为列表是日期类型。您可以认为这类似于控制台将显示整数浮点列表的方式 - 在这种情况下,f 由列表中的最后一个元素假设或“继承” >

q)`float 2 3 4
1 2 3 4f

如果您真的想在 table 中显示 0Nd,则必须将该列设为混合列表 - 从而强制控制台向您显示 Null 的确切类型,因为您不能根据列的类型:

q)([]a: 1 2 3;date:(0Nd;10;2021.01.01d))
a date
------------
1 0Nd
2 10
3 2021.01.01

请不要这样做 - 显示为空单元格的列中的 null 为 0Nd,即使它未明确显示在控制台中或可能在日期列表中显示为 0N,例如 0N 2021.01.01 2022.01.01

q)t:([]a: 1 2 3;date:(0Nd;2021.10.10;2021.01.01d))
q)t
a date
------------
1
2 2021.10.10
3 2021.01.01
q)exec date from t
0N 2021.10.10 2021.01.01
q)first exec date from t
0Nd

谢谢