gpt4 book ai didi

kdb - 在 q 中独立调用或在查询内部调用时函数行为的差异

转载 作者:行者123 更新时间:2023-12-04 02:55:04 25 4
gpt4 key购买 nike

我在 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

如果我将函数简化为只返回输入日期(身份函数),它就可以在查询中使用。如果我将函数简化为只返回一个 float ,而不比较日期,它就可以在查询中使用。当我在 if 语句中使用输入日期来比较它时,问题就出现了: $[ the_date > 2013.01.01 ; 0.001; 0.002]

如果我重新定义以 float 而不是日期作为输入的函数,然后我尝试在查询中将价格作为输入,则会发生同样的情况:

 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

你知道为什么会这样吗?我尝试了一切。谢谢马可

最佳答案

您需要:

select give_dummy each date from tab where ...

或者:

give_dummy:{[the_date] :?[ the_date > 2013.01.01 ; 0.001 ; 0.002]; }
select give_dummy[date] from tab where ...

? 是条件向量。有关更多详细信息,请参见此处:http://code.kx.com/q4m3/10_Execution_Control/

关于kdb - 在 q 中独立调用或在查询内部调用时函数行为的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16811864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com