如何将 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)
。
将第一列重命名为 1
:t: `1 xcol t
。
现在 select 1 from t
和 select `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/
如果您确实必须命名列 1
、2
等,您可以使用 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
我一直在摆弄我工作的 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)
。
将第一列重命名为 1
:t: `1 xcol t
。
现在 select 1 from t
和 select `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/
如果您确实必须命名列 1
、2
等,您可以使用 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