First of all, please use [code][/code] tags around your code, to preserve formatting and to improve readability.
It usually also helps to give a sample of the input text, and the exact error messages you get from the commands.
Anyway, I can't say for sure, but after working with it for a bit, it looks to me like awk simply doesn't recognize conditional operators when they're stored in variables. Perhaps it has something to do with the way awk treats variable contents as regexes when used in tests, instead of as simple strings, or something.
After stripping your command above down to the essentials, the only easy way I could find around it was to use creative quoting, so the shell variable can be used directly in the statement.
Code:
sign=">"
test_shell=2000
$ awk -v test=$test_shell '{ if ($3 '"$sign"' test) {print}}' file.csv
Notice how I unquoted the $sign variable (and re-quoted it in double-quotes). This way it will be expanded before the expression is passed to awk. You could do the same thing with the test variable too, of course.
Finally, there's no point in using cat and a pipe when awk can read directly from the file.