我正在整理一个查询KDB会话并将各种数据位返回到前端的进程。
前端将参数传递给KDB会话,该会话是一个以字符串形式出现的表名 - 例如"table"
,其中table
是KDB会话中的表
我可以在所引用的基础表上运行一些简单的KDB函数,例如:
count `$"table"
cols `$"table"
在其他情况下,前端将一个字符串传递给KDB会话,该会话指定一个函数和一个参数,该参数在运行时返回一个等于上面table
的表 - 例如"function parameter"
我想在运行function parameter
以下内容不会分别返回相当于count table
和cols table
的输出:
count `$"function parameter"
cols `$"function parameter"
从字符串"function parameter"
非常感谢!
答案 0 :(得分:5)
在您的示例中,cols
能够将表或表的名称作为参数作为符号,这就是它按预期返回列名的原因。 count
不能将表的名称作为参数,因此只返回1,因为只有一个符号元素。
"function parameter"
已被强制转换为符号`function parameter
并且没有具有此名称的表,因此将此作为参数传递给cols
会抛出错误,同时将其传递给{出于与以前相同的原因,{1}}将返回1。
您可能有兴趣将count
函数与字符串参数一起使用,并在此处提供文档:http://code.kx.com/q/ref/metadata/#value。
它将评估字符串参数,就好像它已被输入命令提示符一样。使用value
将返回value "table"
变量,table
将使用参数运行函数,该参数也是表格。
然后可以使用value "function parameter"
或count value "function parameter"
将这些函数传递到您的简单函数中,以返回所需的输出。
希望这很有用,
标记
答案 1 :(得分:2)
{simple function} eval eval parse "x"
应该适用于两者。
答案 2 :(得分:1)
count get["function parameter"]
cols get["function parameter"]
应该可以工作,并且不要求你将参数从字符数组转换为符号。