Я обнаружил странную проблему в q, вероятно, возможную ошибку. Я определил простую функцию, которая возвращает число с плавающей запятой, учитывая дату в качестве входных данных:
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
Вы хоть представляете, почему это происходит? Все перепробовала. Спасибо Марко