如何将 table 与整数列名称一起使用?

How to use a table with integer column names?

我一直在摆弄我工作的 kdb 时间序列数据库。通常我只是从我们的 R 库中连接它。我注意到 q-sql 语法糖 https://code.kx.com/q4m3/9_Queries_q-sql/ 似乎不适用于整数列。是否有任何解决方法,例如将字母 "c" 添加到除我的 "Date" 列之外的所有列名称?

例如:

考虑 table t:([]c1:`a`b`c`a;c2:20 15 10 20;c3:99.5 99.45 99.42 99.4)

将第一列重命名为 1t: `1 xcol t

现在 select 1 from tselect `1 from t 都失败了!

有人workarounds/hacks/fixes这个问题吗?

通常,将列重命名为数字是一种不好的做法,因为 kdb 很难解释它。然而,解决方法是 select:

的函数形式
q)?[t;();0b;(enlist `1)!enlist `1]
1
-
a
b
c
a

更多关于函数式 qsql 的细节在这里:https://code.kx.com/q/basics/funsql/

如果您确实必须命名列 12 等,您可以使用 functional forms of select, exec, update and delete or you can use .Q.id a.k.a。为您消毒:

    q)t:([]c1:`a`b`c`a;c2:20 15 10 20;c3:99.5 99.45 99.42 99.4)
    q)t: `1 xcol t
    q).Q.id t
    a1 c2 c3
    -----------
    a  20 99.5
    b  15 99.45
    c  10 99.42
    a  20 99.4
    q)select a1 from .Q.id t
    a1
    --
    a
    b
    c
    a