KDB - 如何 select 带有前缀数字的列?

KDB - How to select a column with prefixed numbers?

我有一个 table 个属性,我正试图从这些属性中抽离,虽然这个抽离有意义,但我成功从中抽离的几个关键属性值都带有数字前缀(用于排序目的)。这些是我们想要调整和报告的重要属性(有几个这样的属性)。

我在这里发现了一个类似的问题: 当我清理字典 .Q.id t 时,我在列前添加了 a

当我 运行 键入返回的值时,它返回 99h 所以主元 returns 是一个字典。

我正在尝试利用 enlist(`1CODE)#t 但目前还无济于事。

有什么想法或建议吗?

q) t

monthDate | 1CODE    2CODE     3CODE    4CODE    
----------| ------------------------------------
2022.01.01| 18.0054  0.1537228 4.116678 9.332936
2022.02.01| 17.87151 0.1527959 3.866393 9.685012
2022.03.01| 17.739   0.1518747 3.646734 10.00515
...

我不确定你在开始时所说的 pivoting of 是什么意思,但我遇到的一个问题是 enlist 函数应该使用方括号 - 而不是你 [=13] 中的圆括号=].所以你想要的代码是:

  enlist[`1CODE]#t 

您不能在键控 table 上使用 colName#table(在这种情况下,99h 是键控 table,虽然是键控 table也是一本字典)。因此,您必须首先使用 0!

取消 table 的密钥
t:1!flip`monthDate`1CODE`2CODE!(2022.01.01 2022.02.01 2022.03.01;3?100.;3?10.);

q)((),`1CODE)#0!t
1CODE
--------
61.37452
52.94808
69.16099

q)((),`1CODE`2CODE)#0!t
1CODE    2CODE
------------------
61.37452 0.8388858
52.94808 1.959907
69.16099 3.75638

kdb 中的表只是字典列表。类型 99h 可以是键控 table 和字典。如果您已经清理了 table:

,您仍然可以使用 qsql
q)select a1CODE from .Q.id t
a1CODE
--------
18.0054
17.87151
17.739

另一种选择是使用 xcol 重命名您的列:

q)t:(`monthDate,` rotate'string 1_cols t)xcol t
q)select CODE1 from t1
CODE1
--------
47.35547
75.21426
99.14374