My guess is that it is because it is "out of context". Normally you would include the table alias context with the column, e.g. "WHERE SDO_UTIL.GETNUMELEM(tab.shape) = 1". I would suspect this might be the problem. You could try using the tablename.columnname, but that may not work either.
Thanks for the suggestion but nope that is not it. Turns out the table alias for all datapump actions is ku$.
Using this in the query parameter does not change the results. I edited my original question to add in the alias.