Discrete aggregations cannot be filtered because of a query limitation. The filter has to be part of a 'having' clause or part of a multi pass SQL. Tableau writes the results to a temp table, then the temp table is filtered. Most databases only support numeric comparisons in a 'having' clause, so it cannot be added there; and Tableau does not support true multi-pass SQL.
Therefore, the workaround is, as you found, making the calculation continuous. Another calculation that could be used is:
if [%growth]<>0 then 1 else 0 end
Hope this helps!