【问题标题】:Add Null date 0Nd to date column for empty cells in kdb将空日期 0Nd 添加到 kdb 中空单元格的日期列
【发布时间】:2021-12-08 04:42:58
【问题描述】:

尝试使用空日期更新空单元格,即日期列的 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

更改后的表格应该是这样的

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

【问题讨论】:

  • 在表格中,等于 null 的日期单元格打印为空(如顶部表格所示)。我确实希望在您的表上调用 null[t[date]] 将输出 1100b 并且 t date 将输出“0N 0N 2020.10.12 2020.10.12”,对吗? 0Nd^date 没有得到所需的输出,因为前 2 个日期已经为空
  • 不,不是很清楚,它会显示它自己的空单元格。我希望空单元格应该填充 0Nd

标签: kdb


【解决方案1】:

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

例如:

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

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

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

如果您真的想在表中显示 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

谢谢

【讨论】:

    猜你喜欢
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多