我在q中发现了一个奇怪的问题,我认为这是一个可能的错误。 我已经定义了一个简单的函数,返回一个float,给定一个日期作为输入:函数行为在独立调用或内部查询时的差异
give_dummy:{[the_date]
/// give_dummy[2013.05.10] // <- if u wanna test
:$[ the_date > 2013.01.01 ; 0.001 ; 0.002] ;
}
它的工作原理没有问题,如果所谓的独立:
q)give_dummy[2013.05.10]
0.001
不过,如果我尝试调用它在查询中我得到一个错误:
q)select give_dummy[date] from tab where sym = sec, i >= first_i , i < 4000
'type
如果我简化功能只返回输入日期(身份功能),它工作在查询中。 如果我简化函数返回一个浮点数,而不比较日期,它在查询中工作。 我使用输入日期在if语句中比较它时出现问题: $ [the_date> 2013.01.01; 0.001; 0.002]
同样的情况,如果我重新定义函数采取浮动作为输入,而不是比一个日期,然后我试着给的价格,查询中输入:
give_dummy:{[the_price]
/// give_dummy[12] // <- if u wanna test
:$[ the_price > 20 ; 0.001 ; 0.002] ;
}
q) give_dummy[12]
0.002
q)select give_dummy[price] from tab where sym = sec, i >= first_i , i < 4000
'type
你有任何想法为什么发生这种情况? 我尝试了一切。 感谢 马尔科
我补充说,如果我试图插入一个简单的if语句在查询中,ID不起作用: select($ [1> 0; 1; 0]),日期,价格,音量从标签其中sym =秒 '排名 –
如果我使用?[;;]语句,而不是$ [;;]之一。它的工作.. O_o –