如何为 KDB+ 创建带有 char 数组的批量对象
how to create bulk object with char arrays for KDB+
我需要通过 C 接口将大量 K 对象发送到 KDB
目前我所有的字符串都作为不理想的符号发送。
我想用标准字符数组替换所有符号
对于 Symbols,我是这样做的
// table_def:([] name: `symbol$())
K m_data = ktn(0, 1); // 1 column
kK(m_data)[0] = ktn(KS, 100); // 100 rows in bulk
for (unsigned i = 0; i < 100; i++) {
kS(kK(m_data)[0])[i] = ss("abc");
}
但不确定如何为 char 数组创建 Bulk 结构,这是我尝试过的方法。
// table_def:([] name: `char$())
K m_data = ktn(0, 1); // 1 column
kK(m_data)[0] = ktn(KC, 100); // 100 rows in bulk
for (unsigned i = 0; i < 100; i++) {
kS(kK(m_data)[0])[i] = ss("abc"); // this fail with a `type error
kC(kK(m_data)[0])[i] = kp("abc"); // this fail because kC expect a char not a char*
如有任何帮助,我们将不胜感激
kdb中的一个string列被认为是一个通用类型(list of list of char)。
q)type each flip ([]a:string`aa`bb;b:"ab")
a| 0 <-- string column
b| 10 <-- char column
所以你的 kdb table 定义应该是
// table_def:([] name: ())
您之前的定义期望列值是原子字符(这不是您想要的),因此我认为是“类型错误”。
因此,在您的 C 代码中创建 K 对象时,第一列中的数据类型应为混合类型:
kK(m_data)[0] = ktn(0, 100);
从那里,为每行创建值:
kK(kK(m_data)[0])[i] = kp("abc");
你能试试上面的方法,看看效果如何吗?目前这里没有工作示例:(
我需要通过 C 接口将大量 K 对象发送到 KDB 目前我所有的字符串都作为不理想的符号发送。
我想用标准字符数组替换所有符号
对于 Symbols,我是这样做的
// table_def:([] name: `symbol$())
K m_data = ktn(0, 1); // 1 column
kK(m_data)[0] = ktn(KS, 100); // 100 rows in bulk
for (unsigned i = 0; i < 100; i++) {
kS(kK(m_data)[0])[i] = ss("abc");
}
但不确定如何为 char 数组创建 Bulk 结构,这是我尝试过的方法。
// table_def:([] name: `char$())
K m_data = ktn(0, 1); // 1 column
kK(m_data)[0] = ktn(KC, 100); // 100 rows in bulk
for (unsigned i = 0; i < 100; i++) {
kS(kK(m_data)[0])[i] = ss("abc"); // this fail with a `type error
kC(kK(m_data)[0])[i] = kp("abc"); // this fail because kC expect a char not a char*
如有任何帮助,我们将不胜感激
kdb中的一个string列被认为是一个通用类型(list of list of char)。
q)type each flip ([]a:string`aa`bb;b:"ab")
a| 0 <-- string column
b| 10 <-- char column
所以你的 kdb table 定义应该是
// table_def:([] name: ())
您之前的定义期望列值是原子字符(这不是您想要的),因此我认为是“类型错误”。
因此,在您的 C 代码中创建 K 对象时,第一列中的数据类型应为混合类型:
kK(m_data)[0] = ktn(0, 100);
从那里,为每行创建值:
kK(kK(m_data)[0])[i] = kp("abc");
你能试试上面的方法,看看效果如何吗?目前这里没有工作示例:(