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
入力日付 (ID 関数) を返すように関数を単純化すると、クエリで機能します。日付を比較せずに浮動小数点数を返すように関数を単純化すると、クエリで機能します。入力日付を使用して 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
なぜこれが起こるのか分かりますか?私はすべてを試しました。ありがとうマルコ