只是好奇这个KX代码做了什么:
" " {`$first x vs y}/: column
它是在更新语句之后使用的大型KX查询的一部分 .
什么是 x vs y
以及它们来自哪里以及 /:
与左侧 " "
一起做什么?
整个查询看起来像这样:
select count i by date, somecolumn from update somecolumn:(" " {`$first x vs y}/: othercolumn) from select from some_table
什么是 x vs y
以及它们来自哪里以及 /:
与左侧 " "
一起做什么?
2 回答
/:
是adverb,表示'each right' .一个简单的例子是使用
,
和/:
将左项加入每个右项:vs
是'vector scalar',在您的情况下,它与分隔符" "分隔字符串 .{
$first x vs y}是一个用
x剪切
y` 的函数,取第一个结果并将其转换为符号:将它们组合在一起,
" " {
$first x vs y}/: column` 表示用" "剪切'column'中的每个字符串,取每个结果中的第一个并将它们转换为符号:简单来说:它从字符串中取出空格之前的第一个值并将其转换为符号 .
例如:输入“Hello World”将输出“Hello”
输出:`你好
您可以使用简单列表对其进行测试(查询中的列将替换为与该列对应的表中的实际列表)
输出:
hello
测试将此与ex1相比,“”被移动到开始,这是由于“每个权利(/ :)”的语法
另一个更简单的版本是:
WooiKent已经解释了这些功能 . 但这里有一些参考:
Each-Right(/:) : 这是一个迭代右列表值的循环
http://code.kx.com/q/ref/adverbs/#each-right
vs(Vector From Scalar): 在某个分隔符上中断字符串
http://code.kx.com/q/ref/casting/#vs
在您的查询中,它采用类型为字符串作为输入的列 . 对于该列的每个元素(行),在空格之前取第一个值 . 最后将该值转换为符号 .